Jetzt bin ich an einem Punkt angekommen bei der Nutzung von Automatic1111 das ich auch etwas tiefer in die Konfiguration einsteige. Zu Beginn hatte ich Parameter beim Start der Software mit übergeben wie z. B. listen oder port. Aber es gibt noch viel mehr Möglichkeiten der Konfiguration um die eigene Hardware mit Automatic1111 auszureizen. Auf die Konfigurationen die ich selber ausprobiert habe gehe ich nachfolgend im Detail ein.

Multi-GPU Konfiguration

Hast Du in Deinem System mehrere NVIDIA GPUs verbaut so kannst Du festlegen auf welcher der GPUs die Prozesse für die Generierung der Bilder laufen sollen.

Hinweis: Es ist wichtig zu verstehen, dass ein Generierungsprozess nicht auf mehrere GPU aufgeteilt werden kann. Soll heißen ein Job läuft auf einer GPU und ist nicht multi GPU fähig.

Die Konfiguration beschreibe ich hier für Linux bzw. für Ubuntu aber auch unter Windows gibt es die gleichen Einstellungen aber dann eben in der entsprechenden *.bat Datei und nicht *.sh Datei.

Unter Ubuntu geht ihr jetzt in den Installationspfad von Automatic1111 und öffnet die Datei webui-user.sh. In dieser Datei sucht ihr nach der Zeile #export COMMANDLINE_ARGS="". Diese Zeile ändert ihr z. B. wie folgt ab das der Rechenjob von Automatic1111 auf der GPU 1 läuft wenn ihr zwei Grafikkarten in eurem System verbaut habt. Bei mir als zwei Grafikkarten zählt ihr einfach hoch. In dem nachfolgenden Bild habe ich zwei gelbe Pfeile eingefügt die euch zeigen wie ihr auf die GPU ID kommt. Die Nummerierung startet mit 0, 1, 2, 3, usw.

Die angepasste Zeile sieht dann für die GPU 1 wie folgt aus: export COMMANDLINE_ARGS="--device-id=1"

Im jetzt folgenden Bild seht ihr das der Job für die Generierung der Bilder auf der GPU 1 läuft.

Automatic1111 Stable Diffusion multi GPU configuration

Automatic1111 Stable Diffusion multi GPU configuration

Hinweis: Ich hatte Probleme wenn ich mehrere Jobs auf der GPU 1 habe laufen lassen das PyTorch den Speicher nicht mehr frei gegeben hat. Das hatte ich so wenn die GPU 0 genutzt wird also die default Einstellung nicht bemerkt. Ich hatte hier dann allerdings auch nicht weiter geforscht warum und wieso das Verhalten so ist.

Automatisch starten

Da ich mich nicht immer am PC anmelden möchte um Automatic1111 zu starten habe ich mir ein kleines Shell Skript geschrieben welches genau diesen Startvorgang für mich vornimmt. Dazu bitte das folgende Start Skript auf dem Rechner in einem Ordner mit z. B. dem Namen scripts anlegen. In diesem Ordner jetzt eine Datei mit dem Namen autostart_automatic1111.sh ablegen. Nachfolgend jetzt die Befehle für das Terminal.

Befehl: mkdir ~/script

Befehl: cd ~/script

Befehl: nano autostart_automatic1111.sh

Hinweis: Achtet jetzt bitte im nachfolgenden Abschnitt darauf das ihr <user_name> durch euren Usernamen des Linux-Systems erstezt. Sonst funktioniert das Start Skript nicht.

Jetzt müssen die nachfolgenden Zeilen in das Skript autostart_automatic1111.sh eingefügt werden.

#!/bin/bash
# Autor: Ingmar Stapel
# Date: 20230501
# This script starts Automatic1111 in an Anaconda virtual environment

source /home/<user_name>/anaconda3/bin/activate stable-diffusion >> /home/<user_name>/stable-diffusion-anaconda.log 2>&1 &
sleep 1
bash /home/<user_name>/stable-diffusion-webui/webui.sh --listen --port 7860 >> /home/<user_name>/stable-diffusion-webui.log 2>&1 &

Anschließend die Datei abspeichern und die Dateirechte so ändern das diese ausgeführt werden kann.

Befehl: chmod +x autostart_automatic1111.sh

Jetzt muss noch ein Eintrag in der crontab vorgenommen werden damit das Skript auch nach jedem Neustart ausgeführt wird. Dazu einfach einmal mit dem folgenden Befehl die crontab öffnen.

Befehl: sudo nano /etc/crontab

Hier jetzt die folgende Zeile einfügen damit das Skript auch gestatet wird.

@reboot <user_name> /usr/bin/bash /home/<user_name>/start_stable_diffusion.sh >> /home/<user_name>/stable-diffusion-crontab.log 2>&1 &

Wenn ihr jetzt den Rechner neustartet sollte Automatic1111 automatisch starten. Wenn das nicht der Fall ist, dann könnt ihr in den beiden Log-Dateien nachlesen die einmal vom Start-Skript und einmal vom crontab Prozess angelegt werden. Diese beiden Log-Dateien findet ihr im User-Verzeichni auf eurem System mit den Namen stable-diffusion-webui.log und stable-diffusion-crontab.log





Artikelübersicht - Stable Diffusion:

Stable Diffusion - AUTOMATIC1111 Ubuntu Installation Teil 1/2
Stable Diffusion - AUTOMATIC1111 Ubuntu Installation Teil 2/2
Stable Diffusion - Bilder lokal generieren mit Prompt Beispielen
Stable Diffusion - AUTOMATIC1111 Experten Konfiguration
Stable Diffusion - Dreambooth Training Finetuning einrichten Teil 1/2
Stable Diffusion - Dreambooth Training Finetuning ausführen Teil 2/2