# Stable Diffusion selber einrichten und ausführen - in nur zwei Minuten Auf mehreren Webseiten kann Stable Diffusion verwendet werden, um Bilder mit einem Text-Prompt zu erzeugen. [Stable Diffusion Online](https://stablediffusionweb.com/) ist ein Beispiel. Allerdings verlangen diese entweder Geld, haben eine lange Warteliste oder bieten nur eine sehr begrenzte Anzahl von Optionen an (etwa für die Bildgröße). Wusstest du, dass du deine eigene Version von Stable Diffusion in nur zwei Minuten einrichten und ausführen kannst? Alles, was du dafür brauchst, ist ein Google-Konto, und schon kann es losgehen. > ### Verwendung von Colab: TLDR; Ich werde den Code gleich erklären, aber wenn du dich nicht für die Details interessierst, musst du nur [hier](https://github.com/mflechl/colab-genai-simple/blob/main/stable-diffusion-2.1.ipynb) hingehen und dann auf das kleine Symbol *Open in Colab* in der Mitte des Bildschirms klicken. Wenn du dazu aufgefordert wirst, melde dich mit deinem Google-Konto an, und ein Notebook wird in der Google Colab-Umgebung geöffnet. Jetzt musst du auf den winzigen, nach unten zeigenden Pfeil oben rechts im Fenster klicken (blauer Kreis im Screenshot), dann wähle *Change Runtime* und suche die leistungsstärkste GPU aus, die verfügbar ist - bei kostenlosen Kontos ist dies zum Zeitpunkt des Verfassens wahrscheinlich eine *T4 GPU* (roter Kreis). Dann klicke auf *Save* und du musst nur noch entweder ```Runtime -> Run all``` wählen oder auf die kleinen *Wiedergabe*-Pfeile links neben den Code-Ausschnitten klicken, um einen nach dem anderen auszuführen. Das ist alles! > ### Ein genauerer Blick auf den Code im Notebook Die ersten Zeilen installieren einige von uns benötigte Python-Module (Ansammlungen von Code, die wir verwenden können, und die in diesem Fall öffentlich verfügbar sind): ```py !pip -q install diffusers==0.11.1 !pip -q install transformers scipy ftfy accelerate ```
Dann richten wir alles ein. Wir importieren (laden) einige Module. Einige von ihnen sind bereits in der Colab-Python-Installation vorhanden, einige haben wir oben installiert. Wir erstellen auch eine spezielle Pipeline (Kette von Befehlen), mit der wir bequem mit einem Stable Diffusion-Modell kommunizieren können. Dabei geben wir das spezifische Modell an, das wir verwenden werden: Stable Diffusion 2.1 von [stability.ai](https://www.stability.ai). Es gibt bessere Modelle, aber auf den kostenlosen Colab-Konten steht nicht ausreichend Arbeitsspeicher (RAM) zur Verfügung, um sie zu verwenden. Die letzte Zeile gibt an, dass die Pipeline von der GPU und nicht von der CPU ausgeführt werden soll: ```py import torch from diffusers import StableDiffusionPipeline pipe = StableDiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-2-1", torch_dtype=torch.float16) pipe = pipe.to("cuda") ```
Als Nächstes richten wir einen Zufallszahlengenerator mit festem Seed ein, damit wir für den gleichen Input immer dasselbe Bild erhalten. Du kannst die Zeile (sowie ```, generator=generator``` einige Zeilen weiter unten) entfernen, wenn du das nicht möchtest. Dann der große Moment: der Prompt. Ändere ihn nach Belieben. Die Anzahl der Schritte (```num_steps```) bestimmt vereinfacht gesagt, wie oft der Algorithmus iteriert, um das Bild zu erzeugen: Je öfter, desto bessere Ergebnisse erhält man, aber es dauert länger, und nach einer gewissen Anzahl von Schritten ändert sich das Ergebnis nicht mehr merkbar. Dann definieren wir Höhe und Breite des Bildes - wir dürfen das Bild nicht allzu groß machen, da sonst der Arbeitsspeicher bei der kostenlosen Colab-Version ausgeht. Und schließlich generieren wir das Bild! ```py generator = torch.Generator("cuda").manual_seed(42) # Festlegen des Seeds für reproduzierbare Ergebnisse prompt = "Ein Gemälde von einem Affen auf dem Mars in einem Raumanzug, der eine Banane isst, im Stil von Dalí" num_steps=50 height=512 width=768 image = pipe(prompt, num_inference_steps=num_steps, height=height, width=width, generator=generator).images[0] ```
Ist dir aufgefallen, dass das Modell auch mit einem deutschen Prompt kein Problem hat? Um das Bild in Colab anzuzeigen, reicht die Zeile ```image``` aus, und man kann dann mit einem Klick mit der rechten Maustaste das Bild speichern. Wenn du den Code woanders ausführst, erledigt dies die Zeile ```image.save(f"monkey_on_mars.png")```. > ### Mögliche Probleme und Lösungen Du kannst diesen Code in Colab ausführen und in deinem Google Drive speichern, um Änderungen zu behalten. In einigen Fällen schlägt die Bildgenerierung in Colab aufgrund von unzureichendem Arbeitsspeicher fehl. In diesem Fall ist die beste Strategie, die Verbindung zur Runtime zu trennen und wieder vom Anfang zu starten (eine GPU verbinden und alle Zeilen ausführen). Natürlich kannst du diesen Code auf jedem Computer mit einer GPU mit ausreichend RAM ausführen, wie es sogar mit einigen Laptops möglich ist. Wenn der Arbeitsspeicher nicht ausreicht, kannst du auch versuchen, die Bildgröße zu verkleinern. Bei lokaler Ausführung muss man wahrscheinlich einige zusätzliche Module installieren, die in Colab bereits vorhanden sind. Viel Spaß!