ControlNet mit Stable-Diffusion. LOKAL AUF AMD

Intro⌗
Ich habe dem Youtube-Channel c’t 3003 schon wirklich viele Ideen zu verdanken. Die aktuellste Danksagung geht dabei für das neueste Video über AI raus, genauer: Dein Gekritzel in 🌈 wunderschön ⭐, in dem es darum geht, wie man mithilfe der Web-UI von AUTOMATIC11111 stable-diffusion mit ControlNet aufbohrt.
Im Vergleich zu meiner Anleitung zur Ausnutzung von Google-Colab, beschränke ich mich hier auf die Informationen, die nicht im Video zu finden sind und dazu geführt haben, dass ich endlich mit meiner AMD-Grafikkarte AI-Sachen machen kann!
Über AMD-Grafikkarten und ROCm⌗
Ich verfolge ja schon seit einer Weile sporadisch den Entwicklungsfortschritt von ROCm, kurz für “Radeon Open Compute”.
Und naja, was soll ich sagen, der Pull-Request, welcher Support für den Grafikchip gfx1031
hinzufügen sollte (sage und schreibe eine Million Zeilen) wurde vor kurzem einfach abgelehnt.2 Warum das in meinem Fall wichtig ist? Naja, dieser Chip steckt in meiner Grafikkarte, einer RX 6700XT, und die wird (auch stand jetzt) nicht geradeheraus von ROCm unterstützt.
Ich hatte mich davon vorerst nicht beirren lassen und vor ein paar Monaten versucht, die ROCm-Bibliotheken einfach kurzerhand mit ein paar Compiler-Flags (export AMDGPU_TARGETS="gfx1031"
) per Hand zusammenzubasteln. (Zugegebenermaßen natürlich mithilfe des Arch User Repository.3) Es hat nicht funktioniert. Und rückblickend tut es mir leid, meiner CPU die Kompilierung von rocm-llvm
und co. angetan zu haben.
How to: sussy gfx1030-Impostor 😉⌗
Der clou ist jetzt, einfach den Binaries die mittlerweile in den Arch-community-repos zu finden sind4 vorzugaukeln, dass man eine kompatible Grafikkarte besitzt. Dafür reicht es aus, im eigenen environment eine einzelne Variable zu setzen:
$ export HSA_OVERRIDE_GFX_VERSION=10.3.0
Pros hauen das einfach gleich ins global environment:
$ echo "HSA_OVERRIDE_GFX_VERSION=10.3.0" >> /etc/environment
Diesen Trick können laut AMD-Mitarbeiter cgmb Besitzer von (Obacht, Regex!) gfx103[1-5]
-Chips anwenden.2
Schritt für Schritt in die WebUI⌗
Damit ist das eigene System vorbereitet und es bleibt nurnoch das Guide von AUTOMATIC11111 abzuarbeiten. Hier die nötigen Schritte für alle, die Docker für Bloatware halten und alles möglichst nicht virtualisieren wollen:5
-> Pytorch und Torchvision installieren:
$ pacman -Syu python-pytorch-opt-rocm
$ paru -Syu python-torchvision-rocm
-> stable-diffusion-webui Repository klonen:
$ git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
$ cd stable-diffusion-webui
-> venv
erstellen
$ python -m venv venv --system-site-packages
$ source venv/bin/activate
$ pip install -r requirements.txt
-> Launch skript erstellen
Hier gilt es jetzt passende Argumente anzufügen. In meinem Fall hat es manchmal Probleme gemacht, wenn ich nicht --no-half
mit angegeben habe.
echo "#!/bin/bash" >> webui-py.sh
echo "python launch.py --no-half" >> webui-py.sh
chmod +x webui-py.sh
-> Skript ausführen und Konsolenausgabe nach aufzurufender IP durchforsten! 😄
Damit ist man eigentlich ready to go. Jetzt gilt es nurnoch zu hoffen, dass der VRAM der eigenen Grafikkarte ausreicht… Nicht vergessen immer schön das venv zu aktivieren!
