本站提供正體中文版。切換到正體中文本站提供简体中文版。切换到简体中文This site is available in English.View in Englishこのサイトには日本語版があります。日本語で表示이 사이트는 한국어로도 제공됩니다.한국어로 보기Este 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این وب‌سایت به فارسی هم در دسترس است.مشاهده به فارسی

GPU-Beschleunigung in PixInsight: CUDA-Einrichtung und Performance-Benchmarks

Werkzeuge & Hardware2021.12Frühe Notizen

Dieser Artikel ist aus Notizen der Jahre 2021 bis 2024 zusammengestellt; einige Tools, CUDA-Versionen und Einrichtungsabläufe wurden seitdem aktualisiert (insbesondere unterstützt PixInsight in seinen späteren Versionen mittlerweile eine Ein-Klick-Konfiguration), behalte beim Lesen also den zeitlichen Kontext im Auge.

Seit Prozesse auf Basis neuronaler Netze wie Sternentfernung, KI-Entrauschung und KI-Schärfung nach und nach Einzug in den PixInsight-Workflow gehalten haben, ist „Soll ich meinem Bearbeitungsrechner eine Grafikkarte spendieren?“ zu einer sehr praktischen Frage geworden. Dieser Artikel bündelt meine Benchmark- und Einrichtungserfahrungen mit GPU-Beschleunigung aus den letzten Jahren—unter anderem, warum man eine GPU will, wie man sie aktiviert, wie viel Zeit sie spart und wie sich die einzelnen Plattformen unterscheiden.

Warum du GPU-Beschleunigung brauchst

Die Prozesse in PixInsight, die derzeit GPU-Beschleunigung unterstützen, sind vor allem jene, die auf Berechnungen mit neuronalen Netzen setzen: StarNet++, StarNet 2, StarXTerminator (SXT), NoiseXTerminator (NXT) und BlurXTerminator (BXT). Lässt du diese Prozesse allein auf der CPU laufen, werden die Wartezeiten sehr beträchtlich, vor allem wenn die Bildgröße wächst.

Ein Beispiel, das es einem richtig vor Augen führt, ist die Sternentfernung im Stapelbetrieb: Wenn man Kometen mit der neueren Methode bearbeitet, muss man aus jedem noch nicht integrierten Kometen-Frame einzeln, im linearen Zustand, die Sterne entfernen. Bei über 200 Frames mit 9 Megapixel dauert das mit einer RTX 3060 Laptop-Version zur Beschleunigung nur rund 20 Sekunden pro Frame; verlässt du dich allein auf die CPU, lässt dich die Gesamtzeit an deinen Lebensentscheidungen zweifeln.

Hat man GPU-Beschleunigung einmal genutzt, gibt es im Grunde kein Zurück mehr.

Als ich CUDA zum ersten Mal erfolgreich aktivierte

Ende 2021, nachdem ich Stunden damit verbracht hatte, verschiedene Versionen von NVIDIA CUDA, cuDNN und TensorFlow zu testen, gelang es mir endlich, die GPU (NVIDIA RTX 3060) zur Unterstützung der Sternentfernung einzuspannen:

  • StarXTerminator brauchte nur etwa 15 Sekunden;
  • StarNet++ weniger als 10 Sekunden;

um die Sterne aus einem einzelnen Frame zu entfernen. Gegenüber der reinen CPU war der Unterschied dramatisch.

Der Bildschirm, auf dem die CUDA-Beschleunigung für die Sternentfernung zum ersten Mal erfolgreich auf einer RTX 3060 aktiviert wurde

Wie man sie aktiviert: von der manuellen Einrichtung zur Ein-Klick-Installation

Der frühere Weg: Dateien manuell ablegen

In der Anfangszeit bedeutete das Aktivieren der GPU-Beschleunigung, die passenden Versionen von CUDA, cuDNN, TensorFlow und so weiter selbst herunterzuladen und an den richtigen Stellen abzulegen. Die Einstiegshürde war nicht niedrig, und es galt nur für Nutzer unter Windows, die PixInsight installiert und eine NVIDIA-Grafikkarte mit CUDA-Kernen hatten. Nutzer von AMD-Grafikkarten (einschließlich integrierter Grafik) überspringen das getrost, und Linux-Nutzer müssen sich die Entsprechungen selbst zusammensuchen. Einmal eingerichtet, beschleunigte es StarNet, StarNet++, SXT, NXT und BXT enorm.

Das Ärgerliche war, dass man diese Dateien nach jedem Update von PixInsight oft neu ablegen musste, was leicht in Vergessenheit geriet.

Der aktuelle Weg: PIs integrierte Ein-Klick-Einrichtung

Anfang 2024 hatte sich die Lage dramatisch gebessert—jetzt fügst du in PixInsight einfach ein Update-Repository (Repository) hinzu und kannst die GPU-Beschleunigung direkt nutzen, ohne zusätzliche Installation oder Konfiguration. Das ist der Weg, den RC (Russell Croman), der Autor der XTerminator-Reihe, im PixInsight-Forum bereitstellt. Damals funktionierte diese Funktion nur unter Windows, die Linux-Version war noch in Entwicklung; und macOS brauchte diese Art von Einrichtung ohnehin nie.

Wie man bestätigt, dass die GPU wirklich die Arbeit macht

Willst du wissen, ob die GPU bei der Sternentfernung oder Entrauschung mit anpackt, gehst du unter Windows 10/11 so vor: Öffne den Task-Manager, wechsle zur Seite „GPU“ und wähle die Unterseite „CUDA“. Wenn bei den CUDA-Kernen eine Auslastung erscheint, wird die GPU genutzt (bei laufendem SXT siehst du zum Beispiel, wie die CUDA-Kerne auf 87 % Auslastung hochschnellen); rührt sich bei den CUDA-Kernen überhaupt nichts, dann wird die GPU nicht angezapft.

In der CUDA-Unterseite des Task-Managers die GPU-Auslastung bestätigen Schema des GPU-Verarbeitungsablaufs Schema der grundlegenden CUDA-Architektur

Performance-Benchmarks

High-End-CPU vs. Mittel- bis Low-End-GPU

Viele fragen: Wenn die CPU stark genug ist, braucht man dann überhaupt eine Grafikkarte? Ich habe eine High-End-CPU aus dem Consumer-Bereich (AMD R9-7950X) gegen eine Mittel- bis Low-End-Grafikkarte aus dem Consumer-Bereich (RTX 3060 12G) antreten lassen, mit PI 1.8.9-1 und SXT 2.05 AI 11 lite als Software:

  • Erstes Bild, M1 (14.75MP): CPU-Sternentfernung 1 Minute 45 Sekunden; GPU-Sternentfernung 10,2 Sekunden.
  • Zweites Bild, Webb NGC 3372 (123MP): CPU-Sternentfernung 12 Minuten 31 Sekunden; GPU-Sternentfernung 1 Minute 05 Sekunden.

Zwei Muster zeichnen sich ab: Je größer das Bild, desto ausgeprägter der Nutzen der GPU-Beschleunigung; und selbst wenn man eine High-End-CPU gegen eine Mittel- bis Low-End-GPU stellt, braucht die CPU für dieselbe Arbeit mindestens zehnmal so lange wie die GPU. Ist deine CPU kein High-End-Modell, wird der Abstand nur größer. Solange dein Workflow also das wiederholte Nutzen von KI-Prozessen erfordert, empfehle ich dir dringend, dir zumindest eine Mittel- bis Low-End-Karte der RTX-30-Serie zuzulegen.

Vergleich der Sternentfernungszeiten, High-End-CPU vs. Mittel- bis Low-End-GPU

Allein das Aktualisieren der CUDA-Software kann die Geschwindigkeit fast verdoppeln

Hier noch eine erstaunliche Entdeckung. Vor gut einem Jahr aktivierte ich zum ersten Mal die CUDA-Beschleunigung auf meinem RTX 3060 Laptop-Notebook, und gut ein Jahr später—ohne irgendeine Rechen-Hardware ausgetauscht zu haben (das Notebook lässt sich ohnehin nicht aufrüsten)—maß ich mit demselben Bild erneut, nachdem ich lediglich die betreffende Software aktualisiert hatte, und die Geschwindigkeit hatte sich beinahe verdoppelt.

Am Beispiel der Sternentfernung aus einem 120-Megapixel-Bild (PI 1.8.9-1, SXT 2.05 AI 11 lite, RTX 3060 Laptop 6GB):

  • CUDA-Setup eins (CUDA 11.2.2, TensorFlow 2.6, cuDNN 8.2.1): etwa zweieinhalb Minuten.
  • CUDA-Setup zwei (CUDA 11.8, TensorFlow 2.9, cuDNN 8.7, ZLib DLL x64 1.2.3): nur 1 Minute 20 Sekunden.

Wer CUDA also früh installiert und seither nicht mehr aktualisiert hat, sollte nicht vergessen, seine CUDA-Software zu aktualisieren. Du kannst dich an „Setup zwei“ oben orientieren—das ist, als würdest du die halbe Leistung geschenkt bekommen.

Vergleich der Sternentfernungszeiten vor und nach dem Aktualisieren der CUDA-Software Der Unterschied in der Verarbeitungszeit zwischen verschiedenen CUDA-Versionen

Desktop- vs. Laptop-Grafikkarte

Ich hatte zufällig sowohl eine RTX 3060 12G als auch eine RTX 3060 Laptop 6G zur Hand. Die Sternentfernungszeiten bei gleicher Softwareversion:

  • RTX 3060 12G: 1 Minute 4 Sekunden;
  • RTX 3060 Laptop 6G: 1 Minute 20 Sekunden.

Beide nutzen denselben Chip; die einzigen Unterschiede sind die Speicherkapazität und das Leistungsaufnahme-Design der Desktop- gegenüber der Laptop-Version, daher liegen die Sternentfernungszeiten nah beieinander. Was das Preis-Leistungs-Verhältnis angeht, ist ein Gaming-Laptop mit NVIDIA-Karte (damals zu einem Preis von rund 30.000 Taiwan-Dollar) eine ziemlich lohnende Wahl.

Vergleich der Sternentfernungszeiten, Desktop- vs. Laptop-RTX 3060

Selbst eine alte Mining-Karte macht sich bemerkbar

Zu Hause habe ich einen alten Rechner, vor etwa vier Jahren zusammengebaut (AMD R5-3600), dessen ursprüngliche Grafikkarte (R9-270) sich dem Ende ihrer Lebensdauer näherte. Ich habe im Netz eine Mining-Karte für unter 3.000 Taiwan-Dollar geschossen—eine NVIDIA GTX 1660s—und damit die Sternentfernung an einem Vollformat-Bild (etwa 60 Megapixel) getestet:

  • Nur CPU: 5 Minuten 40 Sekunden;
  • GPU: 51 Sekunden;

ein Unterschied von etwa dem 6,6-Fachen. Auch wenn die 1660s nur etwas über 1.400 CUDA-Kerne hat, ist die eingesparte Zeit dennoch erheblich. Solange du Operationen wie Sternentfernung, KI-Entrauschung und KI-Schärfung wiederholt ausführst, ist GPU-Beschleunigung eine lohnende Investition.

Vergleich der Sternentfernungszeiten mit GPU-Beschleunigung auf einer GTX 1660s

Wie sich die Plattformen unterscheiden

Ob KI-Prozesse GPU-Beschleunigung nutzen können, wird über Betriebssysteme und Hardware hinweg nicht einheitlich unterstützt. Ich habe die Situation für die drei Plattformen Windows, Mac und Linux zusammengetragen (einige Mac-Testergebnisse stammen von einem Mitstreiter):

  • Windows + NVIDIA: Ist es einmal eingerichtet, kannst du CUDA aufrufen, um SXT, BXT, NXT und StarNet allesamt per GPU zu beschleunigen.
  • Apple-Silicon-Macs (etwa M1 / M1 Ultra): BXT und NXT rufen ohne jede Einrichtung automatisch Metal für die GPU-Beschleunigung auf; SXT nutzt im Betrieb nur einen Teil der CPU-Ressourcen und zapft die GPU nicht an; und bei StarNet 2 musst du auf die experimentelle Version auf der offiziellen Website umsteigen (nur im Kommandozeilen-CLI-Modus), um die GPU-Beschleunigung erfolgreich zu nutzen.
  • Intel-Macs: StarNet kann nur die CPU nutzen; SXT, BXT und NXT können GPU-Beschleunigung nutzen, und das funktioniert sogar mit einer AMD-GPU.

Auf der Apple-Silicon-Plattform unterstützen Prozesse wie SXT die GPU-Beschleunigung nativ, sodass ihre Leistung ungefähr mit „Windows + NVIDIA-CUDA-Beschleunigung“ gleichauf liegt. Und was Linux auf einem PC betrifft, kann auch dieses die GPU aufrufen, um die Berechnung zu beschleunigen.

Testergebnisse dazu, ob KI-Prozesse auf den einzelnen Plattformen GPU-Beschleunigung nutzen können

Fazit

Blickt man auf die Veränderungen dieser letzten Jahre zurück: Die GPU-Beschleunigung hat sich von einer Hardcore-Einrichtung, bei der „man Stunden damit verbringt, CUDA-Versionen aufeinander abzustimmen“, zu „PI erledigt es integriert mit einem Klick“ entwickelt; immer mehr Prozesse lassen sich beschleunigen, und selbst eine spottbillige alte Mining-Karte kann ein Mehrfaches an Geschwindigkeit bringen. Wenn dein Workflow stark auf KI-Prozesse setzt, ist eine Mittel- bis Low-End-NVIDIA-Grafikkarte (oder ein Apple-Silicon-Mac) so gut wie unverzichtbar.