Accelerare GPU în PixInsight: configurarea CUDA și teste reale de performanță
Acest articol este alcătuit din notițe realizate între 2021 și 2024; unele instrumente, versiuni de CUDA și proceduri de configurare au fost între timp actualizate (în special versiunile mai recente de PixInsight acceptă deja configurarea cu un singur clic), așa că este bine să se țină cont de acest context temporal la lectură.
De când procese bazate pe rețele neuronale, precum eliminarea stelelor, reducerea zgomotului cu AI și ascuțirea cu AI, au intrat treptat în fluxul de lucru din PixInsight, întrebarea „merită sau nu adăugată o placă video la calculatorul de prelucrare?” a devenit una foarte practică. Acest articol adună experiența mea din ultimii ani, atât testele practice, cât și configurările legate de accelerarea GPU: de ce merită folosit un GPU, cum se activează, cât timp se economisește și care sunt diferențele dintre platforme.
De ce este nevoie de accelerare GPU
Procesele din PixInsight care beneficiază în prezent de accelerare GPU sunt în principal cele care depind intens de calcule bazate pe rețele neuronale: StarNet++, StarNet 2, StarXTerminator (SXT), NoiseXTerminator (NXT) și BlurXTerminator (BXT). Dacă aceste procese rulează doar pe CPU, mai ales atunci când dimensiunea imaginii crește, timpul de așteptare devine considerabil.
Un exemplu foarte concret este eliminarea stelelor în loturi: la prelucrarea cometelor prin metoda nouă, este necesar ca fiecare cadru al cometei care nu a trecut încă prin stacking să fie curățat de stele pe rând, în stare liniară. De exemplu, pentru peste 200 de cadre de 9 milioane de pixeli, accelerate cu un RTX 3060 Laptop, fiecare cadru durează doar aproximativ 20 de secunde; dacă se lucrează doar pe CPU, un timp total de genul acesta ajunge să pună sub semnul întrebării toate deciziile de viață.
Odată ce cineva se obișnuiește cu accelerarea GPU, practic nu mai există cale de întoarcere.
Prima dată când am reușit să activez CUDA
La sfârșitul anului 2021, după ce am petrecut ore întregi testând diferite versiuni de NVIDIA CUDA, cuDNN și TensorFlow, am reușit în sfârșit să folosesc GPU-ul (NVIDIA RTX 3060) pentru a ajuta la eliminarea stelelor:
- StarXTerminator avea nevoie de doar aproximativ 15 secunde;
- StarNet++, de mai puțin de 10 secunde;
pentru a finaliza eliminarea stelelor dintr-un singur cadru. Față de varianta doar pe CPU, diferența era foarte evidentă.

Cum se activează: de la configurarea manuală la instalarea cu un singur clic
Metoda de altădată: plasarea manuală a fișierelor
La început, activarea accelerării GPU însemna descărcarea manuală a fișierelor CUDA, cuDNN, TensorFlow etc., în versiunile corespunzătoare, și plasarea lor în locația corectă. Acest proces nu era deloc simplu și, în plus, se aplica doar utilizatorilor de Windows care aveau PixInsight instalat și o placă video NVIDIA cu nuclee CUDA. Utilizatorii de plăci video AMD (inclusiv grafica integrată) puteau trece direct peste acest pas, iar utilizatorii de Linux trebuiau să găsească singuri echivalentele. După finalizarea configurării, viteza de execuție a StarNet, StarNet++, SXT, NXT și BXT creștea semnificativ.
Partea neplăcută era că, la fiecare actualizare a PixInsight, aceste fișiere trebuiau adesea reamplasate, lucru ușor de uitat.
Metoda actuală: configurarea integrată cu un singur clic din PI
La începutul lui 2024, situația s-a îmbunătățit considerabil – acum este suficient să se adauge un depozit de actualizări (repository) în PixInsight pentru a putea folosi direct accelerarea GPU, fără nicio instalare sau configurare suplimentară. Aceasta este metoda oferită pe forumul PixInsight de RC (Russell Croman), autorul seriei XTerminator. La momentul respectiv, această funcție era disponibilă doar pe Windows, versiunea pentru Linux fiind încă în dezvoltare; cât despre macOS, acesta nu a avut niciodată nevoie de o astfel de configurare.
Cum se verifică dacă GPU-ul chiar face calculele
Pentru a afla dacă GPU-ul chiar depune efort în timpul eliminării stelelor sau reducerii zgomotului, în Windows 10/11: se deschide Managerul de activități, se trece la fila „GPU”, apoi se selectează subfila „CUDA”. Dacă nucleele CUDA arată un grad de utilizare, înseamnă că GPU-ul este folosit (de exemplu, la rularea SXT se pot vedea nucleele CUDA urcând la o utilizare de 87%); dacă nucleele CUDA nu arată nicio activitate, atunci GPU-ul nu este folosit.

Teste reale de performanță
CPU de vârf vs. GPU de gamă medie-joasă
Mulți întreabă: dacă CPU-ul este suficient de puternic, mai este nevoie de placă video? Am comparat un CPU de vârf pentru consumatori (AMD R9-7950X) cu o placă video de gamă medie-joasă pentru consumatori (RTX 3060 12G), folosind PI 1.8.9-1 și SXT 2.05 AI 11 lite:
- Primul set de imagini, M1 (14,75 MP): eliminarea stelelor pe CPU: 1 minut și 45 de secunde; pe GPU: 10,2 secunde.
- Al doilea set de imagini, Webb NGC 3372 (123 MP): eliminarea stelelor pe CPU: 12 minute și 31 de secunde; pe GPU: 1 minut și 5 secunde.
Se pot observa două tipare: cu cât dimensiunea imaginii este mai mare, cu atât efectul accelerării GPU este mai evident; și, chiar și atunci când un CPU de vârf este pus față în față cu un GPU de gamă medie-joasă, CPU-ului îi ia de cel puțin zece ori mai mult timp decât GPU-ului pentru a termina aceeași sarcină. Dacă CPU-ul folosit nu este un model de vârf, diferența devine și mai mare. De aceea, dacă fluxul de lucru necesită folosirea repetată a proceselor bazate pe AI, recomand cu tărie să se achiziționeze cel puțin o placă video de gamă medie-joasă din seria RTX 30.

Doar prin actualizarea software-ului CUDA, viteza aproape se dublează
Mai este o descoperire uimitoare. Cu puțin peste un an în urmă am activat pentru prima dată accelerarea CUDA pe laptopul meu cu placă video RTX 3060 Laptop, iar la peste un an distanță, fără să schimb deloc componentele hardware de calcul (nici nu se poate schimba ceva la un laptop), am actualizat doar software-ul aferent și am retestat cu aceleași imagini, iar viteza s-a dovedit, surprinzător, aproape dublă.
Ca exemplu, eliminarea stelelor dintr-o imagine de 120 de milioane de pixeli (PI 1.8.9-1, SXT 2.05 AI 11 lite, RTX 3060 Laptop 6GB):
- Configurația CUDA 1 (CUDA 11.2.2, TensorFlow 2.6, cuDNN 8.2.1): aproximativ 2,5 minute.
- Configurația CUDA 2 (CUDA 11.8, TensorFlow 2.9, cuDNN 8.7, ZLib DLL x64 1.2.3): doar 1 minut și 20 de secunde.
Așadar, cine a instalat CUDA cu mult timp în urmă și nu l-a mai actualizat de atunci ar trebui să își actualizeze software-ul CUDA; se poate urma combinația „Configurația 2” de mai sus, echivalentul unei jumătăți de performanță obținute gratuit.

Placă video desktop vs. placă video pentru laptop
Am avut la îndemână atât un RTX 3060 12G, cât și un RTX 3060 Laptop 6G; timpul de eliminare a stelelor, cu aceeași versiune de software:
- RTX 3060 12G: 1 minut și 4 secunde;
- RTX 3060 Laptop 6G: 1 minut și 20 de secunde.
Cele două au același chip, diferența constând doar în capacitatea de memorie și în proiectarea consumului energetic al variantei desktop față de cea pentru laptop, motiv pentru care timpul de eliminare a stelelor nu diferă mult. În privința raportului calitate-preț, un laptop de gaming echipat cu placă video NVIDIA (la momentul respectiv, cu un preț de aproximativ NT$30.000) reprezintă o alegere destul de avantajoasă.

Chiar și o placă de mining veche face diferența
Acasă am un calculator vechi, asamblat acum vreo patru ani (AMD R5-3600), a cărui placă video originală (R9-270) era aproape de sfârșitul duratei de viață. Am cumpărat online, cu mai puțin de NT$3.000, o placă de mining – NVIDIA GTX 1660s – și am testat pe ea eliminarea stelelor dintr-o imagine full-frame (aproximativ 60 de milioane de pixeli):
- doar CPU: 5 minute și 40 de secunde;
- GPU: 51 de secunde;
Diferența de timp este de aproximativ 6,6 ori. Deși 1660s are doar puțin peste 1.400 de nuclee CUDA, timpul economisit rămâne semnificativ. Dacă un flux de lucru implică rularea repetată a unor operații precum eliminarea stelelor, reducerea zgomotului cu AI și ascuțirea cu AI, accelerarea GPU este o investiție cu adevărat rentabilă.

Diferențele dintre platforme
Suportul pentru accelerarea GPU la procesele bazate pe AI nu este uniform între diferite sisteme de operare și componente hardware. Am strâns situația de pe cele trei platforme, Windows, Mac și Linux (o parte din rezultatele testelor pe Mac au fost furnizate de un coleg pasionat de domeniu):
- Windows + NVIDIA: odată configurat, se poate apela CUDA pentru a accelera prin GPU toate cele patru: SXT, BXT, NXT și StarNet.
- Mac cu Apple Silicon (de exemplu M1 / M1 Ultra): BXT și NXT apelează automat Metal pentru accelerare GPU, fără nicio configurare; SXT ocupă la rulare doar o parte din resursele CPU-ului și nu folosește GPU-ul; în ceea ce privește StarNet 2, este necesar să se folosească versiunea experimentală de pe site-ul oficial (disponibilă doar în modul CLI, linie de comandă) pentru a reuși să folosească accelerarea GPU.
- Mac cu procesor Intel: StarNet poate folosi doar CPU-ul; SXT, BXT și NXT pot însă folosi accelerarea GPU, iar acest lucru funcționează chiar și cu un GPU AMD.
Pe platforma Apple Silicon, procese precum SXT beneficiază de suport nativ pentru accelerarea GPU, astfel încât performanța lor este, în linii mari, comparabilă cu cea a combinației „Windows + accelerare NVIDIA CUDA”. Cât despre sistemul Linux de pe PC, și acesta poate apela GPU-ul pentru a accelera calculele.

Concluzie
Privind în urmă la schimbările din ultimii ani: accelerarea GPU a trecut de la o configurare complicată, în care „trebuiau petrecute ore întregi pentru a potrivi versiunea de CUDA”, la situația în care „PI rezolvă totul integrat, cu un singur clic”; tot mai multe procese pot fi accelerate, iar chiar și o placă de mining veche, de câteva sute de dolari noi taiwanezi, poate aduce o creștere de viteză de câteva ori. Dacă fluxul de lucru al cuiva se bazează intens pe procese bazate pe AI, o placă video NVIDIA de gamă medie-joasă (sau un Mac cu Apple Silicon) este aproape indispensabilă.