Zum Hauptinhalt springen
  1. Artikel/

Wie man Stable Diffusion auf dem Laptop ausführt

Nuno Coração
Autor
Nuno Coração
Principal Product Manager @ Docker
Inhaltsverzeichnis
Der Neue KI-Hype - Dieser Artikel ist Teil einer Serie.
Teil 3: Dieser Artikel

Im letzten Jahr wurden mehrere maschinelle Lernmodelle öffentlich zugänglich, um Bilder aus Textbeschreibungen zu generieren. Dies war eine interessante Entwicklung im KI-Bereich. Die meisten dieser Modelle blieben jedoch aus berechtigten ethischen Gründen Closed Source. Deshalb bist du, obwohl du über eine Schnittstelle mit ihnen interagieren kannst, in der Anzahl der Dinge, die du testen kannst, begrenzt. Bis jetzt…

Das neueste dieser Modelle ist Stable Diffusion, ein offenes maschinelles Lernmodell, das von Stability AI entwickelt wurde, um digitale Bilder aus natürlichsprachlichen Beschreibungen zu generieren. Dieses Modell ist ziemlich populär geworden, hauptsächlich weil es das erste war, das Open Source wurde.

Ich habe bereits mit Dall-E und Midjourney experimentiert, wollte aber versuchen, ein Modell lokal auszuführen und mehr Freiheit zum Experimentieren zu haben. Ich konnte das Modell erfolgreich auf meinem M1 Pro und auf meinem Windows-Desktop installieren und ausführen. Diese Anleitung beschreibt die Schritte, die ich befolgt habe, um alles auf meinem Mac zum Laufen zu bringen.

Anfängliche Hinweise
#

Ein paar Hinweise, bevor wir loslegen. Ich habe mehrere Anleitungen online ausprobiert und konnte mit keiner davon eine reibungslose Erfahrung machen. Ich musste zahlreiche Repos, Lösungen usw. ausprobieren. Das Hauptziel dieser Anleitung ist es, Anweisungen zu geben, wie man Stable Diffusion auf einem M1 ausführt, wo ich mehr Herausforderungen gefunden habe. Die Installation unter Windows war viel einfacher.

Das gesagt, das Repo, bei dem ich gelandet bin, hat detaillierte Anleitungen für alle Plattformen: Windows, Mac und Linux. Zögere nicht, eine davon zu verwenden, wenn du eine andere Plattform nutzt oder diese Anleitung auf einem Mac nicht für dich funktioniert.

Hinweis: Ich habe die obige Mac-Anleitung nicht ausprobiert, da ich, als ich dieses Repo fand, bereits die meisten Workarounds herausgefunden hatte, die nötig waren, um das Modell zum Laufen zu bringen.

Code holen
#

Beginnen wir damit, den Code zu holen. Ich verwende InvokeAIs Fork von Stable Diffusion, den ich hier geforkt habe. Du kannst gerne das Original-Repo von InvokeAI verwenden, wenn du möchtest. Ich werde meinen Fork verwenden, um sicherzustellen, dass die Anleitung aktuell und funktionsfähig bleibt. Ich habe mich für dieses Repo entschieden, weil 1) es das erste war, das ich zum Laufen bringen konnte, und 2) es einer der wenigen Forks war, die eine Web-UI hatten, was die Interaktion mit dem Ganzen viel einfacher macht.

Zu Beginn klone das Repo auf deinen lokalen Rechner.

git clone https://github.com/nunocoracao/InvokeAI

Modell holen
#

Jetzt musst du das eigentliche Modell holen, das die Gewichte für das Netzwerk enthält. Dies ist das Ergebnis massiver Trainingszyklen mit riesigen Datensätzen, mit denen ein normaler Benutzer mit durchschnittlicher Hardware nicht konkurrieren kann. Das Modell wird nicht mit dem Code verteilt wegen seiner Größe (ca. 7,5 GB) und um sicherzustellen, dass Benutzer einer Lizenz zustimmen müssen, hier kommt Hugging Face ins Spiel.

Geh einfach zur Hugging Face Website und melde dich an, oder erstelle ein Konto, wenn du noch keines hast. Sobald du eingerichtet bist, klicke hier, akzeptiere die Bedingungen auf der Model-Card und lade die Datei namens sd-v1-4-full-ema.ckpt herunter. Nachdem du das Modell heruntergeladen hast, geh in den Code-Ordner und platziere es in models/ldm/stable-diffusion-v1/ mit dem Namen model.ckpt. Der Ordner stable-diffusion-v1 existiert nicht und muss erstellt werden.

Hinweis: Es gibt andere Varianten des Modells, die du erkunden kannst, dies ist die von den meisten Repos empfohlene.

Umgebung einrichten
#

Mit dem Code und dem Modell bereit ist der nächste Schritt, die lokale Umgebung einzurichten, um alles auszuführen.

Xcode installieren
#

Der erste Schritt ist die Installation von Xcode, einer Suite von Tools, die Entwickler verwenden, um Apps für Apple-Plattformen zu erstellen. Xcode kann aus dem App Store installiert werden, oder du kannst es von Apples Developer-Website herunterladen.

Wie in der Dokumentation definiert, ist das Command Line Tools Package ein kleines eigenständiges Paket, das separat von Xcode zum Download verfügbar ist und dir ermöglicht, Kommandozeilen-Entwicklung in macOS durchzuführen.

Für eine Neuinstallation oder um sicherzustellen, dass du alles hast, was wir brauchen, sollte dieser Befehl ausreichen:

xcode-select --install

Conda installieren
#

Die meisten Lösungen, die ich gesehen habe, verwenden Conda, um die erforderlichen Pakete und Umgebungen zu verwalten, die zum Ausführen der Lösung benötigt werden. Condas Installationsanleitung für jede Plattform ist super klar, daher rate ich dir, einfach den Anweisungen hier zu folgen. Sie haben zwei Varianten ihrer Software: Anaconda und Miniconda. Ich habe Miniconda ohne Erfolg versucht. Am Ende habe ich Anaconda verwendet, was einige der Probleme gelöst hat. Außerdem habe ich diese Anleitung befolgt, wenn du fertig bist, kannst du diesen Befehl verwenden, um deine Installation zu überprüfen (Hinweis: vergiss nicht, deine Terminal-Anwendung neu zu starten):

conda

Wenn der Installationsprozess erfolgreich war, solltest du etwas wie das Bild unten sehen.

Hinweis: conda erfordert, dass sowohl python- als auch pip-Befehle im Terminal verfügbar sind, wenn die Umgebung in den nächsten Schritten erstellt wird. Bitte stelle sicher, dass diese richtig konfiguriert sind, da auf Mac die Standardwerte python3 und pip3 sind, daher musst du höchstwahrscheinlich einen Alias erstellen.

Rust installieren
#

Bei einigen anderen Anleitungen hatte ich immer Probleme im nächsten Teil des Prozesses, dem Aufbau der Umgebungen. Nach vielen Versuchen stellte ich fest, dass mir der Rust-Compiler auf meinem System fehlte. Ich folgte der Rust-Installationsanleitung hier, was auf das Ausführen des folgenden Befehls hinausläuft:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Hinweis: Ich bin nicht zu allen Anleitungen im Repo zurückgegangen, um zu prüfen, ob dies in ihrer Methode erforderlich ist oder nicht. Zögere nicht, den nächsten Schritt ohne Installation von Rust auszuprobieren und zurückzukommen, wenn du auf Probleme stößt.

Umgebung erstellen und aktivieren
#

Wir sind fast da. Jetzt werden wir die ldm-Umgebung erstellen und aktivieren, bevor wir mit der Bildgenerierung beginnen. Um dies zu erreichen, wechsle mit cd in das Stammverzeichnis des Repos, das du am Anfang dieser Anleitung geklont hast, und erstelle die Umgebung mit dem folgenden Befehl:

PIP_EXISTS_ACTION=w CONDA_SUBDIR=osx-arm64 conda env create -f environment-mac.yml

Wenn du in diesem Schritt auf Probleme stößt und die Umgebung neu erstellen musst, hast du zwei Optionen: 1) den folgenden Befehl verwenden:

PIP_EXISTS_ACTION=w CONDA_SUBDIR=osx-arm64 conda env update -f environment-mac.yml

Wenn du einen Intel Mac hast, sollte der Befehl lauten:

PIP_EXISTS_ACTION=w CONDA_SUBDIR=osx-64 conda env create -f environment-mac.yml

Oder 2) in Anacondas Ordner gehen, die Umgebung löschen und die Umgebung mit dem ursprünglichen Befehl in diesem Abschnitt erstellen. Nach dem Ausprobieren mehrerer Repos musste ich auf 2) zurückgreifen, um das Durcheinander zu bereinigen.

Jetzt ist es Zeit, die Umgebung zu aktivieren mit:

conda activate invokeai

Der letzte Schritt ist das Vorladen der Modelle mit dem Befehl:

python scripts/preload_models.py

Viel Spaß…
#

Jetzt ist es Zeit, mit Stable Diffusion zu experimentieren. Führe aus:

python scripts/invoke.py --full_precision --web

Und öffne deinen Browser auf localhost:9090

Du solltest eine Web-Oberfläche wie die unten gezeigte sehen.

Wähle deinen ersten Prompt und probiere das Modell aus, alle Bilder werden in output/img-samples gespeichert. Erkunde die verschiedenen möglichen Modelle und Konfigurationen. Ich habe meine mit 512x512 Bildern ausgeführt, etwa 100 Zyklen für die finalen Bilder (5 für die anfänglichen Varianten), und config scale bei 7.5. Als Sampler bevorzuge ich die Ergebnisse mit DDIM, du findest einige Details zu den Unterschieden zwischen Samplern und einige Beispiele in diesem Reddit-Thread.

Seit ich diesen Artikel ursprünglich geschrieben habe, gibt es eine neue Version von InvokeAIs Stable-Diffusion-Implementierung, neben dem, was ich oben beschrieben habe, gibt es viele neue Funktionen, die du erkunden kannst, mehr Details hier.

Einige Beispiele
#

Hier sind einige Beispielbilder aus meinen ersten Durchläufen des Modells. Ich muss sagen, dass es eine gewisse Kunst gibt, diese zum Funktionieren zu bringen. Ich hinterlasse hier ein paar Links, um Ideen zu bekommen, wie man Prompts gestalten kann.

Haftungsausschluss & Andere Optionen
#

Ein paar Dinge zum Abschluss. Obwohl ich dies sowohl auf einem Mac als auch unter Windows installiert habe und die Mac-Erfahrung mit einem M1 Pro gar nicht schlecht war, war die Leistung auf meinem Windows-Rechner mit einer Nvidia RTX 2070 viel besser. Die meisten Bilder, die du in dieser Anleitung siehst, wurden von diesem System generiert, da es mir ermöglichte, schneller Varianten auszuprobieren und mehr Qualität aus Samples zu holen, die mir gefielen.

Eines meiner anfänglichen Ziele war es, das Modell mit zusätzlichem Training erweitern zu können, also mein Gesicht ins Modell zu bringen und damit zu experimentieren. Leider war das nicht möglich, da ich die Trainingsmethoden nicht auf dem Mac ausführen konnte und meine GPU unter Windows nicht die richtigen Anforderungen hat, um das Modell zu trainieren. Derzeit scheint es, dass du mindestens 16GB VRAM brauchst.

Letztendlich gibt es eine Menge Optionen zum Ausführen des Stable-Diffusion-Modells, einige lokal, einige in der Cloud (z.B. Google Colab), also sei nicht frustriert, wenn du das ausprobieren möchtest, aber keinen Zugang zu einer Maschine hast, die es ausführen kann. Es gibt wahrscheinlich andere Lösungen, die du nutzen kannst.

Markiere mich auf Social Media bei deinen Kreationen, wenn du das zum Laufen bringst:

Der Neue KI-Hype - Dieser Artikel ist Teil einer Serie.
Teil 3: Dieser Artikel

Verwandte Artikel