Maison >Périphériques technologiques >Industrie informatique >Affliger un LLM open source avec axolotl en utilisant l'optimisation directe des préférences (DPO)
L'émergence de modèles de grandes langues (LLMS) a apporté d'innombrables nouvelles opportunités pour les applications d'IA. Si vous avez toujours voulu affiner votre propre modèle, ce guide vous montrera comment le faire facilement sans écrire de code. Nous utiliserons des outils tels que Axolotl et DPO pour vous guider dans l'ensemble du processus étape par étape.
Le modèle de grande langue (LLM) est un puissant modèle d'IA qui s'entraîne sur des données de texte massives (milliards de caractères) pour prédire la phrase suivante dans une séquence. Cela n'a été possible qu'avec les progrès de l'informatique GPU au cours des 2 à 3 dernières années qui ont permis à un modèle aussi important d'être formé dans quelques semaines.
Vous avez peut-être déjà interagi avec LLM via des produits tels que ChatGpt ou Claude et avez personnellement vécu leur capacité à comprendre et à générer des réponses humaines.
Ne pouvons-nous pas simplement utiliser GPT-4O pour tout gérer? Bien que ce soit le modèle le plus puissant que nous ayons au moment de la rédaction, ce n'est pas toujours l'option la plus pratique. Le réglage fin d'un modèle plus petit (plage de paramètres de 3 à 14 milliards) peut obtenir des résultats comparables à une petite fraction du coût. De plus, le réglage fin vous permet de posséder votre propre propriété intellectuelle et de réduire la dépendance à des tiers.
Assurez-vous de comprendre les différents types de LLMS disponibles avant de peaufiner en profondeur:
Le renforcement de l'apprentissage (RL) est une technique dans laquelle les modèles apprennent en recevant des commentaires sur leur comportement. Il est appliqué aux modèles d'instructions ou aux modèles de dialogue pour améliorer encore la qualité de sa sortie. En règle générale, RL ne fonctionne pas au-dessus du modèle sous-jacent car il utilise un taux d'apprentissage inférieur, ce qui n'est pas suffisant pour apporter des changements significatifs.
DPO est un formulaire RL où le modèle est formé à l'aide des avantages et des inconvénients de la même paire de réponses invite / dialogue. En présentant ces paires, le modèle apprend des exemples favorables et évite de mauvais exemples.
DPO est particulièrement utile lorsque vous souhaitez ajuster le style ou le comportement de votre modèle, par exemple:
Cependant, le DPO ne convient pas à l'enseignement de nouvelles connaissances ou de nouveaux faits sur les modèles. À cette fin, les techniques de génération (RAG) à réglage fin supervisé (SFT) ou à amélioration de la recherche sont plus adaptées.
Dans les environnements de production, vous utilisez généralement les commentaires des utilisateurs pour générer des ensembles de données DPO, tels que:
Si vous manquez de données utilisateur, vous pouvez également créer des ensembles de données synthétiques en tirant parti des LLM plus grandes et plus puissantes. Par exemple, vous pouvez utiliser un modèle plus petit pour générer la mauvaise réponse, puis la corriger avec GPT-4O.
Pour plus de simplicité, nous utiliserons un ensemble de données prêt à l'emploi de HuggingFace: olivermolenschot / alpaca_messages_dpo_test. Si vous examinez l'ensemble de données, vous remarquerez qu'il contient des conseils avec des réponses sélectionnées et rejetées - ce sont de bons et de mauvais exemples. Ces données ont été créées en utilisant la synthèse GPT-3.5-Turbo et GPT-4.
Vous avez généralement besoin d'au moins 500 à 1000 paires de données à former efficacement sans sur-ajustement. Le plus grand ensemble de données DPO contient jusqu'à 15 000 à 20 000 paires de données.
Nous utiliserons Axolotl pour affiner le modèle d'instructions QWEN2.5 3B, qui est actuellement classé n ° 1 dans le classement OpenLLM dans sa catégorie d'échelle. Avec Axolotl, vous pouvez affiner votre modèle sans écrire de code - un seul fichier de configuration YAML est requis. Voici la config.yml que nous utiliserons:
<code class="language-yaml"># ... (YAML configuration remains the same) ...</code>
Pour exécuter la formation, nous utiliserons des services d'hébergement cloud tels que Runpod ou Vultr. Voici ce dont vous avez besoin:
(Ce type de formation est considéré comme un réglage fin complet de LLM et donc très intensif de VRAM. Si vous souhaitez suivre une formation localement sans compter sur les hôtes cloud, vous pouvez essayer d'utiliser Qlora, une forme de réglage fin supervisé.. Bien que DPO et QLORA puissent être combinés en théorie, c'est rare.
Étape pour commencer la formation<code class="language-bash">export HF_HOME=/workspace/hf</code>Cela garantit que le modèle original est téléchargé sur notre stockage de volume persistant.
<code class="language-bash">python -m axolotl.cli.train /workspace/config.yml</code>Regardez! Votre formation devrait commencer. Après avoir téléchargé le modèle et les données de formation à Axolotl, vous devriez voir une sortie similaire à ceci:
<code class="language-yaml"># ... (YAML configuration remains the same) ...</code>
Puisqu'il s'agit d'un ensemble de données plus petit avec seulement 264 lignes, la formation ne devrait prendre que quelques minutes. Le modèle affiné sera enregistré sur / Workspace / DPO-Output.
Vous pouvez utiliser la CLI pour télécharger le modèle sur HuggingFace:
<code class="language-bash">export HF_HOME=/workspace/hf</code>
<code class="language-bash">python -m axolotl.cli.train /workspace/config.yml</code>
Remplacez votre nom / YourRepo par votre nom d'utilisateur et votre nom de référentiel réel.
Pour l'évaluation, il est recommandé d'utiliser des outils tels que l'inférence de génération de texte (TGI) pour héberger le modèle d'origine et le modèle affiné. Ensuite, utilisez le réglage de la température à 0 (pour assurer une sortie déterministe) pour raisonner sur les deux modèles et comparer manuellement les réponses des deux modèles.
Cette approche pratique fournit de meilleures informations que de s'appuyer uniquement sur la formation pour évaluer les mesures de perte, car les mesures de perte peuvent ne pas saisir les subtilités de la génération de langues dans LLM.
Fine-Tuning LLM avec DPO vous permet de personnaliser vos modèles pour mieux répondre aux besoins de votre application tout en gardant les coûts sous contrôle. En suivant les étapes décrites dans cet article, vous pouvez tirer parti de la puissance des outils et ensembles de données open source pour créer des modèles qui répondent à vos exigences spécifiques. Que vous souhaitiez ajuster le style de votre réponse ou mettre en œuvre des mesures de sécurité, DPO offre un moyen pratique d'améliorer LLM.
Je vous souhaite une bonne affineur!
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!