Maison  >  Article  >  Périphériques technologiques  >  7B ? 13B ? 175B ? Interpréter les paramètres des grands modèles

7B ? 13B ? 175B ? Interpréter les paramètres des grands modèles

PHPz
PHPzoriginal
2024-06-12 20:04:15717parcourir

Les grands modèles varient également en taille, et leur taille est mesurée par le nombre de paramètres. GPT-3 possède 17,5 milliards de paramètres, et Grok-1 est encore plus impressionnant, avec 31,4 milliards de paramètres. Bien sûr, il en existe aussi des plus minces comme Llama, dont le nombre de paramètres n'est compris qu'entre 7 milliards et 70 milliards.

Le 70B mentionné ici ne fait peut-être pas référence à la quantité de données d'entraînement, mais aux paramètres densément regroupés dans le modèle. Ces paramètres sont comme de petites « cellules cérébrales ». Plus ils sont nombreux, plus le modèle peut être intelligent et mieux il peut comprendre les relations complexes entre les données. Grâce à ces « cellules cérébrales », les modèles peuvent être plus performants dans leurs tâches. Cependant, ces paramètres peuvent souvent causer des problèmes, en particulier dans les modèles à grande échelle. Ces « cellules cérébrales » peuvent interagir les unes avec les autres lors du traitement des tâches, ce qui rend difficile pour le modèle de comprendre les relations complexes entre les données. Grâce à ces « cellules cérébrales », les modèles peuvent être plus performants dans leurs tâches. Par conséquent, nous devons trouver un moyen de gérer la relation entre ces paramètres lorsque nous travaillons sur la tâche. Une méthode couramment utilisée consiste à régulariser.Les paramètres de ces grands modèles sont comme les «architectes» à l'intérieur du modèle, grâce à des algorithmes complexes et des processus de formation, cet immense monde linguistique se construit petit à petit. Chaque paramètre a son rôle, et ils fonctionnent ensemble pour permettre au modèle de comprendre plus précisément notre langage et de donner des réponses plus appropriées.

Alors, comment sont composés les paramètres du grand modèle ?

1. Paramètres dans les grands modèles

Les paramètres des grands modèles sont ses "parties internes". Chacune de ces pièces a son propre objectif, comprenant généralement, mais sans s'y limiter, les catégories suivantes :

Poids : Les poids sont comme les nerfs. des fils" dans le réseau connectent chaque neurone. Ils sont chargés d'ajuster le « volume » de transmission du signal, permettant aux informations importantes d'être transmises plus loin et aux informations moins importantes d'être plus silencieuses. Par exemple, dans la couche entièrement connectée, la matrice de pondération W est une « carte » qui nous indique quelles entités en entrée sont les plus étroitement liées aux entités en sortie.
  • Biais : les biais sont comme les « petits assistants » des neurones, chargés d'établir une ligne de base pour la réponse des neurones. Grâce à lui, les neurones savent à quel niveau ils doivent être actifs.
  • Paramètres d'attention : dans un modèle basé sur Transformer, ces paramètres sont comme une "boussole", indiquant au modèle quelles informations méritent le plus d'attention. Ils incluent des matrices de requêtes, des matrices de clés, des matrices de valeurs, etc., qui reviennent à trouver les « indices » les plus critiques dans une grande quantité d'informations.
  • Matrices d'intégration : lors du traitement de données texte, la matrice d'intégration est le "dictionnaire" du modèle. Chaque colonne représente un mot et un nombre est utilisé pour représenter le mot. De cette façon, le modèle peut comprendre le sens du texte.
  • Paramètres d'initialisation de l'état caché (paramètres initiaux de l'état caché) : ces paramètres sont utilisés pour définir l'état caché initial du modèle, tout comme donner un ton au modèle afin qu'il sache par où commencer à « réfléchir ».
  • ......
  • Ces paramètres utilisent généralement 4 formats d'expression et de stockage :

Float : nombre à virgule flottante 32 bits, soit 4 octets
  1. Half/BF16 : nombre à virgule flottante 16 bits , soit 2 octets
  2. Int8 : entier de 8 bits, soit 1 octet
  3. Int4 : entier de 4 bits, soit 0,5 octets
  4. De manière générale, le nombre de paramètres est le principal facteur qui affecte les performances des grands modèles. Par exemple, le modèle 13B-int8 est généralement meilleur que le modèle 7B-BF16 de même architecture.

2. Exigences de mémoire pour les paramètres de grands modèles

Pour les ingénieurs, ils sont confrontés à la quantité de ressources mémoire qui seront utilisées lors de la formation ou de l'inférence de grands modèles. Même si le V100 (avec 32 Go de mémoire GPU) ou l'A100 (avec 40 Go de mémoire GPU) sont très puissants, les grands modèles ne peuvent toujours pas être entraînés sur un seul GPU, comme avec Tensorflow ou PyTorch.

2.1 Besoins en mémoire pendant la phase de formation

Pendant la formation du modèle, cela se reflète principalement dans les besoins de stockage en mémoire pour l'état du modèle et les processus d'activité. L'état du modèle se compose de tenseurs constitués de l'état de l'optimiseur, des gradients et des paramètres. Le processus actif comprend tous les tenseurs créés dans le canal aller qui sont requis pour les calculs de gradient dans le canal arrière. Afin d'optimiser l'utilisation de la mémoire, les aspects suivants peuvent être pris en compte : 1. Réduisez le nombre de paramètres du modèle : vous pouvez réduire le nombre de paramètres et réduire l'utilisation de la mémoire en réduisant la taille du modèle ou en utilisant des techniques telles que des matrices clairsemées. 2. Stockage de l'état de l'optimiseur : vous pouvez choisir de stocker uniquement l'état de l'optimiseur nécessaire au lieu de sauvegarder tous les états. L'état de l'optimiseur peut être mis à jour et stocké de manière sélective selon les besoins. 3. Modifiez le type de données du tenseur :

A tout moment de l'entraînement, pour chaque paramètre du modèle, il doit toujours y avoir suffisamment de mémoire GPU pour stocker :

  • Le nombre d'octets copiés par les paramètres du modèle, pour maintenir un entraînement stable et éviter les anomalies numériques.
  • Cela signifie que la mémoire suivante est requise pour stocker tous les statuts du modèle et les données de processus pendant l'entraînement : (x+y+12) * model_size
  • 2.2 Mémoire requise pour la phase d'inférence

La phase d'inférence est terminée en utilisant pré- Tâches LLM formées telles que la génération ou la traduction de texte. Ici, les besoins en mémoire sont généralement inférieurs, les principaux facteurs d'influence étant :

Contexte limité : l'inférence traite généralement des séquences d'entrée plus courtes, nécessitant moins de mémoire pour stocker les activations associées à des morceaux de texte plus petits.

Pas de rétropropagation : Lors de l'inférence, LLM n'a pas besoin de conserver les valeurs intermédiaires de rétropropagation, une technique utilisée pour l'entraînement pour ajuster les paramètres. Cela élimine une grande partie de la surcharge de mémoire.
  • La phase d'inférence ne nécessite pas plus de mémoire qu'un quart de la mémoire requise pour la phase d'entraînement pour le même nombre et type de paramètres. Par exemple, pour un modèle 7B, en général, l'utilisation de la précision en virgule flottante nécessite 28 Go de mémoire, l'utilisation de la précision BF16 nécessite 14 Go de mémoire et l'utilisation de la précision int8 nécessite 7 Go de mémoire. Cette méthode d’estimation approximative peut en conséquence être appliquée à d’autres versions du modèle.
  • De plus, lors du réglage de LLM pour une tâche spécifique, le réglage fin nécessite une empreinte mémoire plus élevée. Le réglage fin implique généralement des séquences de formation plus longues pour capturer les nuances de la tâche cible. Cela entraînera des activations plus importantes à mesure que le LLM traitera davantage de données textuelles. Le processus de rétropropagation nécessite le stockage de valeurs intermédiaires pour les calculs de gradient, qui sont utilisées pour mettre à jour les poids du modèle pendant l'entraînement. Cela ajoute une charge mémoire importante par rapport à l'inférence.

2.3 Estimation de la mémoire des grands modèles basés sur Transformer

Plus précisément, pour les grands modèles basés sur Transformer, essayez de calculer la mémoire requise pour l'entraînement, où soit :

l : le nombre de couches de Transformer

a : Le nombre de têtes d'attention
  • b : Taille du lot
  • s : Longueur de la séquence
  • h : Dimension de la couche cachée
  • p : Précision
  • Ici, bshp = b * s * h * p représente la quantité de saisir des données de la taille de. Dans la partie couche linéaire du transformateur, environ 9bshp+bsh d'espace sont nécessaires pour les activations ultérieures. Dans la partie attention, l'attention personnelle peut être exprimée comme suit : softmax((XQ)(XK)^T)XV
  • Ensuite, XQ, XK et XV nécessitent tous un espace de la taille d'un bshp. Dans l'auto-attention standard, le résultat de la multiplication de (XQ) * (XK) ^ T est juste une matrice b * s * s contenant logit. Cependant, dans la pratique, en raison de l'utilisation d'un mécanisme d'attention multi-têtes, un espace de stockage s * s distinct doit être établi pour chaque tête. Cela signifie que des octets abssp d'espace sont requis et que le stockage de la sortie de softmax nécessite également des octets abssp. Après softmax, des octets abss supplémentaires sont généralement nécessaires pour stocker le masque, donc la partie attention nécessite 2abssp+abss espace de stockage.

De plus, il y a deux couches Norm dans le transformateur, chacune nécessitant encore un espace de stockage bshp, pour un total de 2 bshp.

Ainsi, la mémoire requise pour la formation de grands modèles basée sur Transformer est d'environ : L(9bshp+bsh+2abssp+abss +2bshp) = Lbshp[16+2/p+(as/h)(2+1/p)]

Expliquez que la mémoire requise pour entraîner un grand modèle basé sur Transformer est approximativement : le nombre de couches du modèle x la taille du lot d'entraînement x la longueur de la séquence x la dimension de la couche cachée x la précision Une limite inférieure théorique sur les besoins en mémoire des paramètres du modèle lors de l'entraînement.

3. Exigences GPU pour les paramètres de grands modèles

Avec les exigences de mémoire pour les paramètres de grands modèles, nous pouvons estimer davantage le nombre de GPU requis pour la formation et l'inférence de grands modèles. Cependant, comme l'estimation du nombre de GPU repose sur un peu plus de paramètres, quelqu'un (Dr Walid Soula, https://medium.com/u/e41a20d646a8) a donné une formule simple pour une estimation approximative, qui a également une certaine signification de référence dans ingénierie.

image

où,

7B ? 13B ? 175B ? Interpréter les paramètres des grands modèlesLes paramètres du modèle en milliards sont le nombre de paramètres du modèle dans B ;

18 est le facteur d'utilisation de la mémoire des différents composants pendant l'entraînement

1,25 représente le processus d'activation requis. Quantité de mémoire ; Factor,Activation est une structure de données dynamique qui change à mesure que le modèle traite les données d'entrée.
  • La taille du GPU en Go est la quantité totale de mémoire GPU disponible
  • À titre d'exemple pratique, en supposant que vous utilisez un GPU NVIDIA RTX 4090, doté de 24 Go de VRAM, calculez le nombre de GPU requis pour entraîner le 'Llama3 7B ' modèle , environ :
  • Le nombre total de GPU≈(7 * 18 * 1,25)/24, ce qui est approximativement égal à 7
  • À des fins de déduction, cela peut être simplifié à 1/8 ~ 1/9 de la phase de formation. Bien sûr, ce ne sont que des estimations approximatives au sens général.

    4. Des grands paramètres de modèle à la formation distribuée

    Comprendre la composition des grands paramètres de modèle et leurs exigences en matière de mémoire et de GPU aidera à comprendre en profondeur les défis rencontrés par la formation distribuée dans la pratique de l'ingénierie.

    Le processus de mise en œuvre des stratégies de formation distribuée peut être considérablement simplifié en adoptant des frameworks conçus pour la formation distribuée, tels que TensorFlow ou PyTorch, qui fournissent des outils et des API riches. En utilisant des techniques telles que l'accumulation de gradient avant la mise à jour du modèle, ou en utilisant des techniques telles que la compression de gradient pour réduire la quantité d'échange de données entre les nœuds, les coûts de communication peuvent être efficacement réduits. Il est crucial de déterminer la taille de lot optimale pour la formation distribuée (le paramètre b mentionné ci-dessus) ; une valeur b trop petite peut augmenter la surcharge de communication, tandis qu'une valeur trop grande peut entraîner une mémoire insuffisante.

    L'importance des LLMOps devient de plus en plus importante. La surveillance régulière des indicateurs de performance configurés pour la formation distribuée et l'ajustement des hyperparamètres, des stratégies de partitionnement et des paramètres de communication pour optimiser les performances sont essentiels pour améliorer l'efficacité de la formation. La mise en œuvre d'un mécanisme de point de contrôle pour le modèle et d'une récupération efficace en cas d'échec garantit que le processus de formation se poursuit sans avoir à repartir de zéro.

    En d'autres termes, la formation/inférence de grands modèles est essentiellement un défi d'ingénierie d'architecture de système distribué complexe, tel que :

    • Surcharge de communication : lors de l'exécution de calculs de gradient et de mises à jour de données, le temps requis pour la communication peut affecter l'effet d'accélération global. .
    • Complexité de la synchronisation : lorsque plusieurs machines sont entraînées en parallèle, la complexité de la synchronisation doit être soigneusement conçue.
    • Tolérance aux pannes et gestion des ressources : l'impact d'une défaillance en un seul point sur la formation et l'inférence du modèle, ainsi que sur les stratégies d'allocation et de planification des ressources pour le CPU et le GPU.
    • ...

    Cependant, en fait, la plupart des ingénieurs ne sont peut-être pas directement impliqués dans des travaux de formation spécifiques, mais se concentrent sur la façon d'utiliser les paramètres de grands modèles lors de la création d'applications.

    7B ? 13B ? 175B ? Interpréter les paramètres des grands modèlesImages

    5. Paramètres utilisés dans les applications de grands modèles

    Ici, nous nous concentrons principalement sur les trois paramètres qui peuvent être configurés lors de l'utilisation de grands modèles pour produire du texte : Température, Top-K et Top-P. Le paramètre

    Température est souvent compris à tort comme un interrupteur qui contrôle uniquement la créativité du modèle, mais en fait son rôle le plus profond est d'ajuster la « douceur » de la distribution de probabilité. Lorsque la valeur de Température est élevée, la distribution de probabilité devient plus douce et plus uniforme, ce qui encourage le modèle à générer une sortie plus diversifiée et plus créative. À l'inverse, des valeurs de température plus faibles rendront la distribution plus nette et auront des pics plus évidents, tendant ainsi à produire un résultat similaire aux données d'entraînement.

    Le paramètre Top-K est utilisé pour limiter le modèle à la sortie des jetons Top-K les plus probables à chaque étape. De cette manière, le contenu incohérent ou dénué de sens dans la sortie peut être réduit. Cette stratégie crée un équilibre entre le maintien de la meilleure cohérence possible de la sortie tout en permettant un certain degré d'échantillonnage créatif.

    Top-P est une autre méthode de décodage qui sélectionne un ensemble minimum de mots dont la probabilité cumulée dépasse la valeur P en sortie en fonction de la valeur P définie (0≤P≤1). Cette méthode permet d'augmenter ou de diminuer dynamiquement le nombre de mots sélectionnés en fonction de la distribution de probabilité du mot suivant. En particulier, lorsque la valeur P est 1, Top-P sélectionnera tous les mots, ce qui équivaut à un échantillonnage de la distribution entière, produisant ainsi une sortie plus diversifiée, tandis que lorsque la valeur P est 0, Top-P sélectionne uniquement les mots ; avec la probabilité la plus élevée, similaire au décodage gourmand, rend la sortie plus ciblée et cohérente.

    Ces trois paramètres fonctionnent ensemble pour affecter le comportement du modèle. Par exemple, lorsque vous définissez Température = 0,8, Top-K = 36 et Top-P = 0,7, le modèle calcule d'abord la distribution de probabilité logarithmique non normalisée complète de l'ensemble du vocabulaire en fonction du contexte. Température = 0,8 signifie que chaque log de probabilité est divisée par 0,8, ce qui augmente effectivement la confiance du modèle dans ses prédictions avant normalisation. Top-K=36 signifie sélectionner les 36 marqueurs avec la probabilité logarithmique du rapport de fréquence la plus élevée. Ensuite, Top-P=0,7 applique un filtrage dans cet ensemble Top-K=36, en conservant le tri de probabilité élevée à faible jusqu'à ce que la probabilité cumulée atteigne 0,7. Enfin, cet ensemble filtré est renormalisé et utilisé dans le processus d'échantillonnage ultérieur.

    6. Résumé

    Dans la pratique de l'ingénierie, il est important de comprendre les paramètres des grands modèles. Les paramètres jouent un rôle décisif dans les grands modèles. Ils définissent le comportement, les performances, les coûts de mise en œuvre et les besoins en ressources des grands modèles. Comprendre les paramètres d'un grand modèle en ingénierie signifie saisir la relation entre la complexité, les performances et les capacités du modèle. La configuration et l'optimisation correctes de ces paramètres du point de vue du stockage et de l'informatique permettent de mieux sélectionner et optimiser les modèles dans des applications pratiques pour s'adapter aux différentes exigences des tâches et contraintes de ressources.

    【Référence】

    • ZeRO : Optimisations de la mémoire vers la formation de modèles de milliards de paramètres ,https://arxiv.org/pdf/1910.02054v3.pdf
    • Réduction du recalcul d'activation dans les grands modèles de transformateurs,https://arxiv.org/pdf/2205.05198.pdf
    • https://timdettmers.com/2023/01/30/which-gpu-for-deep-learning/
    • https://blog.eleuther.ai/transformer-math/

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn