Grips-Chips
Die besten Grafikkarten für Stable Diffusion AI
Wer Stable Diffusion AI daheim nutzen möchte, braucht viel Rechenpower. Wir haben 20 Grafikkarten unter Windows und Linux ausprobiert und geben Auswahltipps.
So schöne Ergebnisse die Bilder-KI auch produzieren kann: Stable Diffusion hat ein kleines Problem. Sie ist nicht ganz stabil. Die erzeugten Bilder sehen anders aus, wenn man bei sonst gleichen Parametern lediglich die gewünschte Auflösung erhöht. Daher ist es leider nicht möglich, in niedrigen Auflösungen herumzuprobieren, bis das Ergebnis den eigenen Wünschen entspricht, und dann das Bild einfach nochmal über Nacht in hoher Auflösung berechnen zu lassen. Und mit hoher Auflösung sind hier bereits Bilder in Full HD gemeint, also mit 1920 × 1080 Bildpunkten.
Wer also schöne und zugleich hochauflösende Bilder erzeugen möchte, braucht starke Hardware und die jeweils dazu passenden Treiber, Software-Versionen und das optimale Betriebssystem.
Der Prozessor und der Hauptspeicher spielen für Stable Diffusion AI eine untergeordnete Rolle, die Berechnungen muss hauptsächlich die Grafikkarte stemmen. Üblicherweise gilt dann, dass zur optimalen Auslastung der Rechenwerke möglichst der komplette Datensatz in den lokalen Grafikspeicher passen muss. Bei Stable Diffusion ist das noch etwas restriktiver. Ist der Grafikspeicher zu klein und der Datensatz passt nicht hinein, bricht die Berechnung mit einer Fehlermeldung ab – oft erst ganz am Ende einer bis zu 20-minütigen Wartezeit.
Damit Ihnen dieses Frusterlebnis erspart bleibt, haben wir anhand dreier unterschiedlich anspruchsvoller KI-Bilder ausprobiert, mit welcher AMD- oder Nvidia-Grafikkarte Sie wie viel Zeit einplanen müssen und wie groß deren Speicherpolster am besten ist. Stable Diffusion steuert die jeweilige GPU über die Programmierschnittstelle Nvidia CUDA in Windows und Linux oder im Falle von AMDs Radeon per ROCm unter Linux an.
Dieser Artikel ist Teil einer Strecke zum Thema Stable Diffusion WebUI. Der Artikel auf Seite 54 erklärt die Installation inklusive Anleitung für Windows 11 und Ubuntu 22.04 LTS, Mac-User kommen ab Seite 58 auf ihre Kosten und ab Seite 60 geht es um das Prompt-Engineering, also wie man SD WebUI dazu bringt, das gewünschte Bild zu generieren.
Testereien
Die Benchmarks zu Stable Diffusion waren auch für uns Neuland und wir haben einige verschiedene Ansätze durchprobiert. Am Ende haben wir vier Referenzbilder ausgewählt, deren Auflösungen und Parameter gut zu Grafikkarten mit 4, 6, 8 und 12 GByte Grafikspeicher passen: Pinguine mit 1366 × 768 Pixeln, eine Glaskugel mit 1680 × 1024 Pixeln, Astronauten in 1920 × 1024 und eine fast quadratische Berglandschaft in 2048 × 1920. Die Bilder samt darin abgespeicherter Prompts haben wir unter ct.de/ypvp für Sie hinterlegt.
Die Benchmarks haben wir nach Windows 11 und Ubuntu 22.04 LTS unterteilt. Mit GeForce-Grafikkarten ab der rund sieben Jahre alten GTX 1060 mit 6 GByte liefen die Tests weitgehend unauffällig, sprich ohne besondere Startparameter für Stable Diffusion WebUI außer --autolaunch, der uns automatisch den Browser öffnete, sobald das WebUI gestartet war.
Sehr zu empfehlen ist allerdings der optionale Aufruf von --xformers, das beim ersten Einsatz automatisch aus dem Internet nachgeladen wird. Danach läuft SD WebUI aber auch vollkommen lokal, ohne Internetverbindung auf der eigenen Hardware. Xformers lädt automatisch die gleichnamige Toolbox von Facebookresearch nach, die auf besonders effiziente Nutzung des Speichers optimiert ist und etliche Optimierungen verwendet, die in PyTorch noch nicht enthalten sind. Am stärksten profitierten davon die GeForce-Serie RTX 4000, die in manchen Fällen nur ein Drittel der Zeit zum fertigen Bild benötigten. Leider funktioniert xformers aufgrund vieler CUDA-Funktionen nur auf GeForce-Karten.
Heiße Phase
GeForce-Karten werden durch die Berechnungen sehr gut ausgelastet, was sich im Test auch in hohen Temperaturen von Grafikchip und -speicher manifestierte. Der GDDR6X-RAM der GeForce RTX 3090 Founders Edition erreichte schon nach wenigen Minuten ähnlich wie beim Krypto-Mining Temperaturen von 106 Grad Celsius, die knapp unter der Drosselgrenze liegen. RTX-Karten der 4000er-Reihe oder die mit normalem GDDR6-RAM erhitzten sich viel weniger. Der Kühler unserer RTX 2080 Ti FE hatte Probleme, den Hot-Spot der GPU zu kühlen, sodass der Temperatursensor für diesen zeitweise 103 Grad erreichte.
Grafikkarten aus AMDs Radeon-RX-Reihe liefen leider nicht ganz so gut mit Stable Diffusion WebUI. Das liegt hauptsächlich daran, dass die nötige PyTorch-Programmbibliothek nicht für OpenCL oder HIP geschrieben ist, sondern primär für Nvidias hauseigene CUDA-Schnittstelle. Wir haben daher den von den SD-WebUI-Entwicklern empfohlenen Fork von Seunghoon Lee alias „lshqqytiger“ ausprobiert, der auf DirectML aufsetzt, der Machine-Learning-Komponente von DirectX. Doch hier schlägt ein Speicherbug zu, der selbst auf 16-GByte-Modellen wie der Radeon RX 6900 XT das 4-GByte-Bild abbricht und zu wenig Speicher bemängelt. Mit der Radeon RX 7900 XTX und ihren 24 GByte liefen dann immerhin die drei kleineren Bilder Pinguin (66 Sek.), Glaskugel (172 Sek.) und Astronauten (252 Sek.) durch, doch die Performance lag nur auf dem Niveau der eigentlich weitaus schwächeren GeForce RTX 3060. Radeon-Nutzer müssen hier auf Nacharbeit von AMD am Treiber oder den Entwicklern von SD WebUI hoffen.
Wir haben schließlich die RX-6000-Karten unter Ubuntu 22.04 LTS vermessen, wo wir eine auf AMDs ROCm-5.4.2-Schnittstelle angepasste Torch-Version installieren konnten – RX-7000-Karten fielen leider heraus, da sie erst ab ROCm 5.5 unterstützt werden.
Karten der RX-6000-Reihe muss man außerdem mit dem Parameter --no-half aufrufen, da sonst rein gar nichts geht. Das bremst die Rechenleistung und ist besonders ärgerlich, da diese Radeon-Karten eigentlich das FP16-Datenformat gut beherrschen, nur eben nicht in Verbindung mit dem zugrunde liegenden Torch respektive SD WebUI. Zusätzlich erhöht no-half auch den Speicherbedarf, das gilt auch für Nvidia-Karten.
No-half verlängert die Berechnungen allerdings schon gegenüber den Default-Werten auf knapp das Doppelte, von den optimierten xformers-Werten ganz zu schweigen: So braucht eine GeForce RTX 3060 Ti unter Windows 11 für das Pinguin-Bild (1368 × 768 Pixel) normalerweise 63 Sekunden, mit xformers nur 37, aber mit no-half-Parameter satte 125 Sekunden. Die Ubuntu-Werte wichen davon nur marginal ab.
Auf Radeon-Seite muss man für eine vergleichbare no-half-Zeit schon eine Radeon RX 6700 XT unter Ubuntu 22.04 LTS auffahren, die normalerweise deutlich schneller als diese GeForce ist.
Wo möglich, haben wir bei Speichermangel zusätzlich mit der Option --medvram experimentiert, die auf Kosten von etwas Rechengeschwindigkeit weniger Grafikspeicher belegt. Stichproben ergaben, dass eine GeForce RTX 2060 etwa 10 Prozent Geschwindigkeit verliert, was aber immer noch besser ist als ein Abbruch wegen Speichermangels. Die so erzielten Ergebnisse haben wir in der Tabelle mit einer Fußnote markiert.
Was will ich?
Das Ergebnis ist bei diesem Anwendungsfall mit dem aktuellen Stand von Treiber und übriger Software relativ eindeutig: Auf Geforce-Karten läuft außer der Werkseinstellung auch der xformers-Beschleuniger, der in einigen Fällen zusätzlich Speicher einspart. Damit kann man höher auflösende Bilder schneller erzeugen. Mit 8-GByte-Karten kann man bereits gut arbeiten, auch wenn eine günstige RTX 3050 vielleicht etwas schwach auf der Brust ist. Höhere Ansprüche erfüllen GeForce-Karten ab der RTX 2070 oder, wenn es etwas mehr Speicher sein soll, eine RTX 3060 mit 12 GByte Grafikspeicher. Wer nur in höchsten Auflösungen arbeiten und damit eventuell Geld verdienen möchte, für den lohnen sich wegen der schnelleren Iterationszeiten auch die teureren 4000er-Karten.
Unter Linux (Ubuntu 22.04 LTS) verweigerte bei RTX-4000-Karten die Kombination aus neuestem Treiber, aktueller CUDA-Version und von SB WebUI unterstützter PyTorch-Version jedoch den Dienst. Mit so einer Grafikkarte muss man entweder unter Windows 11 arbeiten oder abwarten. Letzteres gilt auch für AMD-Grafikkarten der neuesten Generation. Nahezu im Wochenrythmus tut sich was bei Treibern, Frameworks und Bibliotheken.
Besitzer von Radeon-RX-6000-Karten sollten sich auf längere Berechnungszeiten gefasst machen und auch die Speicherbelegung fällt höher aus als bei vergleichbaren Nvidia-Karten. Der medvram-Parameter ist in solchen Fällen Ihr Freund. Spaß macht Stable Diffusion auf den Radeon-Karten frühestens ab einem Modell mit 12 GByte Grafikspeicher wie der RX 6700 XT oder 6750 XT. Wer mit einer ansonsten empfehlenswerten 8-GByte-Karte arbeiten möchte, muss sich entweder mit niedriger Auflösung oder mit noch längeren Wartezeiten abfinden.
(csp@ct.de)
Download c’t-Referenzbilder: ct.de/ypvp