Maison >Périphériques technologiques >Industrie informatique >Affliger un LLM open source avec axolotl en utilisant l'optimisation directe des préférences (DPO)

Affliger un LLM open source avec axolotl en utilisant l'optimisation directe des préférences (DPO)

尊渡假赌尊渡假赌尊渡假赌
尊渡假赌尊渡假赌尊渡假赌original
2025-02-08 09:24:10551parcourir

Fine-Tuning an Open-Source LLM with Axolotl Using Direct Preference Optimization (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.

Qu'est-ce qu'un modèle grand langage (LLM)?

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.

Pourquoi avez-vous besoin de faire affiner LLM?

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.

Comprendre les modèles de base, les modèles d'instructions et les modèles de dialogue

Assurez-vous de comprendre les différents types de LLMS disponibles avant de peaufiner en profondeur:

  • Modèles de base: Ces modèles sont pré-formés sur de grandes quantités de texte non structuré tels que des livres ou des données Internet. Bien qu'ils aient une compréhension inhérente de la langue, ils ne sont pas optimisés pour le raisonnement et produisent une production incohérente. Le développement de modèles de base est de servir de point de départ pour développer des modèles plus professionnels.
  • Modèle d'instructions: Le modèle d'instruction est construit sur le modèle de base et ajusté à l'aide de données structurées (telles que la paire de réponse rapide). Ils sont conçus pour suivre des instructions spécifiques ou répondre aux questions.
  • Modèle de dialogue: est également construit sur le modèle de base, mais contrairement au modèle d'instructions, le modèle de dialogue est formé sur les données de dialogue, ce qui leur permet d'avoir des conversations dans les deux sens.

Que sont l'apprentissage du renforcement et le DPO?

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.

quand utiliser dpo

DPO est particulièrement utile lorsque vous souhaitez ajuster le style ou le comportement de votre modèle, par exemple:

  • Réglage du style: Modifier la longueur, le niveau de détail ou la confiance dans l'expression du modèle de la réponse.
  • Mesures de sécurité: Le modèle de formation refuse de répondre à des invites qui peuvent être dangereuses ou inappropriées.

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.

Créer un ensemble de données DPO

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:

  • Feedback de l'utilisateur: Implémentez le mécanisme similaire / cliquez en réponse.
  • Comparez les choix: présente deux sorties différentes à l'utilisateur et leur demande de choisir le meilleur.

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.

Utilisez axolotl pour affiner le modèle d'instruction QWEN2.5 3B

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>

Configurer un environnement cloud

Pour exécuter la formation, nous utiliserons des services d'hébergement cloud tels que Runpod ou Vultr. Voici ce dont vous avez besoin:

  • Docker Image: cloné l'image Winglian / Axolotl: Image Docker principale fournie par l'équipe Axolotl.
  • Exigences matérielles: GPU VRAM 80 Go (comme le nœud 1 × A100 PCIe) est plus que suffisant pour les modèles de cette taille.
  • Stockage: 200 Go de stockage de volume contiendra tous les fichiers dont nous avons besoin.
  • Version CUDA: Votre version CUDA doit être d'au moins 12.1.

(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

    Définissez le répertoire de cache HuggingFace:
<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.

  1. Créez un fichier de configuration: Enregistrez le fichier config.yml que nous avons créé plus tôt sur /workspace/config.yml.

  2. commencer la formation:

<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.

Téléchargez le modèle sur HuggingFace

Vous pouvez utiliser la CLI pour télécharger le modèle sur HuggingFace:

  1. Installation de CLI de hub huggingface:
<code class="language-bash">export HF_HOME=/workspace/hf</code>
  1. Téléchargez le modèle:
<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.

Évaluer le modèle à réglage fin

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.

Conclusion

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn