Pourquoi l'entraînement nécessite plus que le téléchargement
L'exécution d'un modèle ne nécessite guère plus que ses poids : un modèle 7B en 16 bits pèse environ 14 Go. L'entraînement en nécessite davantage, car chaque poids qui apprend a également besoin d'un gradient (la direction dans laquelle le déplacer) et d'un état d'optimiseur (les moyennes mobiles d'Adam qui définissent la distance). S'y ajoutent les activations de la passe avant, qui augmentent avec la taille de lot et la longueur des exemples. Ce qui distingue l'ajustement fin complet de LoRA, c'est de savoir lesquels de ces éléments existent pour quels poids.
La règle empirique
LoRA ≈ 2 GB per billion parameters + ~3 GB
frozen 16-bit weights adapter, activations, overhead
full ≈ 12 GB per billion parameters + ~4 GB
16-bit weight 2 bytes
16-bit gradient 2 bytes
Adam moment 1 (fp32) 4 bytes
Adam moment 2 (fp32) 4 bytes
─────────
12 bytes per weight
(+ 4 bytes for a 32-bit master copy = 16)- LoRA maintient la base gelée en 16 bits : 2 octets par poids, soit 2 Go par milliard de paramètres. L'adaptateur est minuscule, et les ~3 Go le couvrent, ainsi que son état d'optimiseur, les activations à des longueurs modérées et le framework lui-même.
- Le réglage fin complet entraîne chaque poids : un poids et un gradient de 16 bits, plus les deux estimations de moment de 32 bits d'Adam, soit 12 octets par poids au total.
- QLoRA stocke la base gelée sur 4 bits, ce qui réduit la mémoire à environ un tiers de celle de LoRA : un modèle de 8B nécessite environ 9 Go au lieu de 19.
La page sur l'ajustement fin complet compte 16 octets par poids, et non 12. La différence réside dans la copie maîtresse en 32 bits des poids que la recette classique en précision mixte conserve aux côtés de ceux en 16 bits. Cette règle empirique suppose un entraînement sans cette copie supplémentaire ; une configuration qui en conserve une nécessite environ 16 Go par milliard de paramètres. Les deux sont des estimations avant les exemples longs : les activations s'y ajoutent et augmentent avec la longueur maximale et la taille de lot.
| Taille du modèle | LoRA | Réglage fin complet |
|---|---|---|
| 0.5B | ~4 Go | ~10 Go |
| 1.5B | ~6 Go | ~22 Go |
| 3B | ~9 Go | ~40 Go |
| 7B | ~17 Go | ~88 Go |
| 14B | ~31 Go | ~172 Go |
Les activations sont la partie que la règle ne peut qu'approximer. Elles augmentent avec le nombre de jetons conservés simultanément, soit la taille de lot multipliée par la longueur de l'exemple. Ainsi, doubler la longueur maximale les double approximativement, et l'attention peut en ajouter davantage pour les exemples très longs. Les frais généraux fixes de la règle supposent des longueurs modérées. Si vos exemples sont longs, prévoyez une marge supplémentaire plutôt que de planifier au gigaoctet près.
La mémoire dont vous disposez réellement
Sur les ordinateurs portables dotés d'une mémoire unifiée, tels que les Mac avec puce Apple, le GPU partage la mémoire principale. Ainsi, un ordinateur portable de 36 Go peut offrir à un modèle plus d'espace qu'un GPU de jeu typique. Cependant, le système d'exploitation et vos autres applications ont besoin de leur part, prévoyez donc qu'environ les trois quarts soient libres pour l'entraînement. Sur un PC équipé d'une carte graphique distincte, la limite est la mémoire propre du GPU, et non la RAM de l'ordinateur.
- Mémoire utilisable : après le système d'exploitation et les applications, environ 27 Go.
- Modèle 1.5B : LoRA 2 × 1,5 + 3 ≈ 6 Go, ajustement fin complet 12 × 1,5 + 4 ≈ 22 Go. Les deux tiennent.
- LoRA, modèles plus grands : un modèle 7B nécessite environ 17 Go et tient ; un modèle 14B nécessite plus de 30 Go et ne tient pas. En pratique, LoRA permet de faire tenir des modèles jusqu'à environ 10B.
- Ajustement fin complet, modèles plus grands : un modèle 3B nécessite environ 40 Go, le plafond se situe donc autour de 1.5B.
- QLoRA : un modèle 27–32B nécessite environ 22–26 Go, ce qui tient.
1.5B · LoRA 2 × 1.5 + 3 ≈ 6 GB
1.5B · full 12 × 1.5 + 4 ≈ 22 GBSur un GPU NVIDIA de 16 Go, la même règle indique qu'un modèle 8B nécessite environ 19 Go avec LoRA, ce qui est trop, mais environ 9 Go avec QLoRA, ce qui tient en laissant de la place pour des exemples plus longs.
Si une exécution manque de mémoire
- Réduisez la longueur maximale. La mémoire augmente avec la longueur des exemples, c'est donc ce qui libère le plus d'espace. Vérifiez d'abord que vos exemples typiques tiennent toujours.
- Réduisez la taille de lot. Moins d'exemples par étape signifie moins d'activations conservées simultanément.
- Passez à QLoRA. La base en 4 bits occupe environ un quart de la mémoire d'une base en 16 bits.
- Utilisez le point de contrôle des gradients. Cela sacrifie environ 20 à 30 % de vitesse pour réduire considérablement la mémoire d'activation, et de nombreuses recettes l'activent déjà.
- Choisissez un modèle plus petit, ou utilisez LoRA au lieu de l'ajustement fin complet.
Erreurs courantes
- Juger par la taille du téléchargement. L'ajustement fin complet nécessite six à huit fois les poids en 16 bits, plus les activations.
- Considérer toute la RAM d'un ordinateur portable à mémoire partagée comme disponible. Le système d'exploitation et les autres applications ont besoin de leur part.
- Compter la RAM d'un PC au lieu de la mémoire de sa carte graphique.
- Augmenter la longueur maximale ou la taille de lot après une exécution réussie, et s'attendre à ce que la suivante tienne également.
- Réduire la longueur maximale en dessous de celle de vos exemples typiques, de sorte que le modèle ne voie jamais la fin des réponses qu'il doit apprendre.
Références et lectures complémentaires
Les sources externes s'ouvrent dans un nouvel onglet.
- 01ZeRO: Memory Optimizations Toward Training Trillion Parameter ModelsRajbhandari et al., 2019 · arXiv · arxiv.orgLa comptabilisation standard des poids, des gradients et de l'état de l'optimiseur par paramètre.
- 02GPU memory usageHugging Face Transformers docs · huggingface.co
- 03Model memory estimatorHugging Face Accelerate docs · huggingface.coUn outil pour estimer la mémoire d'un modèle Hugging Face spécifique pour l'exécution et l'entraînement.
- 04Unified MemoryMLX docs · ml-explore.github.ioComment le CPU et le GPU des puces Apple partagent un même espace mémoire.