Nach 8 Stunden des langen Wartens ist das Training endlich abgeschlossen.

Was sind die Ergebnisse aus der Feinabstimmung des FLUX 1-dev 12B-Modells auf DGX Spark (ARM-basiert) mit einer Leistungsaufnahme von 90 W?

Heute werde ich die LoRA-Adapter vergleichen, die mit 250, 500, 750 und 1000 Schritten generiert wurden, und über meinen entdeckten 'Honey Spot des Lernens' sprechen.


1. Testumgebung und Bedingungen



  • Basis-Modell: FLUX 1-dev (12B)

  • Datensatz: 40 reale Bilder von Personen (1024x1024)

  • Sampler: dpmpp_2m, euler

  • Hardware: DGX Spark (120GB Unified Memory)

  • LoRA-Punkte: 250, 500, 750, 1000 Schritte

2. Vergleich der Ergebnisse nach Schritten (The Battle of Steps)

Ich habe reale Bilder generiert, auf denen die gelernten Personen zu sehen sind, um die Kohärenz zu testen.

🥉 Schritt 250: "Wer bist du...?" (Underfitting)

  • Ergebnis: Die Stimmung ist ähnlich, aber man würde sich fragen: "Ist es dieselbe Person?" Die feinen Details der Gesichtszüge fehlen.

  • Geschwindigkeit: Die Generierung war am schnellsten (unter 100 Sekunden), aber die gewünschte Qualität war nicht vorhanden.

  • Diagnose: Underfitting. Das Modell hat die Merkmale der Daten noch nicht genügend erfasst.

🥈 Schritt 500: "Oh! Das bist du!" (Good Fit)

  • Ergebnis: Jeder erkennt die gelernte Person. Endlich habe ich das Gefühl, dass LoRA richtig funktioniert.

  • Besonderheiten: Manchmal erscheinen die Gesichtsausdrücke fremd, wenn sie variiert werden, aber insgesamt zeigt es eine hervorragende Kohärenz.

  • Diagnose: Eintritt in den optimalen Lernbereich. Ab diesem Punkt scheinen die Bilder unter Verwendung von 40 Bildern realistisch nutzbar zu sein.

🥇 Schritt 750: "Die Ästhetik der Stabilität" (Stable)

  • Ergebnis: Es gibt keinen großen Unterschied zu Schritt 500, aber es fühlt sich stabiler an. Die Merkmale der Person bleiben auch in verschiedenen Posen gut erhalten.

  • Diagnose: Es befindet sich auf der gleichen Linie wie Schritt 500, aber es hat ein gewisses 'reifen' Gefühl.

🏅 Schritt 1000: "Perfekt, aber... zu perfekt schadet" (Overfitting Risk)

  • Ergebnis: 100% Kohärenz. Selbst bei einem Blindtest ist es schwer zu unterscheiden, ob es das Original ist.

  • Probleme: Wenn man Gesichtsausdrücke wie 'verärgert' oder 'sexy' fordert, könnte die Kohärenz der Person beeinträchtigt werden.

  • Diagnose: Grenze zu Overfitting. Das Modell hat die Lernbeschränkungen so gut gemerkt, dass die Anpassungsfähigkeit zu sinken beginnt.

3. Technische Mysteriöse und Analyse



Ich habe während des Tests zwei interessante (oder überraschende) technische Probleme entdeckt.

1) LoRA-Datei ist 5GB?

Alle 4 generierten LoRA-Dateien hatten die gleiche Größe von 5GB. Normalerweise sollten LoRA-Adapter nur wenige MB bis Hunderte von MB groß sein.

Analyse:

Ursprünglich dachte ich, ob „wurde der Status des Optimierers oder der gesamte Textencoder gespeichert?“, aber
wenn man ein FlUX 12B-Modell mit rank 256 LoRA an allen Schichten verbindet, kann die Anzahl der LoRA-Parameter mehrere GB groß werden.
Daher sollte man nicht die Vorstellung übernehmen, dass 'LoRA in der Größenordnung von zig bis Hunderten MB' ausgehend von SD1.5 anzuwenden ist,
in großen Modellen sind Rang und Anwendungsbereich von LoRA direkt mit seinem Volumen verbunden.
Nächstes Mal plane ich, network_dim auf 64~128 zu senken, um das Gleichgewicht zwischen Volumen und Leistung wiederherzustellen.

2) Verlangsamung der Generierung (97~130 Sekunden)

Die Generierungszeit hat sich im Vergleich vor der Anwendung von LoRA verlängert.

Analyse:

  1. Strukturelle Ursache: LoRA summiert die gelernten Gewichte ($B \times A$) zum Basisgewicht ($W$), was die Rechenmenge erhöht.

  2. Engpass: Aufgrund des Designs des Lernskripts ist der T5XXL-Textencoder eine Struktur, bei der nach dem Caching der Prozessor verwendet wird, daher könnte es ähnliche CPU↔GPU-Rundreisen im Inferenz-Pipeline gegeben haben.
    Diese Aspekte wurden aber noch nicht vollständig auf Code-Ebene überprüft, daher plane ich im nächsten Experiment

  3. die TE alle auf CUDA zu erzwingen

  4. und die Cache-Strategie zu ändern,
    um zu vergleichen, wie sich die Generierungsgeschwindigkeit und Qualität verändern.

4. Fazit: Auf der Suche nach dem 'Honey Spot'

Die Vorbereitung und die Ergebnisse dieser 8-stündigen Reise waren klar. "Es ist nicht immer gut, viel zu lernen."

  1. Optimaler Bereich: Basierend auf einem Datensatz von 40 Bildern scheint der Bereich von 400~600 Schritten der Honey Spot zu sein, der sowohl 'Kosten-Nutzen' als auch 'Qualität' umfasst. 1000 Schritte sind sowohl Zeit- als auch Flexibilitätsverschwendung.

  2. Wichtigkeit des Datenmaterials: Wenn man nur bestimmte Gesichtsausdrücke trainiert, wird man zu einem 'Gesichtsausdruck-Roboter'. Bei der Erstellung des Datensatzes sollte darauf geachtet werden, verschiedene Winkel und Gesichtsausdrücke zu integrieren, was viel wichtiger ist als die Erhöhung der Schrittzahl.

  3. Potenzial von DGX Spark: Obwohl es 8 Stunden dauerte und es Einrichtungsschwierigkeiten gab, ist es ermutigend, dass das 12B-Modell mit 90 W Leistung feinabgestimmt wurde.

Natürlich kommt dieser Honey Spot (im Bereich von 400~600 Schritten) aus
„40 Bilder / FLUX 1-dev / diese LoRA-Parameter“, was ziemlich spezifische Bedingungen sind.
Auf jeden Fall habe ich aus dieser Erfahrung gemerkt, dass

  • wenn man die richtige Schrittanzahl in Relation zur Datenmenge erkundet
  • man in diesem Bereich detailliert speichern und dann den optimalen Punkt finden sollte.

5. Nächster Schritt

Das Ziel des nächsten Experiments ist klar.

  • Optimierung: Soll ich den Textencoder (TE) komplett auf CUDA zwingen, oder ist dies eine Absicht des Designs des FLUX LoRA-Skriptes (um VRAM zu sparen, indem man große T5XXL nach dem Caching auf die CPU bringt)?

  • LoRA-Diät: Ich werde vergleichen, wie viel Qualität/Kohärenz ist, wenn ich network_dim von 256 auf 128 und dann auf 64 reduziere.

  • Präzise Treffer: Ich werde den Bereich von 400~600 Schritten präzise unterteilen (Save every 50 steps), um das beste Modell zu finden, ohne eine 1000 Schritte zu machen.

  • Einführung von Beschriftungen in den Trainingsdatensatz:

    • 40 Bilder der gleichen Person, Vergleiche zwischen mit und ohne Beschriftungen.
    • Analyse aus der Sicht von „Diversität der Gesichtsausdrücke/Posen vs. Overfitting“.

Die Forschung zu energieeffizienten KI-Systemen geht weiter. Im nächsten Beitrag werde ich mit einem LoRA zurückkommen, das erfolgreich das Diätziel erreicht hat!