Pile matérielle et logicielle de l'IA

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.

S'entraîner sur ce thème Retour au thème

Autres questions sur Pile matérielle et logicielle de l'IA

  1. 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 ?
  2. Si les poids d'un modèle de 7 milliards de paramètres (7B) sont stockés en FP16 (2 octets), quelle est approximativement la mémoire des poids ?
  3. Si le modèle 7B de la question précédente est quantifié de FP16 (environ 14 GB) en entiers 4 bits (INT4), quelle devient approximativement la mémoire des poids ?
  4. Quel est approximativement le nombre d'opérations en virgule flottante (multiplications et additions comptées séparément) du produit d'une matrice M×K par une matrice K×N ?
  5. Pour le produit de deux matrices N×N en FP16 (2 octets), en supposant que chaque entrée est lue une fois et le résultat écrit une fois, quelle est approximativement l'intensité arithmétique (opérations par octet) ?