LLaMA 2 : présentation du modèle et didacticiel de démonstration dans Jupyter Notebooks
Le traitement du langage naturel (NLP) est l’un des sous-domaines les plus populaires et les plus couramment utilisés du Machine/Deep Learning. Récemment, cela a été rendu encore plus évident par la prolifération massive de modèles de transformateurs pré-entraînés génératifs (GPT) tels que ChatGPT, Bard et bien d'autres sur divers sites et interfaces sur le Web.
Plus récemment encore, les efforts visant à publier des modèles GPT entièrement open source sont devenus au premier plan de la communauté de l'IA, dépassant apparemment des projets massifs comme Stable Diffusion en termes d'attention du public. Cette récente série de modèles GPT atteignant le secteur public, soit par une version entièrement open source, soit par une licence de recherche plus spécialisée et limitée, montre à quel point l'intérêt du public pour les modèles d'IA faible s'est accru au cours de l'année écoulée. Des projets comme LLaMA ont montré un immense potentiel car ils sont transformés en de nombreux projets alternatifs comme Alpaca, Vicuna, LLaVA et bien d'autres. Le développement de projets permettant une saisie complexe et multimodale dans ce modèle, dans sa forme originale, difficile à interroger, a permis à certains des meilleurs modèles GPT disponibles d'être formés et publiés entièrement en open source ! Notamment, le projet OpenLLaMA a recréé les modèles LLaMA à paramètres 7B et 13B en utilisant un ensemble de données et un paradigme de formation entièrement open source.
Aujourd'hui, nous allons discuter de la version la plus récente et la plus prometteuse de la gamme de modèles GPT : LLaMA 2. LLaMA 2 représente une nouvelle étape en avant pour les mêmes modèles LLaMA qui sont devenus si populaires ces derniers mois. Les mises à jour du modèle incluent un ensemble de données 40 % plus grand, des variantes de discussion affinées sur les préférences humaines à l'aide de l'apprentissage par renforcement avec retour humain (RHLF), et une mise à l'échelle jusqu'à 70 milliards de modèles de paramètres.
Dans cet article, nous commencerons par couvrir plus en détail les nouvelles fonctionnalités et mises à jour du modèle présenté dans la nouvelle version. Ensuite, nous montrerons comment accéder et exécuter les nouveaux modèles dans un bloc-notes Jupyter à l'aide de l'interface Web de génération de texte Oogabooga.
Conditions préalables
Il s'agit d'un tutoriel de niveau intermédiaire qui détaille l'architecture du modèle LLaMA 2 avec une démo. Nous recommandons à tous les lecteurs de se familiariser avec les fonctionnalités générales des transformateurs pré-entraînés génératifs avant de continuer.
Pour suivre ce tutoriel, vous aurez besoin d'un GPU NVIDIA suffisamment puissant. Nous vous recommandons d'utiliser un H100. Aperçu du modèle
Commençons par un aperçu de la nouvelle technologie disponible dans LLaMA 2. Nous commencerons par passer en revue l'architecture originale de LLaMA, qui reste inchangée dans la nouvelle version, avant d'examiner les données d'entraînement mises à jour, les nouvelles variantes de chat et leur méthodologie de réglage RHLF, et les capacités du modèle de paramètres 70B entièrement mis à l'échelle par rapport à d'autres modèles open source et fermés.
L'architecture du modèle LLaMA 2
Les modèles LLaMA et LLaMA 2 sont des modèles de transformateurs pré-entraînés génératifs basés sur l'architecture originale des transformateurs. Nous avons présenté en détail ce qui différencie le modèle LLaMA des itérations précédentes des architectures GPT dans notre article original sur LLaMA, mais pour résumer :
- Les modèles LLaMA comportent une pré-normalisation de type GPT-3. Cela améliore efficacement la stabilité de l'entraînement. En pratique, ils utilisent la fonction de normalisation RMS Norm pour normaliser l'entrée de chaque sous-couche du transformateur plutôt que les sorties. Cela redimensionne la propriété d'invariance et la capacité d'adaptation implicite du taux d'apprentissage
- LLaMA utilise la fonction d'activation SwiGLU plutôt que la fonction d'activation de non-linéarité ReLU, ce qui améliore nettement les performances d'entraînement
- Empruntant au projet GPT-Neo-X, LLaMA propose des intégrations positionnelles rotatives (RoPE) à chaque couche du réseau.
Comme indiqué dans l'annexe de l'article LLaMA 2, les principales différences architecturales par rapport au modèle d'origine sont une longueur de contexte accrue et une attention aux requêtes groupées (GQA). La taille de la fenêtre contextuelle a été doublée, passant de 2 048 à 4 096 jetons. Cette fenêtre de processus plus longue permet au modèle de produire et de traiter beaucoup plus d'informations. Cela facilite notamment la compréhension de longs documents, les historiques de discussions et les tâches de synthèse. De plus, ils ont mis à jour le mécanisme d’attention pour tenir compte de l’ampleur des données contextuelles. ils ont comparé la ligne de base d'attention multi-têtes originale, un format multi-requêtes avec une projection de valeur clé unique et un format d'attention de requêtes groupées avec 8 projections de valeurs clés pour gérer le coût du format MHA original, dont la complexité augmente considérablement avec des fenêtres de contexte ou des tailles de lots accrues.
Ensemble, ces mises à jour permettent à LLaMA de fonctionner nettement mieux que de nombreux modèles concurrents dans une variété de tâches différentes. Comme nous pouvons le voir sur le graphique ci-dessus, fourni sur la page du projet LLaMA 2, LLaMA fonctionne très favorablement ou presque aussi bien par rapport aux modèles GPT spécialisés et alternatifs comme Falcon et MPT. Nous attendons avec impatience les recherches à venir dans les mois à venir montrant comment il se compare aux grands modèles fermés comme GPT-4 et Bard.
Ensemble de formation mis à jour
LLaMA 2 propose un ensemble de formation mis à jour et étendu. Cet ensemble de données serait jusqu'à 40 % plus grand que les données utilisées pour former le modèle LLaMA original. Cela a de bonnes implications, même pour le plus petit modèle LLaMA 2. De plus, ces données ont été explicitement exclues des données provenant de sites qui contiennent apparemment de grandes quantités d'informations privées et personnelles.
Au total, ils se sont entraînés sur 2 000 milliards de jetons de données. Ils ont constaté que ce montant était le plus efficace en termes de compromis coût-performance et ont suréchantillonné les sources les plus factuelles pour réduire l'effet de la désinformation et des hallucinations.
Variantes de chat
La variante Chat LLaMA 2-Chat a été créée après plusieurs mois de recherche sur les techniques d'alignement. Grâce à une fusion de réglage fin supervisé, RHLF et de réglage fin itératif, les variantes Chat représentent une avancée substantielle en termes d'interactivité humaine pour les modèles LLaMA par rapport aux originaux.
Le réglage fin supervisé a été effectué en utilisant les mêmes données et la même méthode que celles utilisées par les modèles LLaMA originaux. Cela a été fait en utilisant des annotations de réponse « utiles » et « sûres », qui guident le modèle vers les bons types de réponses lorsqu'il est ou non conscient de la bonne réponse.
La méthodologie RHLF utilisée par LLaMA 2 impliquait la collecte d'un ensemble massif de données sur les préférences humaines pour la méthodologie de récompense collectée par les chercheurs à l'aide d'équipes d'annotateurs. Ces annotateurs évalueraient la qualité de deux résultats et donneraient une évaluation qualitative des deux résultats les uns par rapport aux autres. Cela permet au modèle de récompenser les réponses préférées, de les pondérer davantage, et de faire l'inverse des réponses mal reçues.
Enfin, à mesure qu'ils collectaient davantage de données, ils ont amélioré de manière itérative les résultats RHLF précédents en entraînant des versions successives du modèle à l'aide des données améliorées.
Pour plus de détails sur les variantes de chat de ces modèles, assurez-vous de consulter le document.
Mise à l'échelle jusqu'à 70 milliards de paramètres
Le plus grand modèle LLaMA 2 compte 70 milliards de paramètres. Le nombre de paramètres fait référence à la quantité de poids, comme dans les variables float32, qui sont ajustés pour correspondre à la quantité de variables de texte en jeu dans le corpus. Le nombre de paramètres correspondant est donc directement corrélé à la capacité et à la taille du modèle. Le nouveau modèle 70B est plus grand que le plus grand modèle 65B sorti avec LLaMA 1. Comme nous pouvons le voir dans le tableau ci-dessus, le modèle 70B mis à l'échelle fonctionne favorablement même par rapport aux modèles à source fermée comme ChatGPT (GPT3.5). Il lui reste encore beaucoup de chemin à parcourir pour correspondre à GPT-4, mais des réglages d'instructions supplémentaires et des projets RHLF de la communauté open source permettront probablement de réduire encore plus cet écart.
Étant donné que ChatGPT a été formé à une échelle de 175 milliards de paramètres, cela rend les réalisations de LLaMA encore plus impressionnantes.
Démo
Passons maintenant à un bloc-notes Jupyter pour voir comment nous pouvons démarrer avec LLaMA 2 pour nos propres projets. Nous recommandons un H100 pour cette tâche, accessible via le cloud.
Nous allons exécuter le modèle en utilisant la version GPTQ exécutée sur l'interface utilisateur Web de génération de texte Oogabooga basée sur Gradio. Cette démo montrera comment configurer le Notebook, télécharger le modèle et exécuter l'inférence.
Installation
Nous commencerons par mettre en place l’environnement. Nous avons lancé notre notebook avec le dépôt WebUI comme répertoire racine. Pour commencer, ouvrons le fichier notebook llama.ipynb
. Cela contient tout ce dont nous avons besoin pour exécuter le modèle dans l'interface utilisateur Web.
Nous commençons par installer les exigences à l'aide du fichier requirements.txt
fourni. Nous devons également mettre à jour quelques packages supplémentaires. L'exécution de la cellule ci-dessous terminera la configuration pour nous :
!pip install -r requirements.txt
!pip install -U datasets transformers tokenizers pydantic auto_gptq gradio
Maintenant que cela est terminé, nous avons tout prêt pour exécuter l’interface utilisateur Web. Ensuite, téléchargeons le modèle.
Téléchargez le modèle
L'interface utilisateur Web de génération de texte Oogabooga est conçue pour rendre l'exécution de l'inférence et de la formation avec des modèles GPT extrêmement simples, et elle fonctionne spécifiquement avec les modèles au format HuggingFace. Pour faciliter l'accès à ces fichiers volumineux, ils fournissent un script de téléchargement de modèle qui facilite le téléchargement de n'importe quel modèle HuggingFace.
Exécutez le code dans la deuxième cellule de code pour télécharger la version 7B de LLaMA 2 avec laquelle exécuter l'interface utilisateur Web. Nous téléchargerons la version optimisée GPTQ du modèle, ce qui réduit considérablement le coût d'exécution du modèle grâce à la quantification.
!python download-model.py TheBloke/Llama-2-7B-GPTQ
Une fois le téléchargement du modèle terminé après quelques minutes, nous pouvons commencer.
Lancez l'application
Nous sommes maintenant prêts à charger l'application ! Exécutez simplement la cellule de code à la fin du bloc-notes pour lancer l'interface utilisateur Web. Vérifiez le résultat de la cellule, recherchez l'URL publique et ouvrez l'interface utilisateur Web pour commencer. Le modèle sera alors chargé automatiquement au format 8 bits.
!python server.py --share --model TheBloke_Llama-2-7B-chat-GPTQ --load-in-8bit --bf16 --auto-devices
Ce lien public est accessible de n’importe où sur n’importe quel navigateur accessible sur Internet.
L'onglet de génération de texte de l'interface Web
Le premier onglet que nous examinerons est l'onglet de génération de texte. C'est ici que nous pouvons interroger le modèle avec des entrées de texte. Ci-dessus, nous pouvons voir un exemple de la variante Chat de LLaMA 2 se voyant poser une série de questions liées à l'architecture de LLaMA.
Il existe un certain nombre de modèles d'invites que nous pouvons utiliser, sélectionnés dans le coin inférieur gauche de la page. Ceux-ci aident à ajuster la réponse donnée par le modèle de chat. Nous pouvons ensuite répondre à la question ou à l'instruction de notre choix. Le modèle nous renverra les résultats en utilisant le lecteur de sortie sur la droite.
Nous tenons également à souligner les onglets paramètres, modèle et formation. Dans l'onglet Paramètres, nous pouvons ajuster les différents hyperparamètres pour l'inférence avec notre modèle. L'onglet Modèle nous permet de charger n'importe quel modèle avec ou sans un modèle LoRA (Low Rank Adaptation) approprié. Enfin, l'onglet formation nous permet de former de nouveaux LoRA sur toutes les données que nous pourrions fournir. Cela peut être utilisé pour recréer des projets comme Alpaca ou Vicuna dans l'interface utilisateur Web.
Pensées finales
LLaMA 2 constitue une avancée significative pour la modélisation open source des grands langages. Il ressort clairement de l'article et des résultats présentés par leur équipe de recherche, ainsi que de notre propre conjecture qualitative après avoir utilisé le modèle, que LLaMA 2 continuera à pousser de plus en plus la prolifération et le développement du LLM. Nous attendons avec impatience de futurs projets basés sur et développant ce projet, comme Alpaca l'a fait auparavant.