Onlangs heb ik de FLUX 1-dev (12B) model gefinetuned voor het genereren van charactermodels voor gebruik in onze dienst. Hier deel ik de gegevens en de lessen geleerd tijdens het trainen van dit gigantische model met 12 miljard parameters op de energiezuinige ARM-gebaseerde DGX Spark.
1. Leeromgeving en instellingen
-
Hardware: DGX Spark (120GB Unified Memory)
-
Model: FLUX 1-dev (12B Parameters)
-
Dataset: 40 characterafbeeldingen (1024px resolutie)
-
Leerinstellingen:
-
Batchgrootte: 1
-
Gradient Accumulatie: 4
-
Epochs: 100
-
Totaal aantal stappen: 1000
-
2. Verwachting vs realiteit: de mislukking van tijdbeheer
In de referentie van NVIDIA stond: "Ongeveer 90 minuten nodig voor de training van 13 afbeeldingen over 1000 stappen". Op basis hiervan had ik verwacht dat 40 afbeeldingen grofweg 4-5 uur zou duren, en zelfs sneller, 2-3 uur.
Echter, de werkelijke tijd was ongeveer 8 uur.
Analyse: > Aantal afbeeldingen en resolutie: De dataset van 40 afbeeldingen met een hoge resolutie van 1024px verhoogde de belasting.
- Tijd per stap: Gemiddeld kostte het 28 seconden om 1 Epoch (10 stappen) te verwerken. Dit betekent dat het ongeveer 7 seconden kostte om 1 afbeelding te trainen.
3. OOM (Out Of Memory) en geheugenbeheer
Het was een grote vergissing om me te veel te verlaten op de 120GB Unified Memory.
De diensten die al op de server draaiden, veroorzaakte problemen.
-
GPT-OSS (20B): 32GB gereserveerd geheugen
-
ComfyUI: 16GB toegewezen
Toen ik begon met de training in deze toestand, dwong de Linux-kernel het proces om af te breken (Kill). Met ongeveer 66GB vrije ruimte was het onvoldoende voor de training van het 12B model (zoals gradientberekeningen). Uiteindelijk kon ik pas stabiliseren na het uitschakelen van alle achtergrondservices.
- Werkelijke geheugengebruik tijdens training: ongeveer 71.4GB (continu gebruik)

4. Verrassende energie efficiëntie van de ARM-architectuur
Als het een x86-gebaseerde high-performance GPU was geweest, zou het energieverbruik aanzienlijk zijn geweest, maar de efficiëntie van de DGX Spark was verrassend.
-
Piekvermogen: 89-90W
-
Temperatuur: 84-86°C (gestabiliseerd naar 81-83°C na gebruik van een miniventilator)
Het feit dat de 12B model bij volledige belasting slechts 90W verbruikt, is een bemoedigende indicatie van de mogelijkheden als edge of on-device AI server.
5. Ontdekking van de knelpunt: CPU offloading van de textencoder (TE)
Ik ontdekte een van de bepalende redenen waarom de training langer duurde dan verwacht.
Het FLUX-model gebruikt twee textencoders, CLIP-L en T5-XXL, en monitoring toonde aan dat een van de twee op de CPU draaide in plaats van op CUDA.
-
Fenomeen: 1 TE toegewezen aan CUDA, 1 TE toegewezen aan CPU
-
Invloed: Knelpunt door verschil in datatransfer en rekensnelheid tussen CPU en GPU
Er was geen situatie van geheugen tekort (OOM), maar een analyse van de instellingen is nodig om te begrijpen waarom het op de CPU werd afgeladen. Voor de volgende training plan ik om beide encoders geforceerd naar CUDA toe te wijzen voor snelheidverbetering.
6. Conclusie en toekomstplanning
Door deze test heb ik geleerd dat 100 Epoch / 1000 Stappen een te zware instelling is.
-
Verbeteringsrichting: Het aantal afbeeldingen verkleinen tot rond de 30 of, als de hoeveelheid behouden blijft, de trainingshoeveelheid verlagen tot 300-400 stappen lijkt efficiënter.
-
Hardware: Het is zeer aantrekkelijk dat grote model fine-tuning mogelijk is met slechts 90W energie, maar een koelingsoplossing (zoals een mini-ventilator) is een vereiste. Het idee om 8 uur met 86-87 graden te draaien, was toch een beetje eng.
Volgende stap: Er blijft nog ongeveer 2 uur en 30 minuten over tot de training is voltooid. Zodra de training is afgerond, zal ik de gegenereerde LoRA-adapter op FLUX installeren en de echte prestaties delen. Houd de volgende post in de gaten.
댓글이 없습니다.