本站提供正體中文版。切換到正體中文本站提供简体中文版。切换到简体中文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 magyarulAcest site este disponibil și în limba română.Vizualizare în românăเว็บไซต์นี้มีเวอร์ชันภาษาไทยดูเป็นภาษาไทย

Прискорення GPU в PixInsight: налаштування CUDA та реальні тести продуктивності

Інструменти та обладнання2021.12Ранні нотатки

Ця стаття складена на основі нотаток за 2021–2024 роки; частина інструментів, версій CUDA та процесів налаштування відтоді оновилася (зокрема, пізніші версії PixInsight вже підтримують налаштування в один клік), тож під час читання враховуйте часовий контекст.

Відколи нейромережеві процеси на кшталт видалення зір, зменшення шуму за допомогою ШІ та підвищення різкості за допомогою ШІ один за одним почали входити в робочий процес PixInsight, питання «чи варто додати відеокарту до комп’ютера для обробки» стало дуже практичним. У цій статті я зібрав свій досвід останніх кількох років у тестуванні й налаштуванні прискорення GPU: навіщо потрібен GPU, як його увімкнути, скільки часу це заощаджує, а також чим відрізняються платформи.

Чому потрібне прискорення GPU

Процеси, які зараз у PixInsight підтримують прискорення GPU, — це переважно ті, що потребують інтенсивних обчислень нейронних мереж: StarNet++, StarNet 2, StarXTerminator (SXT), NoiseXTerminator (NXT), BlurXTerminator (BXT). Якщо ці процеси виконувати лише на CPU, особливо коли розмір зображення великий, час очікування стає дуже відчутним.

Дуже наочний приклад — пакетне видалення зір: під час обробки комет новим методом потрібно в лінійному стані видаляти зорі з кожного ще не інтегрованого кадру комети окремо. Наприклад, для понад 200 кадрів по 9 мегапікселів із прискоренням на RTX 3060 Laptop на один кадр іде близько 20 с; якщо покладатися лише на CPU, загальний час змусить вас засумніватися у власних життєвих рішеннях.

Варто один раз скористатися прискоренням GPU — і назад, мабуть, уже не повернетеся.

Як я вперше успішно увімкнув CUDA

Наприкінці 2021 року, витративши кілька годин на тестування різних версій NVIDIA CUDA, cuDNN і TensorFlow, я нарешті зумів задіяти GPU (NVIDIA RTX 3060) для допомоги у видаленні зір:

  • StarXTerminator — лише близько 15 с;
  • StarNet++ — менш ніж 10 с;

— і саме за такий час завершувалося видалення зір з одного кадру. Порівняно з роботою лише на CPU різниця була дуже помітною.

Екран першого успішного увімкнення прискорення CUDA для видалення зір на RTX 3060

Як увімкнути: від ручного налаштування до встановлення в один клік

Ранній спосіб: ручне розміщення файлів

На ранньому етапі, щоб увімкнути прискорення GPU, доводилося самостійно завантажувати відповідні версії файлів CUDA, cuDNN, TensorFlow тощо і розміщувати їх у потрібних місцях. Поріг входу в цей процес був не низьким, і, крім того, це стосувалося тільки користувачів Windows, у яких встановлено PixInsight і є відеокарта NVIDIA з ядрами CUDA. Користувачам відеокарт AMD (зокрема інтегрованої графіки) варто одразу пропустити цей розділ, а користувачам Linux доведеться самостійно звірятися з відповідними аналогами. Після завершення налаштування це значно підвищувало швидкість роботи StarNet, StarNet++, SXT, NXT, BXT.

Незручність полягала в тому, що з кожним оновленням PixInsight ці файли часто доводилося розміщувати заново, а про це було легко забути.

Теперішній спосіб: вбудоване налаштування PI в один клік

На початку 2024 року ситуація значно покращилася — тепер достатньо додати в PixInsight репозиторій оновлень (repository), щоб одразу користуватися прискоренням GPU без додаткового встановлення й налаштування. Це спосіб, який RC (Рассел Кроман, Russell Croman), автор серії XTerminator, запропонував на форумі PixInsight. На той момент ця функція працювала лише у Windows, версія для Linux ще розроблялася; що ж до операційної системи Mac, там подібне налаштування взагалі не було потрібне.

Як переконатися, що GPU дійсно виконує обчислення

Щоб дізнатися, чи справді працює GPU під час видалення зір або зменшення шуму, у Windows 10/11 зробіть так: відкрийте Диспетчер завдань, перейдіть на вкладку «GPU» і виберіть підрозділ «CUDA»; якщо бачите, що в ядер CUDA з’явилося завантаження, це означає, що GPU використовується (наприклад, під час запуску SXT можна побачити, як завантаження ядер CUDA підскакує до 87%); якщо ядра CUDA взагалі не показують активності, значить, GPU не задіяний.

Перевірка завантаження GPU на вкладці CUDA в Диспетчері завдань Схема процесу обробки на GPU Схема базової архітектури CUDA

Тести продуктивності

Високопродуктивний CPU проти GPU середнього-низького рівня

Багато хто запитує: якщо CPU достатньо потужний, чи потрібна взагалі відеокарта? Я порівняв споживчий високопродуктивний CPU (AMD R9-7950X) зі споживчою відеокартою середнього-низького рівня (RTX 3060 12G), використовуючи програмне забезпечення PI 1.8.9-1, SXT 2.05 AI 11 lite:

  • Перше зображення, M1 (14,75 Мп): видалення зір на CPU — 1 хв 45 с; на GPU — 10,2 с.
  • Друге зображення, Webb NGC 3372 (123 Мп): видалення зір на CPU — 12 хв 31 с; на GPU — 1 хв 05 с.

Звідси видно дві закономірності: що більший розмір зображення, то помітніший ефект від прискорення GPU; і навіть якщо зіставити високопродуктивний CPU з GPU середнього-низького рівня, CPU потрібно щонайменше в десять разів більше часу, ніж GPU, щоб виконати ту саму роботу. Якщо ваш CPU не є топовою моделлю, розрив буде лише більшим. Тому, якщо у вашому робочому процесі доводиться постійно використовувати процеси ШІ, я дуже раджу придбати хоча б одну відеокарту середнього-низького рівня серії RTX 30.

Порівняння часу видалення зір: високопродуктивний CPU проти GPU середнього-низького рівня

Саме оновлення програмного забезпечення CUDA здатне прискорити роботу майже вдвічі

Є ще одне вражаюче відкриття. Трохи більше року тому я вперше увімкнув прискорення CUDA на ноутбуці з RTX 3060 Laptop, а трохи більше ніж через рік, зовсім не змінюючи жодного обчислювального обладнання (ноутбук і так не поміняти), просто оновивши відповідне програмне забезпечення, я повторно виміряв на тому самому зображенні — і швидкість зросла майже вдвічі.

Наприклад, видалення зір із зображення на 120 мегапікселів (PI 1.8.9-1, SXT 2.05 AI 11 lite, RTX 3060 Laptop 6GB):

  • Конфігурація CUDA 1 (CUDA 11.2.2, TensorFlow 2.6, cuDNN 8.2.1): близько 2,5 хв.
  • Конфігурація CUDA 2 (CUDA 11.8, TensorFlow 2.9, cuDNN 8.7, ZLib DLL x64 1.2.3): лише 1 хв 20 с.

Тож якщо ви встановили CUDA свого часу й відтоді жодного разу не оновлювали, не забудьте оновити програмне забезпечення CUDA — можна орієнтуватися на «конфігурацію 2» вище, і це рівнозначно тому, щоб безкоштовно отримати половину продуктивності.

Порівняння часу видалення зір до і після оновлення програмного забезпечення CUDA Різниця в часі обробки між різними версіями CUDA

Настільна відеокарта проти ноутбучної

У мене якраз опинилися дві карти — RTX 3060 12G і RTX 3060 Laptop 6G. Час видалення зір за однакової версії програмного забезпечення:

  • RTX 3060 12G: 1 хв 4 с;
  • RTX 3060 Laptop 6G: 1 хв 20 с.

Обидві карти мають однаковий чіп, різниця лише в обсязі пам’яті та в схемі енергоспоживання настільної/ноутбучної версії, тому час видалення зір відрізняється небагато. Якщо говорити про співвідношення ціна/якість, ігровий ноутбук із відеокартою NVIDIA (на той момент за ціною близько 30000 нових тайванських доларів) можна вважати досить вигідним вибором.

Порівняння часу видалення зір: настільна проти ноутбучної версії RTX 3060

Навіть стара майнінг-карта відчутно допомагає

Удома в мене є старий комп’ютер, зібраний близько чотирьох років тому (AMD R5-3600); його початкова відеокарта (R9-270) уже наближалася до кінця терміну служби. Я придбав в інтернеті майнінг-карту менш ніж за 3000 нових тайванських доларів — NVIDIA GTX 1660s — і протестував на ній видалення зір із повнокадрового зображення (близько 60 мегапікселів):

  • лише CPU: 5 хв 40 с;
  • GPU: 51 с;

— різниця в часі становить близько 6,6 раза. Навіть попри те, що в 1660s лише трохи більше 1400 ядер CUDA, заощаджений час усе одно дуже помітний. Якщо ви регулярно виконуєте такі операції, як видалення зір, зменшення шуму за допомогою ШІ та підвищення різкості за допомогою ШІ, прискорення GPU — це інвестиція, яка себе виправдовує.

Порівняння часу видалення зір із прискоренням GPU на GTX 1660s

Відмінності між платформами

Підтримка можливості використання прискорення GPU процесами ШІ неоднакова залежно від операційної системи й обладнання. Я узагальнив ситуацію на трьох платформах — Windows, Mac і Linux (частину результатів тестування на Mac надав один із однодумців):

  • Windows + NVIDIA: достатньо налаштувати — і можна викликати CUDA, щоб задіяти прискорення GPU для всіх — SXT, BXT, NXT і StarNet.
  • Mac на Apple Silicon (наприклад, M1 / M1 Ultra): BXT і NXT без жодного налаштування автоматично викликають Metal для використання прискорення GPU; SXT під час виконання займає лише частину ресурсів CPU й не використовує GPU; щодо StarNet 2 — потрібно перейти на експериментальну версію з офіційного сайту (доступний лише режим командного рядка CLI), щоб успішно скористатися прискоренням GPU.
  • Mac на Intel: StarNet може використовувати лише CPU; SXT, BXT, NXT можуть використовувати прискорення GPU, і це працює навіть із GPU від AMD.

На платформі Apple Silicon такі процеси, як SXT, від початку підтримують прискорення GPU, тому їхня продуктивність приблизно на одному рівні з «Windows + прискорення CUDA від NVIDIA». Що ж до системи Linux на ПК, вона теж може викликати GPU для прискорення обчислень.

Результати тестів можливості використання прискорення GPU процесами ШІ на кожній платформі

Підсумок

Озираючись на зміни цих кількох років: прискорення GPU пройшло шлях від хардкорного налаштування, де «доводилося витрачати години на підбір версій CUDA», до того, що «PI вирішує все вбудованим способом в один клік»; процесів, які можна прискорити, стає дедалі більше, і навіть стара майнінг-карта за кілька сотень нових тайванських доларів здатна дати кількаразове прискорення. Якщо ваш робочий процес сильно залежить від процесів ШІ, відеокарта NVIDIA середнього-низького рівня (або Mac на Apple Silicon) — це майже обов’язковий атрибут.