Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 42 additions & 0 deletions MyIA.AI.Notebooks/GenAI/Texte/21_LoRA_FineTuning.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -980,6 +980,20 @@
"print(f\"VRAM apres chargement : {torch.cuda.max_memory_allocated()/1e9:.2f} Go / 8 Go\")"
]
},
{
"cell_type": "markdown",
"id": "c1lora21-1",
"metadata": {},
"source": [
"### Lecture chiffrée — l'empreinte du chargement QLoRA\n",
"\n",
"Deux grandeurs mesurées ici : `Modele charge en 5.7s` et `VRAM apres chargement : 0.78 Go / 8 Go`, sur la carte identifiée en section 1 (`NVIDIA GeForce RTX 3070 Laptop GPU (8.6 Go)`).\n",
"\n",
"- **0,78 Go alloués sur 8,6 Go réels** ≈ 9 % de la carte, avant tout entraînement. Ordre de grandeur : 755 M de paramètres (total imprimé en section 5) codés en 4 bits à ≈ 0,5 octet chacun font ≈ 0,38 Go de poids quantifiés — le pic mesuré est ≈ 2× cette estimation. L'écart couvre les modules laissés en pleine précision (embeddings, normes) et les buffers ; **la répartition exacte n'est pas mesurée** dans ce notebook.\n",
"- Le dénominateur `/ 8 Go` de la sortie est le budget nominal revendiqué, pas la capacité de la carte (8,6 Go mesurés en section 1) — il reste donc ≈ 7,8 Go pour gradients, états optimiseur et activations.\n",
"- **5,7 s** pour charger depuis le disque local : négligeable devant les 1593,6 s d'entraînement mesurés en section 6.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
Expand Down Expand Up @@ -1322,6 +1336,20 @@
"model_peft.print_trainable_parameters()\n"
]
},
{
"cell_type": "markdown",
"id": "c1lora21-2",
"metadata": {},
"source": [
"### Lecture chiffrée — 0,42 % des paramètres font tout le travail\n",
"\n",
"La sortie `trainable params: 3,194,880 || all params: 755,587,904 || trainable%: 0.4228` se vérifie à la main : 3 194 880 ÷ 755 587 904 = 0,004228 — exactement les 0,4228 % affichés. Les 755,6 M paramètres totaux expliquent l'étiquette « 0.8B » du modèle (arrondi commercial).\n",
"\n",
"- **Environ un paramètre entraînable sur 237** (755,6 M ÷ 3,19 M ≈ 236,6) : l'adaptateur apprend le format balisé en ne touchant qu'une fraction infime du réseau. C'est la promesse LoRA de la section 1 (« ~0,1–1 % du total »), tenue à 0,42 %.\n",
"- Ces 3,19 M paramètres se répartissent sur 7 modules linéaires × 2 matrices (A en 8×n, B en n×8) ; les largeurs n des projections ne sont **pas imprimées** dans les sorties — la décomposition par module n'est donc pas vérifiable depuis le notebook seul.\n",
"- Conséquence directe, mesurée en section 6 : gradients et états optimiseur ne portent que sur ces 3,19 M paramètres, ce qui maintient le pic VRAM d'entraînement à 2,51 Go — là où un fine-tuning complet exigerait typiquement 3–4× la taille du modèle.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
Expand Down Expand Up @@ -1587,6 +1615,20 @@
"print(f\"Perte finale : {stats.training_loss:.4f}\")\n"
]
},
{
"cell_type": "markdown",
"id": "c1lora21-3",
"metadata": {},
"source": [
"### Lecture chiffrée — le budget réel de l'entraînement\n",
"\n",
"Trois mesures clôturent la section : `Entrainement termine en 1593.6s`, `VRAM pic pendant l'entrainement : 2.51 Go / 8 Go`, `Perte finale : 0.6147`.\n",
"\n",
"- **Durée** : 1593,6 s = 26 min 34 s. Le modèle voit 60 exemples × 40 epochs = 2400 exemples ; à batch effectif 8 (4 par device × 2 pas d'accumulation), cela fait de l'ordre de 300 pas d'optimisation, soit ≈ 5,3 s par pas. Le compte exact de pas n'est **pas imprimé** (barre de progression en widget, courbe de perte désactivée par `report_to=[]`).\n",
"- **VRAM** : pic à 2,51 Go = 29 % de la carte de 8,6 Go, soit +1,73 Go au-dessus des 0,78 Go du chargement — l'incrément paie gradients + états optimiseur des 3,19 M paramètres libres et les activations. La promesse « fine-tuner un LLM sur 8 Go » est tenue avec plus de 3× de marge.\n",
"- **Perte finale** : 0.6147 sur cette exécution — alors que les commentaires de la cellule citent `perte finale 0.7545` du run de calibration : deux runs réels, deux valeurs. Sans courbe activée, seule la valeur finale est observable, pas la forme de convergence.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
Expand Down
Loading