Skip to content
Merged
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
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@
"Le protocole est celui de FT-00a section 3, sans un changement :\n",
"\n",
"1. **Fashion-MNIST**, split officiel (60 000 train / 10 000 test), batchs 256/512 ;\n",
"2. un décalage de domaine d'une ligne : le **négatif photo** `x -> 1 - x` ;\n",
"2. un décalage de domaine : le **négatif photo** `x -> 1 - x` ;\n",
"3. `SmallCNN` (3 blocs conv + tête linéaire, ~29 k paramètres), entraîné 2 epochs sur les images **inversées** ;\n",
"4. le réseau est ensuite **gelé**, puis adapté au domaine normal avec LoRA `r = 4, alpha = 8` sur les couches `c3` et `fc` — 2 epochs, Adam `1e-3`.\n",
"\n",
Expand Down Expand Up @@ -667,9 +667,9 @@
"tags": []
},
"source": [
"## 2. `LoraConfig` + `get_peft_model` : toute la machinerie en deux lignes\n",
"## 2. `LoraConfig` + `get_peft_model` : toute la machinerie\n",
"\n",
"FT-00a a écrit **deux classes** — `LoRALinear` et `LoRAConv2d`, environ 60 lignes — puis câblé chaque couche cible à la main, en prouvant un par un les invariants (`B = 0` au départ, `W` gelé, budget `r * (d + k)`). `peft` donne les mêmes garanties **par contrat** :\n",
"FT-00a a écrit **deux classes** — `LoRALinear` et `LoRAConv2d` — puis câblé chaque couche cible à la main, en prouvant un par un les invariants (`B = 0` au départ, `W` gelé, budget `r * (d + k)`). `peft` donne les mêmes garanties **par contrat** :\n",
"\n",
"- `r=4` : le rang de la décomposition ;\n",
"- `lora_alpha=8` : le facteur `alpha/r = 2`, identique à FT-00a ;\n",
Expand Down Expand Up @@ -972,7 +972,7 @@
"\n",
"- **Exactitude** : les trois adaptations (peft, from scratch, full) récupèrent le même ordre de grandeur. Le full fine-tuning des mêmes couches reste devant — 6,5× plus de paramètres libres achètent quelques points.\n",
"- **Budget** : `peft` et le from scratch libèrent **exactement** les mêmes 3 752 paramètres (11 % du réseau) — la librairie n'ajoute rien au budget, elle le garantit.\n",
"- **LOC** : 60 lignes à écrire, tester et maintenir contre 2 — c'est le coût de fabrication contre le coût d'abstraction.\n",
"- **LOC** : des lignes à écrire, tester et maintenir — c'est le coût de fabrication contre le coût d'abstraction.\n",
"- **Temps** : 28,9 s mesurées ici contre 7,9 s committées pour le from scratch — l'adaptateur `peft` ajoute par couche ciblée des noyaux supplémentaires (ici `lora_A` conv 3×3 + `lora_B` conv 1×1) et une indirection de module. Sur cette mini-tâche CPU le rapport est visible ; sur un LLM, il est noyé dans le coût du forward du backbone. Les deux runs n'ont pas non plus partagé la charge machine.\n",
"- **Écosystème** : c'est la vraie ligne de fracture. L'adaptateur `peft` est un **artefact portable** (section 5) : quelques kilo-octets sérialisables, rechargeables sur toute copie de la base, fusionnables — et compatibles avec `transformers.Trainer`, `accelerate`, l'export. La classe maison de FT-00a n'a aucun de ces rails.\n",
"- Le from scratch reste irremplaçable pour **comprendre et déboguer** : quand un adaptateur `peft` se comporte mal (rang trop petit, `alpha` mal calibré), le diagnostic exige de savoir ce qui vit sous la config."
Expand Down Expand Up @@ -1335,7 +1335,7 @@
"\n",
"| notion | ce qu'il faut retenir |\n",
"|---|---|\n",
"| `LoraConfig` + `get_peft_model` | deux lignes remplacent les ~60 lignes de FT-00a ; les invariants (gel de la base, `B = 0`, budget fermé) sont garantis par la lib au lieu d'être prouvés à la main |\n",
"| `LoraConfig` + `get_peft_model` | remplacent l'adaptateur écrit à la main dans FT-00a ; les invariants (gel de la base, `B = 0`, budget fermé) sont garantis par la lib au lieu d'être prouvés à la main |\n",
"| budget identique | `peft` libère exactement les mêmes 3 752 paramètres que le from scratch (`r*(in*k^2) + out*r` en conv, `r*(in+out)` en linéaire) — la lib n'ajoute rien au budget |\n",
"| exactitude comparable | même graine et même protocole : la récupération est du même ordre ; seul le tirage d'initialisation de l'adaptateur diffère |\n",
"| `save_pretrained` / `from_pretrained` | l'adaptateur est un artefact portable de quelques Ko, exact au aller-retour — le fondement du partage d'adaptateurs (Su-LoRA, OpenAdapter…) |\n",
Expand Down
Loading