Recherche de site Web

LLaMA 2 : un aperçu du modèle et un tutoriel de démonstration dans les Jupyter Notebooks


Le traitement du langage naturel (TLN) est l'un des sous-domaines les plus populaires et les plus couramment utilisés parmi la multitude de sous-domaines de l'apprentissage automatique/profond. Récemment, cela est devenu encore plus évident grâce à la prolifération massive des modèles de transformeurs génératifs pré-entraînés (GPT) tels que ChatGPT, Bard et bien d'autres sur divers sites et interfaces à travers le web.

Plus récemment encore, les efforts pour publier des modèles GPT entièrement open source sont passés au premier plan de la communauté de l'IA, semblant surpasser des projets massifs comme Stable Diffusion en termes d'attention publique. Cette récente série de modèles GPT atteignant le secteur public, soit par une publication entièrement open source, soit par une licence de recherche plus spécialisée et limitée, montre à quel point l'intérêt public pour les modèles d'IA faible a augmenté au cours de l'année passée. Des projets comme LLaMA ont montré un potentiel immense en se déclinant en de nombreux projets alternatifs comme Alpaca, Vicuna, LLaVA et bien d'autres. Le développement de projets permettant des entrées complexes et multimodales pour ce modèle, originalement difficile à interroger, a permis à certains des meilleurs modèles GPT disponibles d'être entraînés et publiés entièrement en open source ! Notamment, le projet OpenLLaMA a recréé les modèles LLaMA de 7 milliards et 13 milliards de paramètres en utilisant un ensemble de données et un paradigme d'entraînement entièrement open source.

Aujourd'hui, nous allons discuter de la version la plus récente et prometteuse de la ligne de modèles GPT : LLaMA 2. LLaMA 2 représente une nouvelle avancée pour les mêmes modèles LLaMA qui sont devenus si populaires au cours des derniers mois. Les mises à jour du modèle incluent un ensemble de données 40 % plus grand, des variantes de chat ajustées en fonction des préférences humaines en utilisant l'apprentissage par renforcement avec retour humain (RHLF), et une montée en échelle jusqu'à des modèles de 70 milliards de paramètres.

Dans cet article, nous commencerons par présenter 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 aux nouveaux modèles et les exécuter dans un Jupyter Notebook en utilisant l'interface Web Oogabooga Text Generation.

Prérequis

Ceci est un tutoriel de niveau intermédiaire qui détaille l'architecture du modèle LLaMA 2 avec une démonstration. Nous recommandons à tous les lecteurs d'être familiarisés avec le fonctionnement général des Transformers pré-entraînés génératifs avant de continuer.

Pour suivre ce tutoriel, vous aurez besoin d'un GPU NVIDIA suffisamment puissant. Nous recommandons d'utiliser un H100. Vue d'ensemble 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, ainsi que les capacités du modèle entièrement dimensionné de 70 milliards de paramètres par rapport à d'autres modèles open source et propriétaires.

L'architecture du modèle LLaMA 2

Les modèles LLaMA et LLaMA 2 sont des modèles de transformateurs génératifs pré-entraînés basés sur l'architecture originale des Transformers. Nous avons passé en revue ce qui distingue le modèle LLaMA des itérations précédentes des architectures GPT en détail dans notre article original sur LLaMA, mais pour résumer :

  • Les modèles LLaMA disposent d'une pré-normalisation similaire à celle de GPT-3. Cela améliore effectivement 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 transformeur plutôt que les sorties. Cela re-dimensionne 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 non linéaire ReLU, ce qui améliore nettement les performances de l'entraînement
  • S'inspirant du projet GPT-Neo-X, LLaMA dispose d'embeddings positionnels rotatifs (RoPE) à chaque couche du réseau.

Comme indiqué dans l'appendice de l'article sur LLaMA 2, les principales différences architecturales par rapport au modèle original sont l'augmentation de la longueur du contexte et l'attention à requêtes groupées (GQA). La fenêtre de contexte a été doublée, passant de 2048 à 4096 tokens. Cette fenêtre de traitement plus longue permet au modèle de produire et de traiter beaucoup plus d'informations. Cela aide notamment à la compréhension de documents longs, à l'historique des discussions et aux tâches de résumé. De plus, ils ont mis à jour le mécanisme d'attention pour gérer l'ampleur des données contextuelles. Ils ont comparé le modèle de référence original Multi-Head attention, un format à requête multiple avec projection unique Key-Value, et un format d'attention à requêtes groupées avec 8 projections Key-Value pour gérer le coût du format MHA original, qui augmente considérablement en complexité avec l'augmentation des fenêtres de contexte ou des tailles de lot.

Ensemble, ces mises à jour permettent à LLaMA de fonctionner de manière significativement meilleure que de nombreux modèles concurrents sur une variété de tâches différentes. Comme nous pouvons le voir sur le graphique ci-dessus, fourni par la page du projet LLaMA 2, LLaMA obtient des performances très favorables ou presque équivalentes lorsqu'il est comparé à des modèles GPT spécialisés et alternatifs comme Falcon et MPT. Nous attendons avec impatience les recherches à venir dans les prochains mois montrant comment il se compare aux grands modèles propriétaires comme GPT-4 et Bard.

Jeu de formation mis à jour

LLaMA 2 dispose d'un ensemble de données d'entraînement mis à jour et étendu. Il est prétendu que cet ensemble de données est jusqu'à 40 % plus grand que les données utilisées pour entraîner 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 filtrées pour exclure les données provenant de sites qui semblent contenir de grandes quantités d'informations privées et personnelles.

Au total, ils se sont entraînés sur 2 billions de tokens de données. Ils ont constaté que cette quantité fonctionnait le mieux 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 grâce à plusieurs mois de recherche sur les techniques d'alignement. Grâce à une combinaison de réglage fin supervisé, de RHLF et de réglage fin itératif, les variantes Chat représentent un progrès substantiel en termes d'interactivité humaine pour les modèles LLaMA par rapport aux originaux.

L’affinement supervisé a été réalisé 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éponses « utiles » et « sûres », qui guident le modèle vers le type de réponses approprié lorsqu’il connaît ou ne connaît pas la bonne réponse.

La méthodologie RHLF utilisée par LLaMA 2 impliquait la collecte d'un ensemble massif de données de préférence humaine pour la méthodologie de récompense, collectées par les chercheurs à l'aide d'équipes d'annotateurs. Ces annotateurs évaluaient deux sorties pour leur qualité et donnaient une évaluation qualitative des deux sorties en les comparant l'une à l'autre. Cela permet au modèle de récompenser les réponses préférées, de les pondérer plus fortement, et de faire l'inverse pour les réponses mal reçues.

Enfin, à mesure qu'ils recueillaient plus de données, ils ont itérativement amélioré les résultats précédents de RHLF en entraînant des versions successives du modèle en utilisant les données améliorées.

Pour plus de détails sur les variantes de chat de ces modèles, assurez-vous de consulter l'article.

Passer à 70 milliards de paramètres

Le plus grand modèle LLaMA 2 possède 70 milliards de paramètres. Le nombre de paramètres fait référence au nombre de poids, comme dans les variables float32, qui sont ajustés pour correspondre à la quantité de variables textuelles présentes dans le corpus. Le nombre de paramètres correspondant est donc directement lié à la capacité et à la taille du modèle. Le nouveau modèle 70B est plus grand que le plus grand modèle 65B publié avec LLaMA 1. Comme nous pouvons le voir dans le tableau ci-dessus, le modèle 70B mis à l’échelle performe favorablement même comparé à des modèles propriétaires comme ChatGPT (GPT-3.5). Il lui reste encore du chemin à parcourir pour égaler GPT-4, mais des ajustements supplémentaires par instruction et des projets RHLF de la communauté open source permettront probablement de réduire encore davantage cet écart.

Étant donné que ChatGPT a été entraîné à une échelle de 175 milliards de paramètres, cela rend les réalisations de LLaMA encore plus impressionnantes.

Démo

Passons maintenant à un Jupyter Notebook pour voir comment nous pouvons commencer à utiliser 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 fonctionnant sur l'interface 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 lancer l'inférence.

Configuration

Nous allons commencer par configurer 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. Il contient tout ce dont nous avons besoin pour faire fonctionner le modèle dans l'interface web.

Nous commençons par installer les exigences en utilisant le fichier requirements.txt fourni. Nous devons également mettre à jour quelques packages supplémentaires. L'exécution de la cellule ci-dessous complétera la configuration pour nous :

!pip install -r requirements.txt
!pip install -U datasets transformers tokenizers pydantic auto_gptq gradio

Maintenant que cela a été exécuté, nous avons tout prêt pour lancer l'interface web. Ensuite, téléchargeons le modèle.

Télécharger le modèle

L'interface web de génération de texte Oogabooga est conçue pour rendre l'exécution de l'inférence et l'entraînement avec les modèles GPT extrêmement facile, 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èles qui permet de télécharger facilement 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 afin de faire fonctionner l'interface web. Nous allons télécharger 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 que le modèle aura fini de se télécharger après quelques minutes, nous pourrons commencer.

Lancer l'application

Nous sommes maintenant prêts à charger l'application ! Il suffit d'exécuter la cellule de code à la fin du Notebook pour lancer l'interface web. Vérifiez la sortie de la cellule, trouvez l'URL publique et ouvrez l'interface web pour commencer. Le modèle sera 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 peut être consulté de n'importe où sur n'importe quel navigateur accessible à Internet.

L'onglet de génération de texte de l'interface Web

Le premier onglet que nous allons examiner est l'onglet de génération de texte. C'est là que nous pouvons interroger le modèle avec des entrées textuelles. Ci-dessus, nous pouvons voir un exemple de la variante Chat du LLaMA 2 à laquelle on pose une série de questions liées à l'architecture du LLaMA.

Il existe un certain nombre de modèles de prompt 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 entrer la question ou l'instruction que nous souhaitons. Le modèle nous renverra les résultats en continu en utilisant le lecteur de sortie à droite.

Nous aimerions également attirer votre attention sur 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 Web.

Pensées de clôture

LLaMA 2 est un pas important en avant pour la modélisation de langage à grande échelle open source. Il ressort clairement du document 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 à faire progresser la prolifération et le développement des LLM de plus en plus loin. Nous attendons avec impatience les futurs projets basés sur ce projet et l'étendant, comme Alpaca l'a fait auparavant.