Apprentissage vs inférence en IA : les principales différences

L’apprentissage détermine les poids d’un modèle en répétant un très grand nombre de fois les étapes suivantes : propager les données vers l’avant pour calculer la perte, calculer les gradients par rétropropagation, puis mettre à jour les poids avec l’optimiseur. L’inférence n’effectue que la propagation avant, avec des poids figés, pour répondre à de nouvelles entrées. L’apprentissage conserve, en plus des poids, les gradients, l’état de l’optimiseur et les activations nécessaires à la rétropropagation : il demande donc beaucoup plus de mémoire et de calcul que l’inférence du même modèle. Un calcul d’inférence est petit, mais il s’exécute à chaque utilisation, et la rapidité de réponse y est primordiale.

CritèreApprentissage (entraînement)Inférence
ObjectifDéterminer les poids du modèle à partir des donnéesRépondre à de nouvelles entrées avec des poids figés
Nature des calculsRépétition de : propagation avant → calcul de la perte → calcul des gradients par rétropropagation → mise à jour des poids par l’optimiseurPropagation avant uniquement
Ordre de grandeur du calculEnviron 3 fois la propagation avant par entrée (la rétropropagation coûte environ 2 fois la propagation avant). Pour un Transformer, environ 6 × nombre de paramètres × nombre de tokens au totalEnviron 2N par token pour un modèle à N paramètres
Mémoire nécessairePoids, gradients, état de l’optimiseur (deux pour Adam) et activations pour la rétropropagation. Tout en FP32 : 16 octets par paramètre, plus les activationsPoids et activations en cours de calcul (plus le cache KV pour les grands modèles de langage). En FP16 : 2 octets par paramètre
Formats numériquesPrécision mixte en BF16 ou FP16 (poids maîtres en FP32)FP16 ou BF16, ou formats quantifiés comme l’INT8 ou l’INT4
Taille de lotGrands lots pour augmenter le taux d’utilisation des unités de calculPetite lorsque la réponse est urgente (parfois 1). Les serveurs regroupent plusieurs requêtes pour gagner en efficacité
Performance recherchéeDébit (temps jusqu’à la fin de l’apprentissage, taux d’utilisation des unités de calcul)Équilibre entre latence (temps de réponse à une requête) et débit, et coût par traitement
MatérielDe nombreux GPU ou accélérateurs dotés d’une HBM de grande capacité et d’une forte puissance de calcul, reliés par un réseau rapideTrès varié : des GPU de centre de données et accélérateurs d’inférence jusqu’aux NPU de smartphones et aux microcontrôleurs
ParallélisationParallélisme de données, de tenseurs et de pipeline. Les gradients sont agrégés par all-reduceTraitement en parallèle de plusieurs requêtes. Les grands modèles sont répartis sur plusieurs puces, notamment par parallélisme de tenseurs
ÉnergieUn apprentissage fait tourner de nombreuses puces pendant longtemps et consomme beaucoup d’électricitéFaible par exécution, mais exécutée à chaque utilisation ; avec un usage intensif, le total devient important

Les valeurs indiquées sont des ordres de grandeur typiques et varient selon la génération de procédé et le produit.

Quand choisir l'un ou l'autre ?

Apprentissage
Pour créer un nouveau modèle, ou pour poursuivre l’entraînement d’un modèle existant sur ses propres données (fine-tuning).
Inférence
Pour utiliser un modèle entraîné dans un service ou un produit : reconnaissance d’images, génération de texte, reconnaissance vocale, etc.
Optimisations
En inférence, on allège les modèles par quantification, élagage (pruning) et distillation des connaissances. En apprentissage, la précision mixte et le gradient checkpointing économisent mémoire et calcul.

Questions fréquentes

Pourquoi l’apprentissage utilise-t-il beaucoup plus de mémoire que l’inférence ?

Parce qu’en plus des poids, l’apprentissage conserve autant de gradients et l’état de l’optimiseur (deux pour Adam), et stocke en outre les activations intermédiaires de la propagation avant pour la rétropropagation. Pour un modèle de 7 milliards de paramètres, par exemple, tout conserver en FP32 représente environ 112 Go hors activations, alors qu’une inférence avec les seuls poids en FP16 se contente d’environ 14 Go.

Que se passe-t-il si l’on augmente la taille de lot en inférence ?

Les poids chargés une fois servent au calcul de plusieurs entrées : les unités de calcul sont mieux exploitées et le débit global augmente. En revanche, le temps d’attente pour réunir les entrées et la durée de chaque traitement augmentent : la réponse à une requête (latence) ralentit et la mémoire utilisée croît.

Peut-on utiliser le même matériel pour l’apprentissage et l’inférence ?

Oui. Les GPU servent aussi bien à l’apprentissage qu’à l’inférence. Mais pour l’inférence seule, la rétropropagation et une grande mémoire sont inutiles : on utilise donc aussi du matériel axé sur l’efficacité énergétique, comme des accélérateurs d’inférence alignant de nombreuses unités de calcul en basse précision (INT8, etc.) ou les NPU des smartphones.

Quelle quantité de calcul l’apprentissage demande-t-il ?

Pour les modèles Transformer, on utilise souvent l’approximation selon laquelle le nombre total d’opérations vaut environ 6ND, N étant le nombre de paramètres et D le nombre de tokens d’apprentissage. En effet, la propagation avant coûte environ 2N par token et la rétropropagation environ le double.

Vérifier vos connaissances

Quelle différence entre « entraînement » et « inférence » d'un réseau de neurones est correcte ?

  1. AL'entraînement détermine les poids en répétant propagation avant, rétropropagation et mise à jour des poids ; l'inférence n'effectue que la propagation avant avec les poids fixés pour produire une réponse
  2. BL'entraînement comme l'inférence n'effectuent que la propagation avant
  3. CL'inférence met à jour les poids, et l'entraînement n'utilise pas de poids
Afficher la réponse et l'explication

Réponse : A. L'entraînement détermine les poids en répétant propagation avant, rétropropagation et mise à jour des poids ; l'inférence n'effectue que la propagation avant avec les poids fixés pour produire une réponse

L'entraînement répète sur un grand volume de données le cycle suivant : calcul successif de la sortie à partir de l'entrée (propagation avant), remontée de l'erreur par rapport à la bonne réponse de la sortie vers l'entrée pour obtenir le gradient de chaque poids (rétropropagation), puis correction progressive des poids selon ce gradient. L'inférence n'effectue que la propagation avant avec les poids déterminés à l'entraînement. La rétropropagation demande environ deux fois plus de calcul que la propagation avant et exige de conserver les résultats intermédiaires ; l'entraînement est donc bien plus lourd que l'inférence.

Laquelle des propositions suivantes n'explique pas pourquoi la mémoire nécessaire à l'entraînement est bien plus grande que pour l'inférence du même modèle ?

  1. AParce que l'entraînement multiplie le nombre de poids par rapport à l'inférence
  2. BParce qu'il faut conserver les résultats intermédiaires de la propagation avant (activations) pour la rétropropagation
  3. CParce qu'il faut conserver autant de gradients que de poids, ainsi que l'état de l'optimiseur
Afficher la réponse et l'explication

Réponse : A. Parce que l'entraînement multiplie le nombre de poids par rapport à l'inférence

Le nombre de poids du modèle est le même à l'entraînement et à l'inférence. Mais l'entraînement doit conserver, couche par couche, les résultats intermédiaires de la propagation avant pour calculer les gradients en rétropropagation, ainsi qu'autant de gradients que de poids et les valeurs par poids tenues par l'optimiseur, comme Adam (deux moyennes mobiles, etc.). La mémoire d'entraînement est donc plusieurs fois celle de l'inférence, qui ne demande que les poids, et l'entraînement des grands modèles exige de nombreux GPU.

Un modèle de 7 milliards de paramètres (7B) est entraîné en conservant poids, gradients et les deux états d'Adam en FP32 (4 octets). Quelle valeur est la plus proche de la mémoire nécessaire, activations exclues ?

  1. AEnviron 28 GB
  2. BEnviron 112 GB
  3. CEnviron 14 GB
Afficher la réponse et l'explication

Réponse : B. Environ 112 GB

Par paramètre : 4 octets de poids, 4 octets de gradient et 4 octets pour chacune des moyennes mobiles du 1er et du 2e ordre d'Adam, soit 16 octets. 7 milliards × 16 octets = 112 milliards d'octets, soit environ 112 GB, auxquels s'ajoute la mémoire des activations. Cette quantité dépassant souvent la mémoire d'un seul GPU, on recourt à des techniques comme la répartition de l'état de l'optimiseur entre plusieurs GPU ou sa conservation en précision réduite.

  1. En inférence, pourquoi l'augmentation de la taille de lot (nombre d'entrées traitées ensemble) tend-elle à améliorer l'efficacité globale ?
  2. Quel est l'inconvénient d'une taille de lot trop grande en inférence ?
  3. Quelle approximation est couramment utilisée pour estimer le nombre d'opérations nécessaires à l'entraînement d'un modèle Transformer, avec N le nombre de paramètres et D le nombre de jetons d'entraînement ?

Questions d'entraînement sur Pile matérielle et logicielle de l'IA

Termes clés expliqués

Inférence
Traitement d'IA qui produit une réponse à partir d'une entrée par la seule propagation avant, à l'aide des poids fixés par l'entraînement. Il demande moins de calcul et de mémoire que l'entraînement.
Rétropropagation
Calcul qui, lors de l'entraînement d'un réseau de neurones, propage l'erreur entre sortie et valeur attendue de la sortie vers l'entrée pour obtenir le gradient de chaque poids (backpropagation).
Taille de lot (batch size)
Nombre d'entrées traitées ensemble. L'augmenter permet de réutiliser les poids et améliore l'efficacité, mais accroît la latence et la mémoire.
Précision mixte
Utilisation de précisions numériques différentes selon les parties du calcul. Les multiplications se font par exemple en FP16 et l'accumulation en FP32, conciliant vitesse et précision.
Checkpointing de gradients
Méthode qui ne conserve qu'une partie des résultats intermédiaires de la propagation avant et recalcule le reste lorsqu'il est nécessaire à la rétropropagation, réduisant ainsi la mémoire au prix d'un surcroît de calcul.

Comparatifs associés