本站提供正體中文版。切換到正體中文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 秒。

两者芯片相同,差别只在显存容量与台式机/笔记本电脑版的功耗设计,因此去星时间相差不大。若论 性价比,一台配备 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)几乎是必备。