![]() | Il s'agit du référentiel non officiel du livre: Modèles de grande langue: appliquer et mettre en œuvre des stratégies pour les modèles de grands langues (APRESS). Le livre est basé sur le contenu de ce référentiel, mais les ordinateurs portables sont mis à jour, et j'intègre de nouveaux exemples et chapitres. Si vous recherchez le référentiel officiel du livre, avec les ordinateurs portables originaux, vous devez visiter le référentiel Apress, où vous pouvez trouver tous les cahiers dans leur format original tel qu'ils apparaissent dans le livre. Achetez-le à: [Amazon] [Springer] |
Veuillez noter que le cours sur GitHub ne contient pas toutes les informations dans le livre.
Ce cours libre pratique sur les modèles de grandes langues et leurs applications est un développement permanent ??. Je publierai les différentes leçons et échantillons pendant que je les termine.
Le cours offre une expérience pratique en utilisant des modèles d'Openai et de la bibliothèque de visage étreintes. Nous allons voir et utiliser beaucoup d'outils et de pratiques avec de petits projets qui se développeront car nous pouvons appliquer les nouvelles connaissances acquises.
Certains des sujets et technologies couverts dans cette section comprennent: les chatbots, la génération de code, l'API Openai, le visage étreint, les bases de données vectorielles, la Langchain, le réglage fin, le réglage fin PEFT, le réglage invite doux, la Lora, le Qlora, l'évaluation des modèles, la distillation de connaissances.
Chaque leçon est conforme par des cahiers et des articles. Les ordinateurs portables contiennent suffisamment d'informations pour comprendre le code en leur sein, l'article fournit des explications plus détaillées sur le code et le sujet couvert.
Mon conseil est d'ouvrir l'article à côté du cahier et de suivre. De nombreux articles offrent de petits conseils sur les variations que vous pouvez introduire dans les ordinateurs portables. Je recommande de les suivre pour améliorer la clarté des concepts.
La plupart des ordinateurs portables sont hébergés sur Colab, tandis que quelques-uns sont sur Kaggle. Kaggle fournit plus de mémoire dans la version gratuite par rapport à Colab, mais je trouve que la copie et le partage des cahiers sont plus simples dans Colab, et que tout le monde n'a pas de compte Kaggle.
Certains ordinateurs portables nécessitent plus de mémoire que ce que fournit la version gratuite de Colab. Alors que nous travaillons avec des modèles de grandes langues, c'est une situation courante qui se reproduira si vous continuez à travailler avec eux. Vous pouvez exécuter les ordinateurs portables dans votre propre environnement ou opter pour la version pro de Colab.
Chaque ordinateur portable est pris en charge avec un article moyen où le code est expliqué en détail.
Dans cette première section du cours, nous apprendrons à travailler avec l'API OpenAI en créant deux petits projets. Nous allons approfondir les rôles d'Openai et comment fournir les instructions nécessaires au modèle à travers l'invite pour le faire se comporter comme nous le désirons.
Le premier projet est un chatbot de restaurant où le modèle prendra les commandes des clients. S'appuyant sur ce projet, nous construirons un générateur d'instructions SQL. Ici, nous tenterons de créer une invite sécurisée qui n'accepte que les commandes de création SQL et rien d'autre.
Nous utiliserons Openai GPT-3.5 et le panneau pour développer un chatbot simple adapté à un restaurant de restauration rapide. Pendant le cours, nous explorerons les principes fondamentaux de l'ingénierie rapide, y compris la compréhension des différents rôles OpenAI, la manipulation des paramètres de température et la façon d'éviter des injections rapides.
| Panel d'article / article Gradio | Panneau de carnet / cahier Gradio |
|---|
Suivant le même cadre utilisé dans l'article précédent pour créer le chatbot, nous avons apporté quelques modifications pour développer un langage naturel au traducteur SQL. Dans ce cas, le modèle doit être fourni avec les structures du tableau et des ajustements ont été apportés à l'invite pour assurer une fonctionnalité en douceur et éviter tout dysfonctionnement potentiel. Avec ces modifications en place, le traducteur est capable de convertir les requêtes en langage naturel en requêtes SQL. @FMQuaglia a créé un ordinateur portable utilisant DBML pour décrire les tables qui sont de loin un meilleur aperçu que l'original.
| Article / Article Gradio | Notebook / cahier Gradio / Notebook DBML |
|---|
Nous explorerons des techniques d'ingénierie rapides pour améliorer les résultats que nous obtenons des modèles. Comme comment formater la réponse et obtenir une réponse structurée en utilisant quelques échantillons de tir.
| Article | Carnet de notes |
|---|
Une brève introduction aux bases de données vectorielles, une technologie qui nous accompagnera dans de nombreuses leçons tout au long du cours. Nous travaillerons sur un exemple de génération augmentée de récupération en utilisant des informations à partir de divers ensembles de données d'actualités stockés dans ChromAdB.
S'il y a un aspect qui gagne de l'importance dans le monde des modèles de grande langue, il explore comment exploiter les informations propriétaires avec eux. Dans cette leçon, nous explorons une solution possible qui implique le stockage d'informations dans une base de données vectorielle, ChromAdB dans notre cas et l'utiliser pour créer des invites enrichies.
| Article | Carnet de notes |
|---|
Nous avons amélioré le système de chiffon en introduisant une couche de cache sémantique capable de déterminer si une question similaire a déjà été posée. S'il est affirmatif, il récupère les informations d'un système de cache créé avec FAISS au lieu d'accéder à la base de données vectorielle.
L'inspiration et le code de base du cache sémantique présent dans ce cahier existent grâce au cours: https://maven.com/boring-bot/advanced-llm/1/home de Hamza Farooq.
| Article | Carnet de notes |
|---|---|
| Vider | Carnet de notes |
Langchain a été l'une des bibliothèques de l'univers des grands modèles de langue qui a le plus contribué à cette révolution. Il nous permet de chaîner des appels vers des modèles et d'autres systèmes, ce qui nous permet de créer des applications en fonction de grands modèles de langage. Dans le cours, nous l'utiliserons plusieurs fois, créant des projets de plus en plus complexes.
Dans cette leçon, nous avons utilisé Langchain pour améliorer le cahier de la leçon précédente, où nous avons utilisé des données de deux ensembles de données pour créer une invite enrichie. Cette fois, avec l'aide de Langchain, nous avons construit un pipeline responsable de la récupération des données de la base de données vectorielle et de la transmission au modèle de langue. Le cahier est configuré pour fonctionner avec deux ensembles de données différents et deux modèles différents. L'un des modèles est formé pour la génération de texte, tandis que l'autre est formé pour la génération Text2Text.
| Article | Carnet de notes |
|---|
Nous créerons un système de réponse de commentaires à l'aide d'un pipeline à deux modes construit avec Langchain. Dans cette configuration, le deuxième modèle sera responsable de la modération des réponses générées par le premier modèle.
Un moyen efficace d'empêcher notre système de générer des réponses indésirables consiste à utiliser un deuxième modèle qui n'a pas d'interaction directe avec les utilisateurs pour gérer la génération de réponse.
Cette approche peut réduire le risque de réponses indésirables générées par le premier modèle en réponse à l'entrée de l'utilisateur.
Je vais créer des cahiers séparés pour cette tâche. L'un impliquera des modèles d'OpenAI, et les autres utiliseront des modèles open source fournis par le visage des câlins. Les résultats obtenus dans les trois cahiers sont très différents. Le système fonctionne beaucoup mieux avec les modèles OpenAI et LLAMA2.
| Article | Carnet de notes |
|---|---|
| Article Openai | Cahier Openai |
| Article LLAMA2-7B | Cahier llama2-7b |
| Pas d'article | Cahier GPT-J |
Les agents sont l'un des outils les plus puissants au monde des modèles de grande langue. L'agent est capable d'interpréter la demande de l'utilisateur et d'utiliser les outils et les bibliothèques à sa disposition jusqu'à ce qu'il obtienne le résultat attendu.
Avec les agents de Langchain, nous allons créer en quelques lignes l'un des agents les plus simples mais incroyablement puissants. L'agent agira en tant qu'assistant d'analyste de données et nous aidera à analyser les données contenues dans n'importe quel fichier Excel. Il sera en mesure d'identifier les tendances, d'utiliser des modèles, de faire des prévisions. En résumé, nous allons créer un agent simple que nous pouvons utiliser dans notre travail quotidien pour analyser nos données.
| Article | Carnet de notes |
|---|
Dans cet exemple, deux technologies vues précédemment sont combinées: des agents et des bases de données vectorielles. Les informations médicales sont stockées dans ChromAdB, et un agent de Langchain est créé, ce qui ne le fera que lorsque cela est nécessaire pour créer une invite enrichie qui sera envoyée au modèle pour répondre à la question de l'utilisateur.
En d'autres termes, un système de chiffon est créé pour aider un chatbot médical.
Attention!!! Utilisez-le uniquement comme exemple. Personne ne devrait prendre les recommandations de la botte comme celles d'un vrai médecin. Je déclie toute la responsabilité de l'utilisation qui peut être donnée au chatbot. Je l'ai construit uniquement comme un exemple de différentes technologies.
| Article | Carnet de notes |
|---|
Les métriques utilisées pour mesurer les performances des modèles de grands langues sont très différentes de celles que nous avons utilisées dans des modèles plus traditionnels. Nous nous éloignons des mesures comme la précision, le score F1 ou le rappel, et nous nous dirigeons vers des mesures comme Bleu, Rouge ou Meteor.
Ces mesures sont adaptées à la tâche spécifique attribuée au modèle de langue.
Dans cette section, nous explorerons des exemples de plusieurs de ces mesures et comment les utiliser pour déterminer si un modèle est supérieur à un autre pour une tâche donnée. Nous allons nous plonger dans des scénarios pratiques où ces mesures nous aident à prendre des décisions éclairées sur les performances de différents modèles.
Bleu est l'une des premières mesures stabliées pour évaluer la qualité des traductions. Dans le cahier, nous comparons la qualité d'une traduction faite par Google avec d'autres à partir d'un modèle open source de Hugging Face.
| Article WIP | Carnet de notes |
|---|
Nous explorerons l'utilisation de la métrique Rouge pour mesurer la qualité des résumés générés par un modèle de langue. Nous allons utiliser deux modèles T5, l'un d'eux étant le modèle de base T5 et l'autre un réglage fin à base de T5 spécialement conçu pour créer des résumés.
| Article | Carnet de notes |
|---|
Dans cet exemple initial, vous pouvez observer comment utiliser Langsmith pour surveiller le trafic entre les différents composants qui composent l'agent. L'agent est un système de chiffon qui utilise une base de données vectorielle pour construire une invite enrichie et la transmettre au modèle. Langsmith capture à la fois l'utilisation des outils de l'agent et les décisions prises par le modèle, fournissant des informations à tout moment sur les données envoyées / reçues, les jetons consommés, la durée de la requête et tout cela dans un environnement véritablement convivial.
| Article | Carnet de notes |
|---|
Auparavant, dans le cahier, Rouge Metrics: Évaluation des résumés, nous avons appris à utiliser Rouge pour évaluer quel résumé approximatif de celui créé par un humain. Cette fois, nous utiliserons la distance d'intégration et Langsmith pour vérifier quel modèle produit des résumés plus similaires à ceux de référence.
| Article | Carnet de notes |
|---|
Nous prenons l'agent qui fonctionne comme un assistant médical et incorporons Giskard pour évaluer si ses réponses sont correctes. De cette façon, non seulement la réponse du modèle est évaluée, mais également la recherche d'informations dans la base de données vectorielle. Giskard est une solution qui permet d'évaluer une solution de chiffon complète.
| Article | Carnet de notes |
|---|
La bibliothèque LM-Eval d'Eleutherai offre un accès facile aux références académiques qui sont devenues des normes de l'industrie. Il soutient l'évaluation des modèles open source et des API à partir de fournisseurs comme OpenAI, et permet même l'évaluation des adaptateurs créés à l'aide de techniques telles que LORA.
Dans ce cahier, je me concentrerai sur une caractéristique petite mais importante de la bibliothèque: évaluer les modèles compatibles avec la bibliothèque Transformers de Hugging Face.
| Article - WIP | Carnet de notes |
|---|
Dans la section Finetuning & Optimization, nous explorerons différentes techniques telles que le réglage fin rapide ou la LORA, et nous utiliserons la bibliothèque de PEFT Face pour étreindre pour affiner efficacement les modèles de langage de gros. Nous explorerons des techniques comme la quantification pour réduire le poids des modèles.
Dans ce cahier, deux modèles sont formés à l'aide d'un réglage rapide de la bibliothèque PEFT. Cette technique nous permet non seulement de nous entraîner en modifiant les poids de très peu de paramètres, mais nous permet également d'avoir différents modèles spécialisés chargés en mémoire qui utilisent le même modèle fondamental.
Le réglage rapide est une technique additive et les poids du modèle pré-formé ne sont pas modifiés. Les poids que nous modifions dans ce cas sont ceux des jetons virtuels que nous ajoutons à l'invite.
| Article | Carnet de notes |
|---|
Après une brève explication de la fonctionnalité de la technique de réglage fin que Lora, nous affinerons un modèle de la famille Bloom pour lui apprendre à construire des invites qui peuvent être utilisées pour instruire de grands modèles de langue.
| Article | Carnet de notes |
|---|
Nous allons voir une brève introduction à la quantification, utilisée pour réduire la taille de grands modèles de langage grand. Avec la quantification, vous pouvez charger de grands modèles en réduisant les ressources de mémoire nécessaires. Il s'applique également au processus de réglage fin, vous pouvez affiner le modèle dans un seul GPU sans consommer toutes les ressources. Après la brève explication, nous constatons un exemple sur la façon dont il est possible d'affiner un modèle Bloom 7B dans un GPU T4 16 Go sur Google Colab.
| Article | Carnet de notes |
|---|
Cette section est toujours en construction. L'objectif est de construire un programme qui nous emmènera des techniques d'élagage les plus simples pour créer un modèle en utilisant les mêmes techniques utilisées par les principales entreprises dans le domaine, comme Microsoft, Google, Nvidia ou OpenAI, pour construire leurs modèles.
Dans le premier cahier, le processus d'élagage sera appliqué aux couches à action directe d'un modèle Distilgpt2. Cela signifie que le modèle aura des poids réduits dans ces couches spécifiques. Les neurones à tailler sont sélectionnés en fonction de leurs scores d'importance, que nous calculons en utilisant la norme L1 de leurs poids. Il s'agit d'un simple aperçu, pour ce premier exemple, qui peut être utilisé lorsque vous souhaitez créer un modèle taillé qui imite le modèle de base dans tous les domaines.
En modifiant la structure du modèle, un nouveau fichier de configuration doit être créé pour s'assurer qu'il fonctionne correctement avec la bibliothèque transformers .
| Notebook: élagage d'un modèle Distilgpt2. |
|---|
Dans ce premier cahier, nous essayons de reproduire le processus d'élagage utilisé avec le modèle Distilgpt2 mais appliqué à un modèle LLAMA. En ne prenant pas compte des caractéristiques du modèle, le processus d'élagage se traduit par un modèle complètement inutilisable. Ce carnet sert d'exercice pour comprendre à quel point il est crucial de connaître la structure des modèles qui subiront une élagage.
| Notebook: élagage d'un modèle LLAMA3.2 Aproche incorrecte. |
|---|
Le deuxième ordinateur portable aborde les problèmes rencontrés lors de l'application du même processus d'élagage au modèle LLAMA que celui utilisé pour Distilgpt2.
L'approche correcte consiste à traiter les couches MLP du modèle comme des paires plutôt que des couches individuelles et de calculer l'importance des neurones en considérant les deux couches ensemble. De plus, nous passons à l'utilisation du poids absolu maximal pour décider quels neurones restent dans les couches taillées.
| Article de l'élagage Llama3 | Notebook: élagage d'un modèle de modèle LLAMA3.2. |
|---|
Dans ce cahier, nous examinerons un exemple d'élagage en profondeur, qui consiste à retirer des couches entières du modèle. La première chose à noter est que la suppression des couches entières d'un modèle de transformateur a généralement un impact significatif sur les performances du modèle. Il s'agit d'un changement architectural beaucoup plus drastique par rapport à l'élimination simple des neurones des couches MLP, comme le montre l'exemple précédent.
| Notebook: élagage en profondeur un modèle de lama. |
|---|
Dans ce projet initial simple, nous allons développer un générateur SQL à partir du langage naturel. Nous allons commencer par créer l'invite pour implémenter deux solutions: l'une utilisant des modèles OpenAI fonctionnant sur Azure, et l'autre avec un modèle open source de Hugging Face.
| Article | Carnet de notes |
|---|---|
| Créer une invite NL2SQL pour OpenAI | Création rapide pour Openai |
| Vider | Création rapide pour Defog / Sqlcoder |
| Configuration de l'inférence Azure. | Utilisation du point d'inférence Azure |
Dans ce petit projet, nous créerons un nouveau modèle alignant un modèle Microsoft-PHI-3 avec DPO, puis le publiera sur le visage étreint.
| Article | Carnet de notes |
|---|---|
| Vider | Alignement avec le modèle DPO A PHI3-3. |
Dans cette solution initiale, nous concevons une architecture pour un système NL2SQL capable de fonctionner sur une grande base de données. Le système est destiné à être utilisé avec deux ou trois modèles différents. En fait, nous utilisons trois modèles dans l'exemple.
Il s'agit d'une architecture qui permet un coup d'envoi de projet rapide, fournissant un service pour seulement quelques tables dans la base de données, ce qui nous permet d'ajouter plus de tables à notre rythme.
Dans cette solution, nous explorons la puissance transformatrice des intégres et des modèles de langage grand (LLM) dans l'évaluation des risques des clients et la recommandation de produits dans l'industrie financière. Nous allons modifier le format dans lequel nous stockons les informations des clients, et par conséquent, nous modifierons également la façon dont ces informations se déplacent au sein des systèmes, en réalisant des avantages importants.
S'il vous plaît, si vous trouvez des problèmes, ouvrez un problème. Je ferai de mon mieux pour le réparer dès que possible et vous donner du crédit.
Si vous souhaitez apporter une contribution ou suggérer un sujet, n'hésitez pas à commencer une discussion. Je serais ravi de recevoir des opinions ou des conseils.
Ne soyez pas timide, partagez le cours sur vos réseaux sociaux avec vos amis. Connectez-vous avec moi sur LinkedIn ou Twitter et n'hésitez pas à partager tout ce que vous souhaitez ou à poser toutes les questions que vous pourriez avoir.
Donnez une étoile ️ au référentiel. Cela m'aide beaucoup et m'encourage à continuer d'ajouter des leçons. C'est une belle façon de soutenir des cours open source gratuits comme celui-ci.
Tom Kocmi, Christian Federmann, les modèles de grands langues sont des évaluateurs de pointe de la qualité de la traduction. Évaluation des LLM avec LLMS.
Pere Martra, Introduction aux modèles de grande langue avec Openai
React: Synerging Reasoning and Agting dans les modèles de langues. Section Langchain & Agents. Échantillon d'assistant médical.
La puissance de l'échelle pour le réglage rapide économe en paramètres. Section de réglage et d'optimisation fine. Échantillon de réglage rapide.
LORA: Adaptation de faible rang des modèles de grands langues. Section de réglage et d'optimisation fine. Échantillon de réglage fin de Lora.
QLORA: Finetuning efficace des LLM quantifiés. Section de réglage et d'optimisation fine. Échantillon de réglage fin Qlora.
Comment inviter les LLM pour le texte à SQL: une étude dans les paramètres zéro-shot, un seul domaine et inter-domaines. Projet. Langage naturel à SQL.
Saurav Muralidharan, Sharath Truvekere Sreenivas, Raviraj Joshi, Marcin Chochowski, Mostofa Patwary, Mohammad Shoeybi, Bryan Catanzaro, Jan Kautz, Pavlo Molchanov, "Compact Language Models via l'échelle et la distillation," ARXIV PRAPRINT ARXIV: 2407.14679, "ARXIV PRAPRINT ARXIV: 2407.14679," ARXIV PRAPRINT ARXIV: 2407.14679, "ARXIV PRAPRINT ARXIV: 2407. 2024. Disponible sur: https://doi.org/10.48550/arxiv.2407.14679.