Na 8 uur wachten is de training eindelijk voltooid.
Wat zijn de resultaten van de fine-tuning van het FLUX 1-dev 12B model op DGX Spark (ARM-gebaseerd) met 90W laag vermogen?
Vandaag gaan we de LoRA-adapters vergelijken die zijn gemaakt tijdens 250, 500, 750 en 1000 stappen, en ik wil het hebben over de 'Honey Spot' die ik ontdekt heb.
1. Testomgeving en voorwaarden
-
Basismodel: FLUX 1-dev (12B)
-
Dataset: 40 realistische afbeeldingen van mensen (1024x1024)
-
Sampler: dpmpp_2m, euler
-
Hardware: DGX Spark (120GB Unified Memory)
-
LoRA Checkpoints: 250, 500, 750, 1000 Stap
2. Vergelijking van resultaten per stap (De Strijd der Stappen)
We testten de consistentie door realistische afbeeldingen van de getrainde personen te genereren.
🥉 Stap 250: "Wie... ben jij?" (Onderfitting)
-
Resultaat: De geestelijke staat is vergelijkbaar met het doel, maar als je vraagt: "Is dit dezelfde persoon?" dan knik je twijfelachtig. De fijne details van de gelaatsuitdrukkingen ontbreken.
-
Snelheid: De genereersnelheid was het snelst (minder dan 100 seconden), maar het was niet de gewenste kwaliteit.
-
Diagnose: Onderfitting. Het model heeft de kenmerken van de gegevens nog niet voldoende opgenomen.
🥈 Stap 500: "Oh! Jij bent het!" (Goede Pasvorm)
-
Resultaat: Het is duidelijk dat dit de getrainde persoon is. Ik kreeg eindelijk het gevoel dat LoRA correct werkt.
-
Bijzonderheid: Soms, als je de uitdrukkingen varieert, kan het lijken alsof het iemand anders is, maar over het algemeen toont het een uitstekende consistentie.
-
Diagnose: Betreedt het optimale leergebied.Vanaf dit punt lijkt het bruikbaar met de 40 afbeeldingen.
🥇 Stap 750: "De esthetiek van stabiliteit" (Stabiel)
-
Resultaat: Er is weinig verschil met 500 stappen, maar het voelt stabieler aan. De karakteristieken van de persoon blijven goed behouden in verschillende houdingen.
-
Diagnose: Dit is een verlengstuk van de 500 stappen, en als je het wilt doen, heeft het een 'gerijpte' sensatie.
🏅 Stap 1000: "Perfect, maar... te perfect voor mijn eigen goed" (Risico op Overfitting)
-
Resultaat: 100% consistentie. Zelfs met een blinde test is het moeilijk om het origineel te onderscheiden.
-
Probleem: Als je vraagt om gelaatsuitdrukkingen die niet in de trainingsdata stonden, zoals 'boze uitdrukking' of 'sex appeal', dan gebeurt er een inconsistentie met de persoon.
-
Diagnose: De grens van overfitting. Het model heeft de trainingsdata te goed geleerd ("deze persoon met deze gelaatsuitdrukking") waardoor de generalisatie begint te dalen.
3. Technische Mysteries en Analyse
Tijdens het testproces ontdekte ik twee interessante (of zelfs verbijsterende) technische problemen.
1) LoRA-bestand is 5GB?
Alle vier de gegenereerde LoRA-bestanden hebben een grootte van 5GB. Normaal gesproken zouden LoRA-adapters enkele tientallen MB tot honderden MB moeten zijn.
Analyse:
In het begin dacht ik: “Wordt de optimizer-status of de volledige tekstencoder opgeslagen?” Maar,
Wanneer je rank 256 LoRA op alle lagen van FLUX 12B toepast, kan het aantal parameters van LoRA enkele GB groot worden.
Dus, de perceptie dat 'LoRA tussen de tientallen en honderden MB' geldig is bij SD1.5, geldt niet voor grotere modellen.
Bij grote modellen is de rank en toepasbaarheid van LoRA direct gerelateerd aan de grootte. Dit leerde ik.
2) Afname van de genereersnelheid (97~130 seconden)
De genereertijd nam toe vergeleken met vóór de toepassing van LoRA.
Analyse:
-
Structuur oorzaak: LoRA voegt de getrainde gewichten ($B \times A$) toe aan de basisgewichten ($W$), waardoor de berekening toeneemt.
-
Bottleneck: Vanwege het ontwerp van het trainingsscript is de T5XXL tekstencoder gestructureerd om na caching naar de CPU te gaan, waardoor dit kan leiden tot een CPU↔GPU rondgang in de inferentie-pijplijn.
Dit deel is nog niet volledig op code-niveau geverifieerd, dus in het volgende experiment wil ik -
de TE allemaal verplicht op CUDA plaatsen
-
wanneer de cachingstrategie verandert
de effecten op genereersnelheid en kwaliteit vergelijken.
4. Conclusie: Op zoek naar de 'Honey Spot'
De conclusie die ik uit deze 8 uur durende reis heb getrokken is duidelijk. “Het is niet altijd goed om meer te leren.”
-
Optimale interval: Op basis van een dataset van 40 afbeeldingen lijkt de Honey Spot zich tussen 400~600 stappen te bevinden, waar zowel 'prijs-kwaliteitverhouding' als 'kwaliteit' kan worden behaald. 1000 stappen lijkt een verspilling van tijd en kan de flexibiliteit schaden.
-
Belang van data: Als je slechts specifieke gelaatsuitdrukkingen leert, ben je een 'gelaatsrobot' die alleen die gezichten kan maken. Het is veel belangrijker om verschillende hoeken en uitdrukkingen in de dataset op te nemen dan simpelweg het aantal stappen te verhogen.
-
De mogelijkheden van DGX Spark: Hoewel het 8 uur duurde en er enkele instellingsproblemen waren, is het bemoedigend dat ik een 12B-model met 90W vermogen heb kunnen fine-tunen.
De Honey Spot (tussen 400~600 stappen) komt voort uit een vrij specifieke situatie van “40 afbeeldingen / FLUX 1-dev / deze LoRA-instellingen”.
Desondanks, op basis van deze ervaring, voelde ik
- dat ik een passende staprange moet verkennen in verhouding tot de hoeveelheid data
- en binnen dat bereik de beste punten moet zoeken door ze verfijnd op te slaan.
5. Volgende Stap
Het doel van het volgende experiment is duidelijk geworden.
-
Optimalisatie: Uitzoeken of ik alle tekstencoders (TE) verplicht in CUDA moet toewijzen of dat dit een ontwerpkeuze is van de FLUX LoRA scripts (het besparen van VRAM door een grote T5XXL te cachen en naar CPU te brengen).
-
LoRA dieet: Vergelijken van capaciteit/kwaliteit/consistentie wanneer
network_dimwordt verkleind van 256 → 128 → 64. -
Precieze aanval: Zonder naar 1000 stappen te gaan, de 400~600 stappen grondig ter nauwkeurige verdelen (Sla elke 50 stappen op) om het beste model te vinden.
-
Invoering van captions in de trainingsdataset:
- 40 afbeeldingen van dezelfde persoon, vergelijking met en zonder captions.
- Analyse vanuit het perspectief van “uitdrukking/houdingsvariatie versus overfitting”.
Onderzoek naar energiezuinige AI gaat door. In de volgende post kom ik terug met een succesvol dieet LoRA!
댓글이 없습니다.