本站提供正體中文版。切換到正體中文本站提供简体中文版。切换到简体中文This site is available in English.View in Englishこのサイトには日本語版があります。日本語で表示이 사이트는 한국어로도 제공됩니다.한국어로 보기Diese Website ist auch auf Deutsch verfügbar.Auf Deutsch ansehenEste sitio web también está disponible en español.Ver en españolQuesto sito è disponibile anche in italiano.Visualizza in italianoCe site est également disponible en français.Afficher en françaisEste site também está disponível em português.Ver em portuguêsDeze website is ook beschikbaar in het Nederlands.In het Nederlands bekijkenЭтот сайт также доступен на русском языке.Смотреть на русскомयह वेबसाइट हिन्दी में भी उपलब्ध है।हिन्दी में देखेंهذا الموقع متاح أيضًا باللغة العربية.عرض بالعربيةSitus ini juga tersedia dalam bahasa Indonesia.Lihat dalam bahasa IndonesiaBu site Türkçe olarak da mevcut.Türkçe görüntüleTa strona jest dostępna także po polsku.Wyświetl po polskuTrang web này cũng có phiên bản tiếng Việt.Xem bằng tiếng Việtاین وب‌سایت به فارسی هم در دسترس است.مشاهده به فارسیЦей сайт також доступний українською.Переглянути українськоюTato stránka je k dispozici také v češtině.Zobrazit v češtiněEz az oldal magyarul is elérhető.Megtekintés magyarulเว็บไซต์นี้มีเวอร์ชันภาษาไทยดูเป็นภาษาไทย

Accelerare GPU în PixInsight: configurarea CUDA și teste reale de performanță

Instrumente și hardware2021.12Note mai vechi

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ă.

Ecranul de la prima activare cu succes a accelerării CUDA pentru eliminarea stelelor pe un RTX 3060

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.

Confirmarea gradului de utilizare a GPU-ului în subfila CUDA a Managerului de activități Schema fluxului de prelucrare pe GPU Schema arhitecturii de bază CUDA

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.

Comparație a timpului de eliminare a stelelor între un CPU de vârf și un GPU de gamă medie-joasă

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.

Comparație a timpului de eliminare a stelelor înainte și după actualizarea software-ului CUDA Diferența de timp de prelucrare între diferite versiuni de CUDA

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ă.

Comparație a timpului de eliminare a stelelor între RTX 3060 desktop și RTX 3060 pentru laptop

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ă.

Comparație a timpului de eliminare a stelelor cu accelerare GPU pe un GTX 1660s

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.

Rezultatele testelor privind posibilitatea de accelerare GPU a proceselor bazate pe AI pe fiecare platformă

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ă.