Werk:AI mit Arnie/SDXL LoRa Training in Google Colab
In diesem Video sehen wir uns an, wie wir ein Stable Diffusion XL-Modell trainieren können, das wir anschließend natürlich auch in Fooocus verwenden können. Das heißt, wir werden ein LoRa trainieren. Dieses LoRa können wir danach hochladen, entweder in Google Colab, wenn du da Fooocus laufen lässt, oder natürlich auch auf deiner lokalen Maschine. Wir werden all das so einfach wie möglich machen und dazu auch wieder Google Colab verwenden. Und dieses Notebook ist speziell dafür ausgelegt, dass du sogar gratis arbeiten kannst. Ich werde mich höchstwahrscheinlich mit einer stärkeren Hardware hier verbinden, damit es etwas schneller geht. Aber wenn du etwas Geduld mitbringst, wie gesagt, funktioniert das komplett gratis.
Auf GitHub findest du diese Seite: AutoTrain Advanced. Und wenn du hier runterscrollst, dann siehst du, dass du mehrere Möglichkeiten hast. Du kannst „Run AutoTrain on Colab“ verwenden, und wenn du das Notebook öffnest, dann sieht das Ganze so aus. Du kannst es natürlich auch auf einem Hugging Face Space verwenden. Das mag ich nicht besonders gerne, weil du da deine GPUs mal wieder mieten musst. Und du kannst auch das verwenden mit deiner UI, also mit deinem Interface, das von Ngrok kommt. Das heißt, du kannst auch dieses Google Colab-Notebook aufmachen, hier deinen Ngrok-Token eingeben. Wenn du Ngrok kennst, dann bekommst du hier ein Interface. Ich mag jedoch den einfachsten Schritt, dementsprechend lassen wir all das weg.
Du kannst auch runterscrollen und das hier öffnen: Dreambooth Training. Dementsprechend, wenn du das in einem neuen Link öffnest, wirst du in diesem Google Colab-Notebook sein. Und hier drinnen beginnt die ganze Magie.
Wenn du dich hier nicht verbindest, wenn du keine Laufzeit änderst, verwendest du aktuell die T4-Grafikkarte, und die funktioniert natürlich komplett gratis. Wenn du jedoch hier ein Abo hast, dann solltest du wahrscheinlich auf „Laufzeit“ klicken, den Laufzeittype ändern. Wir wollen jetzt eine stärkere GPU haben, und zwar die A100. Falls die frei ist, bekomme ich die A100. Falls sie nicht frei ist, bekomme ich die L4-GPU, und wir klicken „Speichern“.
Als Nächstes siehst du, was du hier alles machen musst. Du musst einen Ordner hochladen, der sich „images“ nennt. Also machen wir das Ganze. Du kannst hier drüben drauf klicken. Vorher sollten wir vielleicht erst noch „Play“ bei dieser Zelle klicken, also erstmal „Play“ bei dieser Zelle und trotzdem ausführen. Und sobald wir hier verbunden sind, können wir hier drüben einen Ordner eröffnen und den „images“ nennen.
Ich bin jetzt verbunden, leider habe ich nur die L4 bekommen, aber die reicht. Jetzt klicken wir hier drüben natürlich drauf, und hier müssen wir jetzt einen neuen Ordner erstellen. Also: Rechtsklick, neuer Ordner, und diesen neuen Ordner müssen wir „images“ nennen. Also ganz genauso „images“. In diesen Ordner namens „images“ müssen jetzt Bilder hoch, und zwar von uns selbst.
Hier muss ich was klarstellen: Bis jetzt hatte man bei diesen meisten Google Colab-Notebooks immer Bilder verwenden müssen, die 512 x 512 Pixel sind. Das Ganze hat sich geändert. Du kannst jetzt Bilder verwenden in jedem Seitenverhältnis, was du willst. Also es muss nicht mehr 1:1 sein. Und was außerdem sonst noch cool ist, ist natürlich, dass du sogar größere Aspect Ratios, also größere Auflösungen hochladen kannst.
Es ist jetzt nur noch wichtig, dass du Bilder hast von dem Objekt, an dem du trainieren willst. Du kannst Bilder von dir verwenden, Bilder von deiner Freundin, Bilder von deinem Freund oder Mann, von deiner Mutter, von deiner Tochter, von deiner Schwester, von einem Kollegen, von deiner Katze, von deiner Ziege, von deiner Kuh, von Celebrities im Internet – du kannst verwenden, was du willst.
Wenn du Leute aus dem Internet verwenden willst: Erstmal, vielleicht solltest du das nicht unbedingt machen. Aber wenn du sowas nehmen willst, dann gibst du einfach ein, meinetwegen „Taylor Swift“. Du gehst auf Bilder, und hier kannst du dir Bilder suchen. Es ist wichtig, wenn du Bilder suchst, dass du dir Dinge raussuchst, wo Taylor Swift alleine zu sehen ist, also nicht mit Publikum. Also die Bilder, die wir hier sehen, würden alle relativ gut funktionieren. Dementsprechend könntest du solche oder ähnliche Bilder verwenden. Ich will jedoch an Bildern von mir trainieren, und ich habe hier einige Bilder von mir gemacht.
Und jetzt siehst du diese Bilder dort oben. Die würden alle funktionieren. Jedoch rate ich dir absolut, nicht genau all solche Bilder zu verwenden. Das generelle Grundkonzept ist ja: verschiedene Winkel, wie du hier bereits sehen kannst. Jedoch solltest du auch ein oder zwei Ganzkörperperspektiven dabei haben.
Und im Optimalfall auch andere Hintergründe. Denn wenn du jedes deiner Trainingsdaten mit schwarzem Hintergrund hast, dann denkt das Diffusion-Modell: „Hey, das ist eine Charakteristik von diesem Typ, der steht immer vor schwarzem Hintergrund oder sowas.“ Dementsprechend habe ich auch noch ein paar andere Bilder gesucht, einige, wo man auch den Oberkörper sieht. Ja, ich habe keine anderen Bilder gefunden. Das sind immer noch diese Posing-Bilder, als ich damals mal gut in Form war. Dementsprechend solltest du solche oder ähnliche Bilder verwenden.
Du kannst auch einen Trainingsdatensatz machen, der so aussieht: verschiedene Gesichtsausdrücke, verschiedene Hintergründe. Wie gesagt, es ist nicht unbedingt nötig, die Dinge hier zuzuschneiden in 512 x 512 Pixel. Wichtig ist nur: verschiedene Winkel vom Gesicht, im Optimalfall auch ein, zwei Ganzkörperansichten und verschiedener Hintergrund. Sowas wäre vielleicht tatsächlich optimal. Aber auch so ein Datensatz, so ein gemischter, ist gut.
Wie viele Bilder brauchst du jetzt hier? Du brauchst hier tatsächlich nur zwischen fünf und zwölf Bilder. Je weniger Bilder du verwendest, umso schneller geht es. Ich habe einige Modelle trainiert mit 30, 40 Bildern, und ich habe leider niemals gefunden, dass hier etwas besser funktioniert. Aber, na ja, zumindest habe ich es probiert.
Also dementsprechend: In diesen Ordner müssen jetzt Bilder rein, und zwar in etwa fünf bis zwölf Bilder. Ich suche mir mal einige Bilder raus und ziehe die hier einfach hoch.
Und Übrigens, das ist hier okay. Wir haben hier diesen Fehler: Sobald wir das bei „images“ gefüllt haben, kann ich noch mal „Play“ klicken, dann klappt es. Ordner „Images“ erstellt, und ich lade die Bilder hier hoch. Die werden danach auch wieder gelöscht von Google Colab.
Jetzt fällt dir hier Folgendes auf: Erstmal, all diese Bilder sind JPEGs. Das ist wichtig. Es können auch PNG-Datei sein. Es ist nur wichtig, dass jedes dieser Bilder das gleiche Format hat. Seitenverhältnis, wie gesagt, ist nicht so wichtig. Ich habe die Dinge einfach alle umbenannt, zusätzlich noch unter „Scott Porter man“. Warum „Scott Porter“ eigentlich? Sollte man diese Typen oder diese Bilder benennen so, wie man selbst heißt oder das Tier, wie man es nennen will?
Ich habe auch sonst immer eigentlich gehört, dass man diesen Bildern und auch den Prompts danach einen Namen geben soll, den es nicht gibt. Nun habe ich jedoch eine Weile rumgespielt, und ich denke, man bekommt die besseren Ergebnisse, wenn man einen prominenten Charakter sucht, sich aussucht, wem man am ähnlichsten sieht, und danach davon den Prompt verwendet und auch die Bilder so benennt.
Wi… Warum komme ich aber auf diesen Namen? Ich muss gestehen, den habe ich noch nicht mal gekannt. Ich bin auf diese Seite gegangen: Diese Seite nennt sich starbyface.com. Ich habe mein Gesicht hochgeladen, und ich bekomme hier einige Leute vorgeschlagen. Ich habe insgesamt so fünf, sechs Bilder hochgeladen, und dieser Typ, also Scott Porter, der war eigentlich immer dabei. Mit dem stimmt mein Gesicht scheinbar einigermaßen überein. Die Haare wahrscheinlich nicht, wobei in diesem Bild vielleicht auch die Haare einigermaßen. Generell scheinbar sollte mein Gesicht irgendwie die Züge von diesem Typ haben.
Ich habe den mal gegoogelt. Ich weiß überhaupt nicht, ob ich ihm ähnlich sehe, aber na ja. Ich habe zumindest mal dieses Gesicht genommen, weil mir halt KI errechnet hat, dass mein Gesicht so oder so ähnlich aussieht. Dementsprechend: Scott Porter habe ich diese Bilder so benannt. Und es ist immer ein .jpeg.
Sobald wir diesen Ordner jetzt oben haben, klicke ich hier noch mal kurz „Play“, denn jetzt sollten wir hier auch keinen Fehler mehr bekommen. Wir haben jetzt das Bild, das sich „images“ nennt, und schwups, schon funktioniert das Ganze.
Jetzt kommen wir zu der nächsten Zelle. Hier haben wir Projektnamen, den Modellnamen und den Prompt. Erstmal den Modellnamen: Es ist wichtig, dass wir ein Stable Diffusion XL Base-Modell verwenden. Wir könnten hier auch Fine Tunings machen an einem 1.5er-Modell, an einem 2er-Modell und so weiter. Aber wir wollen unbedingt das Stable Diffusion XL-Modell fine-tunen.
Danach der Prompt: „Foto of a SKS Dog“ ist für uns natürlich nicht perfekt. Wir wollen den Prompt anders haben, z. B. „Scott Porter man“. So sollte das Ganze aussehen. Hier, das ist unser Trigger-Word.
Den Projektnamen, den können wir natürlich auch ändern. Dementsprechend nicht „MyDreamboothProject“. Wir nennen das Ganze jetzt mal „ScottPorterProject“ oder einfach nur „ScottProject“. Ich denke, das reicht hier raus.
Danach das „Push to Hub“: Hier kannst du jetzt „false“ oder „true“ verwenden. Ich mag es, „true“ zu verwenden, weil wir so unser Modell auch sofort in Hugging Face bekommen. Es kann sein, dass dieses Google Colab-Notebook irgendwann mal abstürzt, und ich habe keine Lust, dass ich mein Projekt danach nicht mehr finde. Also „true“.
Danach brauchen wir einen Hugging Face-Token und den Hugging Face-Usernamen, und das werden wir jetzt machen. Wir können auf diesen Link gehen. Den öffne ich hier. Ja, natürlich, das ist okay so für mich.
Falls du bis jetzt noch keinen Token hast bei Hugging Face bzw. noch keinen Account, dann musst du dir hier jetzt einen Account machen bei Hugging Face. Und dann brauchst du einen neuen Token. Du klickst einfach „Create New Token“. Wie ist der Name vom Token? Ich nenne den einfach mal auch hier „Scott“, z. B. Jetzt müssen wir eingeben, was dieser Token ist. Ist es „fine grain“, „read“ oder „write“? Und der Token sollte „write“ sein. Danach klicken wir „Create Token“. Hier bekommen wir jetzt den Token. Wir klicken also „Copy“, zurück in AutoTrain, den Hugging Face-Token fügen wir hier jetzt natürlich ein und danach noch den Hugging Face-Usernamen.
Für den Usernamen klicken wir einfach nur hier auf meinen Namen, und wir können hier den Usernamen ganz einfach nur kopieren. Und ja, diesen Schritt kannst du hier sogar auslassen, wenn du magst. Ich mag es jedoch, diesen Schritt hinzuzufügen. Dementsprechend: Hugging Face Username ist das da, und schwups, wir fügen den hier ein.
Und jetzt die Hyperparameter. Hier haben wir jetzt die Learning Rate. Wir verwenden hier einen Epoch, so wie ich das zumindest jetzt sehe, insgesamt 500 Steps. Das ist vollkommen okay hier. Wir könnten auch hochgehen auf bis zu 1.000 oder 2.000. Jedoch reichen hier für meistens 500 Steps tatsächlich aus. Die Batch Size und so weiter ist alles okay. Die können wir so lassen. Eigentlich können wir alles ganz genauso lassen.
Das hier, „Mixed Precision“: Wenn du hier tatsächlich im Google Colab mit der T4, mit dem Gratis-Ding, dann kannst du hier vielleicht mal versuchen, mit dem BF16-Modell zu arbeiten. Ich bin jedoch im Bezahlabo, also kriegen wir auch das Float16-Modell hin.
Der ganze Rest ist hier eigentlich okay. Dementsprechend klicken wir hier jetzt natürlich „Play“. Du könntest hier das da, also „Push to Hugging Face“, auch auslassen, wenn du willst. Das musst du absolut nicht machen, das ist optional. Wenn du dementsprechend hier auf „false“ klickst, dann funktioniert das Ganze auch. Aber ich habe es hier jetzt schon eingegeben. Ich finde das relativ praktisch.
Danach gehen wir weiter runter, und hier läuft das Ganze danach. Du siehst hier, was wir alles machen. Wir erstellen unser Projekt und so weiter. Hier brauchen wir aktuell überhaupt nichts mehr umzuändern. Wir klicken einfach nur „Play“. Sobald wir hier „Play“ klicken, wird eigentlich die Magie schon sofort beginnen. Es wird sich hier jetzt eine Codezeile eröffnen bzw. die ganzen Dinge laufen einfach, und jetzt sollte unser Training laufen.
Ich sehe gerade hier, dass wir hier oben einen Fehler haben. Ein Repo haben wir hier tatsächlich nicht gefunden. Wir sehen uns mal an, wie das Ganze läuft. Ich denke, es liegt da hier tatsächlich an meinem Hugging Face-Token.
Wenn mein Modell nicht bei Hugging Face gespeichert wird, ist es für mich jetzt auch nicht so schlimm. Da müssen wir die Datei halt danach hier runterladen. Aber generell ist mir das aktuell auch relativ egal. Wenn wir es nach Hugging Face rüberschicken könnten, wäre es natürlich noch cooler.
Und jetzt siehst du, wir gehen hier über die Steps. Wir haben 0 %, wir haben den ersten Step von 500. Also das dauert jetzt eine kleine Weile. Den zweiten von 500. Wir sehen uns, sobald das Ganze geschehen ist. Ich denke, das kann hier ein klein wenig dauern. Hätte ich eine A100 anstatt der L4 bekommen, würde es natürlich etwas schneller klappen.
Und tada! Da sind wir wieder. Es sieht so aus, als ob unser Training durch wäre. Jetzt wirst du hier auf der linken Seite das da haben: dein „ScottProject“, oder ich zumindest.
Und hier haben wir einige Dateien. Wir haben das ReadMe, den Prompt Textfile, wir haben die „pytorch lora weights“, und hier auch diese „pytorch lora weights“, die „kohia weighst“. Die brauchen wir alle. Und die Trainingsparameter im JSON-Format.
Ich würde dir raten, all diese Details oder diese Dinge herunterzuladen. Also das ReadMe herunterzuladen, das brauchst du eigentlich nicht, um ehrlich zu sein, diesen Prompt herunterzuladen, das wird wichtig, die „pytorch lora Weights“. Danach die „pytorch lora kohia weighst Weights“, die sollten wir natürlich auch herunterladen. Danach noch die Trainingsparameters in JSON-Format. Also ich würde einfach alle die Dinge runterladen. Denn sobald du die Dinge einmal heruntergeladen hast, kann die dir halt niemand mehr wegnehmen. Dementsprechend auch den JSON-Format runterladen. Und das war's.
Da wir natürlich eingestellt haben, dass die Dinge auch rüber gesendet werden zu Hugging Face, kannst du auch auf einen Hugging Face-Account gehen. Wenn du jetzt auf deinen Hugging Face-Account drauf gehst, und zwar hier unter deinen Namen, dann findest du auch das Modell. Ich habe in der Zwischenzeit noch was Neues gemacht. Aber du siehst hier: „Arni936 ScottProject“. Wenn du hier drauf klickst, dann hast du auch hier dieses Modell. Und auch dieses Modell kannst du natürlich von hier aus herunterladen. Das heißt, es ist halb so schlimm, wenn du die „pytorch Weights“ aus deinem Colab-Notebook z. B. nicht heruntergeladen hättest oder diese verlieren würdest. Hier kannst du nämlich deine gesamte Modellkarte einsehen. Du kannst auf „Files“ gehen, und hier siehst du noch mal die gleichen Dinge: das ReadMe, das Textfile, die „pytorch lora Weights“, die „pytorch kohia weighst“, die „Safe Tensors“-Datei und die Trainingsparameter im JSON-Format.
Und diese Dinge werden wir danach brauchen, sobald wir das Modell natürlich auch laufen lassen.
In diesem Video hast du gelernt, wie du ein Stable Diffusion XL LoRa trainieren kannst. Generell ausgedrückt ist es recht einfach. Du brauchst nur deine Trainingsdaten in das Colab-Notebook. Du lädst die Daten hoch. Achte darauf, dass du aus verschiedenen Winkeln zu sehen bist – oder dein Tier oder woran du auch immer trainierst. Und danach kannst du sofort loslegen. Du solltest das Ding auch auf Hugging Face rüberschieben, solltest du es in deinem Google Colab-Notebook verlieren. Auf diese Files solltest du aufpassen. Wir haben sie bis jetzt runtergeladen. Und im nächsten Video sehen wir uns natürlich genau an, wie wir dieses Modell natürlich auch in Fooocus verwenden können.