paint-brush
Les bibliothèques open source à consulter pour la construction LLMpar@chawlaavi
434 lectures
434 lectures

Les bibliothèques open source à consulter pour la construction LLM

par Avi Chawla10m2024/06/26
Read on Terminal Reader

Trop long; Pour lire

Cet article présente certaines des meilleures bibliothèques disponibles pour le développement LLM, classées selon leurs rôles spécifiques dans le cycle de vie du projet.
featured image - Les bibliothèques open source à consulter pour la construction LLM
Avi Chawla HackerNoon profile picture
0-item
1-item

GPT-2 (XL) possède 1,5 milliard de paramètres et ses paramètres consomment environ 3 Go de mémoire avec une précision de 16 bits.

Cependant, on peut difficilement l’entraîner sur un seul GPU doté de 30 Go de mémoire.




Cela représente 10 fois la mémoire du modèle, et vous vous demandez peut-être comment cela pourrait être possible.


Bien que cet article ne se concentre pas sur la consommation de mémoire LLM ( vous pouvez cependant vérifier ceci si vous souhaitez en savoir plus ), l'exemple a été utilisé pour vous aider à réfléchir à l'ampleur insondable et aux besoins en mémoire des LLM.


En fait, dans l’exemple ci-dessus, nous avons considéré un modèle assez petit : GPT-2 (XL), avec seulement 1,5 milliard de paramètres.

Voici une comparaison de taille du GPT-2 (XL) avec le GPT-3 afin que vous puissiez imaginer ce qui se passerait là-bas :



L'une des choses qui différencient grandement la formation LLM de la formation classique sur modèles est l'ampleur de ces modèles, qui nécessitent des ressources informatiques et des techniques substantielles pour être développés, formés et déployés efficacement.


C'est pourquoi une formation LLM typique est bien plus une question d'« ingénierie » que de « formation ».


Heureusement, nous disposons aujourd'hui de diverses bibliothèques et outils spécialisés conçus pour gérer les différentes étapes des projets LLM, du développement initial et de la formation aux tests, à l'évaluation, au déploiement et à la journalisation.



Cet article présente certaines des meilleures bibliothèques disponibles pour le développement LLM, classées selon leurs rôles spécifiques dans le cycle de vie du projet, comme le montre la figure ci-dessus.


Bien qu'il existe de nombreuses bibliothèques et outils pour le développement LLM, nous avons décidé de garder notre liste relativement concise et avons sélectionné 9 bibliothèques en fonction de facteurs tels que l'adoption, le soutien de la communauté, la fiabilité, l'utilité pratique, etc. N'hésitez pas à utiliser la table des matières pour accéder aux bibliothèques sur lesquelles vous souhaitez en savoir plus.


Formation et mise à l'échelle

Un test de réalité

# 1) Mégatron-LM

# 2) Vitesse profonde

# 3) YaFSDP


Tests et évaluation

#1) Giskard

# 2) harnais d'évaluation lm


Déploiement et inférence

# 1) vLLM

# 2) CTraduire2


Enregistrement

# 1) Vraira

# 2) Vérifications approfondies


Formation et mise à l'échelle


Un test de réalité

Compte tenu de son ampleur, l'apprentissage distribué (une procédure de formation qui implique plusieurs GPU) est à l'avant-garde de la formation des LLM.

Une façon évidente d'utiliser l'apprentissage distribué consiste à distribuer les données sur plusieurs GPU, à exécuter la transmission directe sur chaque appareil et à calculer les gradients :


Les données peuvent également être non structurées. Les données structurées ne sont affichées que par souci de simplicité.


Pour y parvenir, chaque GPU stocke sa propre copie des poids du modèle et des états de l'optimiseur :



Cependant, le plus gros problème est que ces modèles sont ÉNORMES. Répliquer l’intégralité du modèle sur chaque périphérique GPU est pratiquement impossible.


Qu’en est-il également de la mémoire consommée par les états de l’optimiseur ? Nous n’y avons même pas encore pensé.


Pour plus de contexte, la mémoire consommée par l'optimiseur Adam (l'un des optimiseurs les plus utilisés) équivaut à deux fois les poids du modèle (en précision 32 bits).



En supposant que nous ayons réussi d'une manière ou d'une autre à calculer les gradients, le prochain goulot d'étranglement consiste à les transférer vers d'autres GPU pour synchroniser les modèles.


La méthode naïve (illustré ci-dessous) consiste à transférer les dégradés d'un GPU vers tous les autres GPU, et chaque transfert est équivalent à la taille du modèle.



Bien sûr, il existe des moyens d’optimiser cela, mais ils sont également pratiquement irréalisables à cette échelle.


Voici quelques bibliothèques qui résolvent ce problème.


# 1) Mégatron-LM

Megatron est une bibliothèque d'optimisation développée par NVIDIA pour former des modèles de transformateurs à grande échelle tout en répondant aux limites de l'apprentissage distribué traditionnel.


La bibliothèque affirme que l'on peut former des LLM de plusieurs milliards de paramètres en utilisant le parallélisme de modèles . L'idée principale est de répartir les paramètres du modèle sur plusieurs GPU.


Le parallélisme des modèles peut être combiné avec le parallélisme des données (discuté dans la section ci-dessus).


L'article correspondant publié par NVIDIA mentionne qu'ils ont entraîné efficacement des modèles basés sur des transformateurs jusqu'à 8,3 milliards de paramètres sur 512 GPU NVIDIA.


Franchement, ce n’est pas raisonnablement important, compte tenu de l’ampleur des modèles actuels.


Mais cela a été considéré comme un grand exploit car Megatron a été lancé pour la première fois en 2019 (ère pré-GPT-3) et construire des modèles d’une telle échelle était intrinsèquement difficile à l’époque.


En fait, depuis 2019, quelques itérations supplémentaires de Megatron ont été proposées.


Commencez ici: Megatron-LM GitHub .


# 2) Vitesse profonde

DeepSpeed est une bibliothèque d'optimisation développée par Microsoft qui résout les problèmes de l'apprentissage distribué.


Le papier original a proposé l'algorithme ZeRO - Zero Redundancy Optimizer.


Rappelez-vous que dans la discussion ci-dessus, la configuration d'apprentissage distribué impliquait beaucoup de redondance :

  • Chaque GPU avait les mêmes poids de modèle.

  • Chaque GPU conservait une copie de l'optimiseur.

  • Chaque GPU stockait la même copie dimensionnelle des états de l'optimiseur.


L'algorithme ZeRO (Zero Redundancy Optimizer), comme son nom l'indique, élimine entièrement cette redondance en répartissant complètement les poids, les gradients et les états de l'optimiseur entre tous les GPU.


Ceci est illustré ci-dessous :


Sans entrer dans les détails techniques, cette idée intelligente a permis d’accélérer le processus d’apprentissage avec une charge mémoire considérablement réduite.


De plus, il accélère l’étape d’optimisation d’un facteur N (nombre de GPU).


Le document affirme que ZeRO peut évoluer au-delà de 1 000 milliards de paramètres .


Cependant, dans leurs propres expériences, les chercheurs ont construit un modèle à paramètres 17B – Turing-NLG , le plus grand modèle au monde au 12 mai 2020.


Commencez ici: GitHub DeepSpeed .



En 2022 (après GPT-3), NVIDIA (le créateur de Megatron) et Microsoft (le créateur de DeepSpeed) ont travaillé ensemble pour proposer Megatron-DeepSpeed .


Ils l'ont utilisé pour construire le Megatron-Turing NLG, qui avait des paramètres de 530B, soit trois fois plus grands que le GPT-3.


Calendrier de développement du LLM


#3) YaFSDP

Bien que DeepSpeed soit assez puissant, il possède également diverses limitations pratiques.


Par exemple:

  1. La mise en œuvre de DeepSpeed peut devenir inefficace sur de grands clusters en raison des frais de communication et de la dépendance à l'égard du système. NCCL bibliothèque de communications collectives.

  2. De plus, DeepSpeed transforme considérablement le pipeline de formation, ce qui peut introduire des bugs et nécessiter des tests importants.


YaFSDP est une nouvelle bibliothèque de parallélisme de données qui est une version améliorée de PDSF (un framework dans PyTorch) avec des optimisations supplémentaires, notamment pour les LLM.

En un mot, comparé à FSDP et DeepSpeed, YaFSDP :

  • Alloue dynamiquement de la mémoire aux couches plus efficacement, garantissant que seule la quantité de mémoire nécessaire est utilisée à un moment donné.
  • Élimine « l'effet de cession », réduisant ainsi considérablement les temps d'arrêt des calculs.
  • Tire parti de techniques telles que FlattenParameter , qui combine plusieurs paramètres de couche en un seul grand paramètre avant le partitionnement, ce qui améliore encore l'efficacité et l'évolutivité de la communication.
  • Maintient une interface plus conviviale en affectant uniquement le modèle, mais pas le pipeline de formation.
  • Et plus.


Le tableau suivant compare les résultats de YaFSDP avec les techniques actuelles :


  • YaFSDP est TOUJOURS plus performant que les techniques actuelles.
  • Avec un grand nombre de GPU, YaFSDP atteint des accélérations bien meilleures, ce qui montre sa possibilité d'une meilleure évolutivité.


Commencez ici: YaFSDP GitHub .


Tests et évaluation

Avec cela, nous en avons fini avec la formation et la mise à l’échelle. La prochaine étape consiste à tester et évaluer :


Un défi inhérent à l'évaluation des LLM est qu'ils ne peuvent pas être évalués sur la base de quelques mesures telles que la précision, le score F1, le rappel, etc.


Au lieu de cela, ils doivent être évalués selon plusieurs dimensions telles que la fluidité, la cohérence, l’exactitude factuelle et la robustesse face aux attaques adverses, et cette évaluation est souvent subjective.


Différents outils nous y aident :

#1) Giskard


Giskard est une bibliothèque open source qui nous aide à détecter les problèmes suivants avec les LLM :

  • Hallucinations
  • Désinformation
  • Nocivité
  • Stéréotypes
  • Divulgations d’informations privées
  • Injections rapides


Il fonctionne avec tous les frameworks populaires, tels que PyTorch, TensorFlow, HuggingFace, Scikit-Learn, XGBoost et LangChain. De plus, on peut également l'intégrer avec HuggingFace, Weights & Biases et MLFlow.


Commencez ici: GiskardGitHub .


# 2) harnais d'évaluation lm

Evaluation Harness est un autre outil open source qui soumet les LLM à un processus d'évaluation robuste.


Essentiellement, chacun peut choisir les références par rapport auxquelles il souhaite tester son modèle, les exécuter dans le système, puis recevoir les résultats.

Depuis mai 2024, il propose plus de 60 références académiques standard pour les LLM et une prise en charge simple des invites personnalisées et des mesures d'évaluation, ce qui est difficile avec Giskard.


Voici quelques points de repère courants :

  • Questions et réponses
  • Questions à choix multiple
  • Des tâches qui testent les préjugés sexistes, similaires à ce que les humains seraient capables de faire.
  • Et plus.


Commencez ici: lm-évaluation-harnais GitHub .


Il existe quelques outils supplémentaires, comme Truera et DeepChecks, mais ils sont beaucoup plus complets car ils fournissent des solutions d'évaluation et d'observabilité de bout en bout. Nous les aborderons dans la dernière section.


Si vous souhaitez entrer plus en détail sur l’évaluation LLM, je vous recommande cet article : Article d'évaluation LLM .



Déploiement et inférence

Sur cette base, nous avons évalué notre modèle et l'avons déployé en toute confiance :



Notez que lorsque nous parlons de « déploiement », nous n’entendons pas pousser le modèle vers le cloud. N’importe qui peut faire ça.


Il s'agit plutôt d'atteindre l'efficacité lors des étapes d'inférence afin de réduire les coûts.


# 1) vLLM

vLLM est probablement l'un des meilleurs outils open source pour améliorer l'efficacité de l'inférence LLM.



En un mot, vLLM utilise un nouvel algorithme d'attention pour accélérer l'inférence sans compromettre les performances du modèle.


Les résultats suggèrent qu'il peut offrir un débit environ 24 fois supérieur à celui des HuggingFace Transformers sans nécessiter de modification du modèle.


En conséquence, cela rend les services LLM beaucoup plus abordables pour tout le monde.


Commencez ici: vLLM GitHub .


# 2) CTraduire2

CTranslate2 est un autre moteur d'inférence rapide populaire pour les modèles Transformer.


Pour faire court, la bibliothèque implémente de nombreuses techniques d'optimisation des performances pour les LLM, telles que :

  • Quantification des poids : la quantification réduit la précision des poids des représentations à virgule flottante aux représentations à bits inférieurs, telles que int8 ou int16. Cela réduit considérablement la taille du modèle et l'empreinte mémoire, permettant un calcul plus rapide et une consommation d'énergie inférieure. De plus, les multiplications matricielles s'exécutent également plus rapidement sous des représentations de moindre précision :



  • Fusion de couches : Comme son nom l'indique, la fusion de couches combine plusieurs opérations en une seule opération pendant la phase d'inférence. Bien que les détails techniques exacts dépassent le cadre de cet article, le nombre d'étapes de calcul est réduit par la fusion des couches, ce qui réduit la surcharge associée à chaque couche.
  • Réorganisation par lots : La réorganisation par lots consiste à organiser les lots d'entrée pour optimiser l'utilisation des ressources matérielles. Cette technique garantit que des séquences de longueurs similaires sont traitées ensemble, minimisant ainsi le remplissage et maximisant l'efficacité du traitement parallèle.


L'utilisation de techniques accélère et réduit considérablement l'utilisation de la mémoire des modèles Transformer, à la fois sur le CPU et le GPU.


Commencez ici: CTranslate2 GitHub .


Enregistrement

Le modèle a été mis à l'échelle, testé, produit et déployé et traite désormais les demandes des utilisateurs.


Cependant, il est essentiel de disposer de mécanismes de journalisation robustes pour surveiller les performances du modèle, suivre son comportement et garantir qu'il fonctionne comme prévu dans l'environnement de production.


Cela s'applique non seulement aux LLM, mais à tous les modèles ML du monde réel.



Voici quelques outils et techniques essentiels pour la journalisation dans le cadre des LLM.


# 1) Vraira

Truera n'est pas seulement une solution de journalisation.



Au lieu de cela, il fournit également des fonctionnalités supplémentaires pour tester et évaluer les LLM.


Cela en fait une solution d'observabilité beaucoup plus complète, qui fournit des outils pour suivre les performances de production, minimiser les problèmes tels que les hallucinations et garantir des pratiques d'IA responsables.


Voici quelques fonctionnalités clés :

  • Observabilité LLM : TruEra fournit une observabilité détaillée pour les applications LLM. Les utilisateurs peuvent évaluer leurs applications LLM à l'aide de fonctions de retour d'information et de suivi des applications, ce qui permet d'optimiser les performances et de minimiser les risques tels que les hallucinations.

  • Surveillance et reporting évolutifs : la plate-forme offre une surveillance, des rapports et des alertes complets en termes de performances, d'entrées et de sorties du modèle. Cette fonctionnalité garantit que tous les problèmes tels que la dérive du modèle, le surajustement ou les biais sont rapidement identifiés et résolus grâce à une analyse unique des causes profondes de l'IA.

  • [IMPORTANT] TruLens : TruLens de TruEra est une bibliothèque open source qui permet aux utilisateurs de tester et de suivre leurs applications LLM.

  • Et plus.


L'un des avantages de TruEra est qu'il peut s'intégrer de manière transparente aux piles d'IA existantes, y compris les solutions de développement de modèles prédictifs telles qu'AWS SageMaker, Microsoft Azure, Vertex.ai, etc.


Il prend également en charge le déploiement dans divers environnements, notamment le cloud privé, AWS, Google ou Azure, et s'adapte pour répondre à des volumes de modèles élevés.


Commencez ici: Truera .


# 2) Vérifications approfondies


Deepchecks est une autre solution complète comme TruEra, qui fournit des solutions d'évaluation, de test et de surveillance LLM.


Cependant, la bibliothèque ne se limite pas aux LLM. Au lieu de cela, de nombreux data scientists et ingénieurs en apprentissage automatique exploitent DeepChecks pour divers modèles d'apprentissage automatique dans divers domaines.


Cela dit, leur cadre d’évaluation n’est pas aussi complet et approfondi que celui de Giskard, l’outil dont nous avons parlé plus tôt.


Commencez ici: Vérifications approfondies .


Comme nous voulions que cet article soit concis et rapide, nous n'avons pas couvert tous les outils disponibles, mais nous avons présenté les outils qui seront suffisants pour 90 % des cas d'utilisation.


Voici quelques exemples d’outils que nous avons décidé d’omettre.

  • Formation et mise à l’échelle : Fairscale.
  • Tests et évaluation : TextAttack.
  • Service : Flowise.
  • Journalisation : pondérations et biais, MLFlow, et plus encore.


Si vous souhaitez approfondir davantage de piles d'outils, consultez ceci Dépôt Awesome-LLMOps .


Merci d'avoir lu!