本站提供简体中文版。切换到简体中文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این وب‌سایت به فارسی هم در دسترس است.مشاهده به فارسی

PixInsight 的 GPU 加速:CUDA 設定與效能實測

工具與硬體2021.12早期筆記

本文整理自 2021 至 2024 年間的筆記,部分工具、CUDA 版本與設定流程已有更新(尤其後期 PixInsight 已支援一鍵設定),閱讀時請留意時間背景。

自從去星、AI 降噪、AI 銳化這類神經網路程序陸續進入 PixInsight 的工作流程後,「要不要為修圖電腦加一張顯示卡」就成了很實際的問題。這篇整理我這幾年在 GPU 加速上的實測與設定經驗,包括為什麼要用 GPU、怎麼啟用、能省多少時間,以及各平台的差異。

為什麼需要 GPU 加速

現在 PixInsight 裡支援 GPU 加速的程序,主要是那些吃神經網路運算的:StarNet++、StarNet 2、StarXTerminator(SXT)、NoiseXTerminator(NXT)、BlurXTerminator(BXT)。這些程序如果只靠 CPU 跑,尤其是影像尺寸一大,等待時間會非常可觀。

一個很有感的例子是批次去星:用新式方法處理彗星時,需要在線性狀態下,把還沒疊圖的每一張彗星影像逐張去星。例如兩百多張的 900 萬畫素影像,用 RTX 3060 Laptop 版加速,一張只要 20 秒左右;如果純靠 CPU,那個總時間會讓你懷疑人生。

一旦用過 GPU 加速,大概就回不去了。

我第一次成功啟用 CUDA

2021 年底,在花了數小時測試不同版本的 NVIDIA CUDA、cuDNN、TensorFlow 之後,我終於成功用 GPU(NVIDIA RTX 3060)來協助去星:

  • StarXTerminator 僅需約 15 秒;
  • StarNet++ 不到 10 秒;

就能完成單張去星。跟純 CPU 相比,差距非常明顯。

首次以 RTX 3060 成功啟用 CUDA 加速去星的畫面

怎麼啟用:從手動設定到一鍵安裝

早年的做法:手動放置檔案

早期要啟用 GPU 加速,得自己下載對應版本的 CUDA、cuDNN、TensorFlow 等檔案並放到正確位置。這個過程門檻不低,而且只適用 Windows、且電腦裝有 PixInsight 與具備 CUDA 核心的 NVIDIA 顯示卡的使用者。AMD 顯卡(含內顯)使用者請直接略過,Linux 使用者則需自行對照參考。設定完成後,就能大幅提升 StarNet、StarNet++、SXT、NXT、BXT 的執行速度。

麻煩的是,每次更新 PixInsight,往往還得重新放置這些檔案,很容易忘記。

現行的做法:PI 內建一鍵設定

到了 2024 年初,情況大幅改善——現在只要在 PixInsight 中加入更新資料庫(repository),就能直接使用 GPU 加速,免除額外的安裝與設定。這是 XTerminator 系列作者 RC(Russell Croman)在 PixInsight 論壇提供的做法。當時這項功能只適用 Windows,Linux 版本還在開發中;至於 Mac 作業系統,則本來就不需要這類設定。

怎麼確認 GPU 真的有在運算

想知道去星或去噪時 GPU 有沒有出力,在 Windows 10/11 下:打開工作管理員,切到「GPU」頁面,選擇「CUDA」子頁面,如果看到 CUDA 核心出現使用率,就代表有用到 GPU(例如跑 SXT 時可看到 CUDA 核心衝到 87% 使用率);如果 CUDA 核心完全沒動作,那就是沒吃到 GPU。

在工作管理員的 CUDA 子頁面確認 GPU 使用率 GPU 處理流程示意圖 CUDA 基本架構示意圖

效能實測

高階 CPU vs 中低階 GPU

很多人會問:CPU 夠強是不是就不用顯示卡?我用消費級高階 CPU(AMD R9-7950X)對上消費級中低階顯卡(RTX 3060 12G)做了對照,軟體為 PI 1.8.9-1、SXT 2.05 AI 11 lite:

  • 第一組影像 M1(14.75MP):CPU 去星 1 分 45 秒;GPU 去星 10.2 秒。
  • 第二組影像 Webb NGC 3372(123MP):CPU 去星 12 分 31 秒;GPU 去星 1 分 05 秒。

可以看出兩個規律:影像尺寸越大,GPU 加速的效果越明顯;而且即使拿高階 CPU 對上中低階 GPU,CPU 至少都要花 GPU 十倍以上的時間才能完成相同工作。如果你的 CPU 不是高階型號,差距只會更大。因此,只要工作流程裡需要反覆使用 AI 程序,我非常建議至少入手一張中低階的 RTX 30 系列顯示卡。

高階 CPU 對中低階 GPU 的去星時間比較

光靠更新 CUDA 軟體,就能再快一倍

還有一個驚人的發現。大約一年多前我第一次在 RTX 3060 Laptop 筆電上啟用 CUDA 加速,一年多後在完全沒換任何運算硬體(筆電也沒法換)的情況下,只把相關軟體更新,用相同影像重測,速度竟然快了將近一倍。

以將 1.2 億像素影像去星為例(PI 1.8.9-1、SXT 2.05 AI 11 lite、RTX 3060 Laptop 6GB):

  • CUDA 設定一(CUDA 11.2.2、TensorFlow 2.6、cuDNN 8.2.1):約 2 分半鐘。
  • CUDA 設定二(CUDA 11.8、TensorFlow 2.9、cuDNN 8.7、ZLib DLL x64 1.2.3):僅 1 分 20 秒。

所以,早期安裝 CUDA 之後就沒再更新的朋友,記得更新一下 CUDA 軟體,可以參考上面的「設定二」組合,等於免費撿到一半的效能。

更新 CUDA 軟體前後的去星時間比較 不同 CUDA 版本的處理時間差異

桌機版 vs 筆電版顯卡

手上剛好有 RTX 3060 12G 與 RTX 3060 Laptop 6G 兩張卡,同樣軟體版本下去星時間:

  • RTX 3060 12G:1 分 4 秒;
  • RTX 3060 Laptop 6G:1 分 20 秒。

兩者晶片相同,差別只在記憶體容量與桌機/筆電版的功耗設計,因此去星時間相差不大。若論 CP 值,一台配備 NVIDIA 顯卡的電競筆電(當時價格約新台幣三萬元左右)算是相當划算的選擇。

桌機版與筆電版 RTX 3060 的去星時間比較

連老礦卡都有感

家裡一台約四年前組的舊電腦(AMD R5-3600),原本的顯卡(R9-270)已接近壽命尾聲。我在網路上收了張不到 3000 元的礦卡——NVIDIA GTX 1660s,上機測試全幅影像(約 6000 萬畫素)去星:

  • 純 CPU:5 分 40 秒;
  • GPU:51 秒;

時間相差約 6.6 倍。即使 1660s 的 CUDA 數只有一千四百多,節省的時間依然很顯著。只要你會反覆執行去星、AI 降噪、AI 銳化這類操作,用 GPU 加速就是很值得的投資。

以 GTX 1660s 進行 GPU 加速去星的時間比較

各平台的差異

不同作業系統與硬體,對 AI 程序能否使用 GPU 加速的支援並不一致。我整理過 Windows、Mac、Linux 三個平台的情形(部分 Mac 測試結果由一位同好提供):

  • Windows + NVIDIA:只要設定好,就能呼叫 CUDA 對 SXT、BXT、NXT、StarNet 全部進行 GPU 加速。
  • Apple Silicon 的 Mac(如 M1/M1 Ultra):BXT 與 NXT 不需任何設定就會自動呼叫 Metal 使用 GPU 加速;SXT 執行時只佔用部分 CPU 資源、沒吃到 GPU;至於 StarNet 2,必須改用官方網站上的實驗版(僅有命令列 CLI 模式),才能成功用 GPU 加速。
  • Intel 版的 Mac:StarNet 只能用 CPU;SXT、BXT、NXT 則可使用 GPU 加速,即使是 AMD 的 GPU 也一樣可行。

在 Apple Silicon 平台上,SXT 這類程序因為原生支援 GPU 加速,效能與「Windows + NVIDIA CUDA 加速」大致不相上下。至於 PC 上的 Linux 系統,一樣可以呼叫 GPU 來加速運算。

各平台 AI 程序能否使用 GPU 加速的測試結果

小結

回頭看這幾年的變化:GPU 加速從「要花數小時湊 CUDA 版本」的硬核設定,走到「PI 內建一鍵搞定」;能加速的程序越來越多,連幾百塊的老礦卡都能帶來數倍提速。如果你的工作流程重度依賴 AI 程序,一張中低階的 NVIDIA 顯示卡(或一台 Apple Silicon 的 Mac)幾乎是必備。