Ressources/Entraînement du modèle/Ce qui se passe lors de l'entraînement

Bonne pratique

Le modèle tiendra-t-il ? Mémoire pour l'entraînement

L'entraînement nécessite de l'espace pour les poids du modèle, ses gradients et l'état de l'optimiseur, en plus de la mémoire de travail. Une règle empirique simple, environ 2 Go par milliard de paramètres pour LoRA et 12 Go pour un réglage fin complet, vous indique avant de commencer si un modèle tiendra sur votre machine.

Chapitre 65 min de lecture4 références

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

Une règle empirique pour la mémoire d'entraînement
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.

Ajustement fin complet16 bits + Adam≈ 112 GoLoRAbase 16 bits, gelée≈ 15 GoQLoRAbase 4 bits, gelée≈ 4–5 GoAdam + copie fp32poids geléspoids entraînablesgradientsétat de l'optimiseur
Mémoire GPU approximative pour l'ajustement fin d'un modèle de 7 milliards de paramètres, avant les activations. Un ajustement fin complet avec Adam nécessite environ 16 octets pour chaque poids : les poids, leurs gradients, une copie maîtresse en pleine précision et deux statistiques d'optimiseur. LoRA maintient la base gelée, de sorte que les gradients et l'état de l'optimiseur n'existent que pour le petit adaptateur (ici environ 40 millions de poids).
Taille du modèleLoRARé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.

Ordinateur portable de 36 Go27 Go utilisablesOS, applications1,5B · LoRA≈ 6 Go · tient7B · LoRA≈ 17 Go · tient14B · LoRA≈ 31 Go · trop volumineux32B · QLoRA≈ 22–26 Go · adapté1,5B · complet≈ 22 Go · adapté3B · complet≈ 40 Go · trop volumineux
Ce qui tient sur un ordinateur portable de 36 Go avec mémoire partagée, selon la règle empirique de cette page. Il reste environ 27 Go pour l'entraînement une fois que le système d'exploitation et vos autres applications ont pris leur part. Estimations à titre d'exemple : les exemples longs et les lots importants nécessitent davantage.
Ce qui tient sur un ordinateur portable de 36 Go (à titre illustratif)
  1. Mémoire utilisable : après le système d'exploitation et les applications, environ 27 Go.
  2. Modèle 1.5B : LoRA 2 × 1,5 + 3 ≈ 6 Go, ajustement fin complet 12 × 1,5 + 4 ≈ 22 Go. Les deux tiennent.
  3. 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.
  4. 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.
  5. QLoRA : un modèle 27–32B nécessite environ 22–26 Go, ce qui tient.
Le modèle 1.5B, dans les deux cas
1.5B · LoRA    2 × 1.5 + 3   ≈  6 GB
1.5B · full   12 × 1.5 + 4   ≈ 22 GB

Sur 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

  1. 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.
  2. Réduisez la taille de lot. Moins d'exemples par étape signifie moins d'activations conservées simultanément.
  3. Passez à QLoRA. La base en 4 bits occupe environ un quart de la mémoire d'une base en 16 bits.
  4. 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à.
  5. 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.

  1. 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.
  2. 02GPU memory usageHugging Face Transformers docs · huggingface.co
  3. 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.
  4. 04Unified MemoryMLX docs · ml-explore.github.ioComment le CPU et le GPU des puces Apple partagent un même espace mémoire.

Transformez des semaines de travail d'expert en quelques minutes

Découvrez comment Scalata s'adapte à votre équipe, à vos données et à vos contrôles.

Contacter le service commercial