Accéder au contenu principal

Distillation du modèle OpenAI : Un guide avec des exemples

Apprenez à distiller des LLM avec l'outil de distillation d'OpenAI. Ce tutoriel vous guide pas à pas dans l'utilisation de GPT-4o et GPT-4o-mini pour générer des commandes Git.
Actualisé 14 févr. 2025  · 8 min de lecture

J'ai essayé OpenAId'OpenAI outil de distillation de modèles-Il nécessite un codage minimal et nous permet de gérer l'ensemble du processus de distillation au sein d'une plateforme unique, de la génération d'ensembles de données à l'affinement des modèles. la mise au point des modèles et l'évaluation de leurs performances.

Dans ce tutoriel, je vais vous aider à démarrer avec l'outil de distillation de modèles d'OpenAI. Tout d'abord, nous couvrirons les bases de la distillation de modèles, puis nous ferons un projet de distillation de démonstration en utilisant l'API de l'API d'OpenAI.

Qu'est-ce que la distillation sur modèle ?

Imaginez un enseignant compétent et bien formé qui enseigne son processus de réflexion et ses connaissances à un élève. Il s'agit là des principes de base du fonctionnement de la distillation assistée par ordinateur.

Dans cette technique, l'enseignant est un grand modèle pré-entraîné et l'élève est un modèle plus petit qui apprend à reproduire les résultats de l'enseignant. Cela permet à l'élève d'effectuer des tâches spécifiques à un niveau comparable à celui de l'enseignant, mais avec moins de ressources.

La distillation de modèles se présente sous de nombreuses formes, chacune ayant ses propres méthodes et objectifs. Dans un cas, nous avons besoin que l'étudiant se contente d'imiter les sorties d'un modèle plus grand. Dans un autre cas, nous voulons inculquer l'approche de résolution de problèmes de l'enseignant au modèle plus petit. En fin de compte, l'objectif est de bénéficier des capacités d'un grand modèle, en utilisant un modèle efficace.

Distillation des connaissances

Une méthode courante pour transférer les connaissances d'un modèle "enseignant" à un modèle "étudiant" consiste à affiner le réglage de l'étudiant sur un ensemble de données constitué d'entrées et de sorties correspondantes générées par l'enseignant.

Au cours de cet processus d'apprentissage supervisé le modèle de l'élève apprend à reproduire les réponses de l'enseignant lorsqu'il est confronté à des données similaires.

Avantages de la distillation sur modèle

Le processus de distillation présente de nombreux avantages :

  • Coût réduit: Les petits modèles sont moins coûteux à utiliser.
  • Réponse plus rapide: L'expérience de l'utilisateur est améliorée par les résultats plus rapides générés par les petits modèles.
  • Accessibilité: Le modèle peut être utilisé dans des environnements où les ressources informatiques sont limitées, tels que plates-formes périphériques ou les appareils mobiles.

Pour en savoir plus sur la distillation, vous pouvez lire cet article : La distillation du LLM expliquée.

Comment mettre en œuvre la distillation de modèles avec l'API OpenAI

Dans cette section, nous allons explorer un exemple de distillation de modèle en utilisant la plateforme OpenAI. Nous nous concentrerons principalement sur pour générer des commandes Git à la demande d'un utilisateur.

Nous allons tout d'abord créer un ensemble de données sur les petits appareils d'OpenAI GPT-4o mini d'OpenAI (étudiant) et évaluer les résultats.

Ensuite, nous utilisons GPT-4o (enseignant) pour traduire les mêmes phrases et affiner le modèle de l'étudiant sur l'ensemble des données produites par l'enseignant.

Enfin, nous devons évaluer le modèle de l'étudiant et déterminer les améliorations apportées.

En résumé, voici les mesures que nous allons prendre :

  1. Sélectionnez les modèles de l'enseignant et de l'élève
  2. Préparez votre jeu de données
  3. Créez des paires d'entrées/sorties pour l'élève.
  4. Évaluer la performance de l'étudiant
  5. Créez des paires d'entrées/sorties pour l'enseignant.
  6. Ajustement de l'élève sur l'ensemble de données de l'enseignant
  7. Évaluer le modèle affiné

Étape 1 : Sélectionnez les modèles de l'enseignant et de l'élève

La première étape de la distillation de modèles consiste à sélectionner l'enseignant et l'élève, en fonction de la tâche envisagée et de votre budget de calcul.

Lorsque vous travaillez avec des modèles open source, il existe une variété de LLM avec des capacités et des tailles différentes. Avec la plateforme d'OpenAI, les options sont limitées.

Un tableau présentant une vue d'ensemble des modèles d'OpenAI, y compris leurs noms, leurs descriptions et leurs capacités.

Pour les besoins de notre exemple, nous sélectionnerons GPT-4o mini pour le modèle étudiant le plus petit et le modèle GPT-4o comme modèle pour l'enseignant.

Le GPT-4o-mini est un modèle relativement petit et un bon candidat pour le rôle d'étudiant. Le GPT-4o est relativement plus grand mais beaucoup plus performant et peut servir d'enseignant efficace pour l'élève.

D'autres options existent, et la modification des modèles ne nécessiterait qu'un effort minimal dans le cadre de notre projet de distillation de modèles.

Étape 2 : Préparez votre jeu de données

Votre jeu de données pour cette tâche doit être suffisamment stimulant pour le modèle de l'étudiant, mais pas trop pour l'enseignant. Les qualités d'un bon ensemble de données, telles que la diversité, la représentativité ou la précision, sont toujours pertinentes dans la distillation de modèles.

Il est très important de disposer d'un ensemble de données suffisamment important pour avoir un impact sur le modèle de l'étudiant. Il n'existe pas de réponse directe à laquestion "Quelle doit être la taille de l'ensemble de données de distillation ?", car elle dépend de la complexité de votre tâche cible et des modèles que vous avez choisis comme enseignant et élève.

Selon la documentation d documentation d'OpenAIquelques centaines d'échantillons peuvent suffire, mais un groupe plus diversifié de milliers d'échantillons peut parfois conduire à de meilleurs résultats.

Notre ensemble de données dans cet article est composé de 386 demandes d'utilisateurs stockées dans un fichier JSON (vous pourriez tout aussi bien les stocker sous la forme d'une liste Python).

{    
    "requests": [
      "Initialize a new Git repository in the current directory.",
      "Clone the repository from GitHub to my local machine.",
      "Create a new branch called 'feature-login'.",
			...
      "Show the differences between the working directory and the staging area.",
      "Stage all modified and deleted files for commit.",
      ]
}

Étape 3 : Créez des paires d'entrées/sorties pour l'élève (facultatif).

Notre ensemble de données est actuellement constitué uniquement d'entrées, et nous devrions également générer des sorties. Les résultats de l'élève ne sont pas nécessaires pour la distillation, mais nous en avons besoin pour obtenir une base de référence pour la précision du modèle de l'élève (étape 4).

Nous utilisons le code ci-dessous pour parcourir l'ensemble des données d'entrée et générer une sortie pour chacune d'entre elles :

def generate_responses():
    with open(JSON_PATH, 'r') as file:
        user_messages = json.load(file)
    
    for sentence in user_messages['requests']:
        # Call the OpenAI model gpt-4o-mini and store the response
        response = client.chat.completions.create(
            model="gpt-4o-mini",
            messages=[
                {"role": "system", "content": system_prompt},
                {
                    "role": "user",
                    "content": sentence
                },
            ],
            store=True,
            metadata={
                "task": "git"
            }
        )

generate_responses()

Notez que nous utilisons store=True lorsque nous appelons le modèle OpenAI. Cet argument enregistrera les paires entrée/sortie dans notre tableau de bord OpenAI, de sorte que nous n'aurons pas besoin de stocker les sorties à l'aide du code.

Afin d'identifier et de filtrer ultérieurement ces complétions de chat, n'oubliez pas d'inclure des métadonnées lors de l'appel de la fonction client.chat.completions.create. Les arguments de ces métadonnées sont arbitraires.

Les résultats générés peuvent être consultés sur le site Achèvements du chat de notre tableau de bord OpenAI.

Capture d'écran de la section "Chat Completions" du tableau de bord de l'OpenAI, montrant une liste des interactions de chat précédentes.

Étape 4 : Évaluer la performance de l'étudiant (facultatif)

Un autre outil d'OpenAI qui s'avère utile pour la distillation de modèles est l'outil d'évaluation des modèles d'OpenAI. Evaluations est l'outil Evaluations. Nous utilisons cet outil pour évaluer les performances du modèle de l'étudiant avant la formation, en tant que mesure de référence. Nous l'utiliserons également plus tard lors de l'évaluation du modèle d'étudiant affiné.

Après avoir filtré les messages complétés à l'étape précédente, cliquez sur le boutonÉvaluer. Nous devons maintenant ajouter des critères de test.

Capture d'écran de l'interface de l'outil d'évaluation de l'OpenAI, montrant les options permettant d'ajouter des critères de test.

Il existe plusieurs méthodes pour évaluer les paires entrée/sortie. Notez que notre ensemble de données actuel est généré automatiquement par les complétions de chat d'OpenAI et ne contient que les entrées et les sorties. Cependant, certains de ces critères nécessitent également uneréférence pour être comparés.

Cette référence pourrait être les résultats générés par un modèle plus sophistiqué, tel que GPT-4o ou o1-preview. Comme le stockage automatique des chats dans OpenAI ne nous permet pas de fournir une telle référence, nous sommes limités à l'utilisation des méthodes Criteria match ou Custom prompt, qui n'ont besoin que d'une entrée et d'une sortie.

Si vous devez utiliser d'autres méthodes, vous ne pouvez pas utiliser les complétions de chat d'OpenAI et devez créer votre fichierJSON avec du code. Ce n'est pas compliqué, mais nous ne nous y attarderons pas dans cet article.

Capture d'écran de l'interface graphique OpenAI pour la configuration des critères

Une fois les évaluations effectuées, vous recevrez vos résultats dans les plus brefs délais.

Étape 5 : Créez des paires d'entrées/sorties pour l'enseignant.

Pour affiner le modèle de l'élève, nous avons besoin d'un ensemble de données de haute qualité généré par l'enseignant. Cette étape est presque identique à l'étape 3 - vous devez seulement changer l'argument model de gpt-4o-mini à gpt-4o.

Étape 6 : Affiner l'élève

De nouveau, dans la section "Chat Completions", filtrez en fonction du modèle de l'enseignant et des métadonnées. Ensuite, sélectionnez le bouton Distiller. Le distillateur d'OpenAI est essentiellement l'outil de mise au point.

Capture d'écran de l'interface de l'outil de réglage fin d'OpenAI, montrant les options de sélection des modèles de base et des hyperparamètres.

Pour le modèle de base, nous choisissons l'étudiant. Les hyperparamètres doivent être expérimentés et testés pour obtenir les meilleurs résultats. Enfin, sélectionnez Create et attendez la fin de la mise au point.

Étape 7 : Évaluer le modèle affiné

Une fois terminé, nous utiliserons à nouveau le code de l'étape 3, en utilisant cette fois le modèle affiné comme argument model. Le nom du modèle affiné est affiché en tant que "Modèle de sortie" sur votre page d'affinage.

def generate_responses():
    with open(JSON_PATH, 'r') as file:
        user_messages = json.load(file)

    for sentence in user_messages['requests']:
        # Call the OpenAI model gpt-4o-mini and store the response
        response = client.chat.completions.create(
            model="ft:gpt-4o-mini-2024-07-18:personal:git:AF7QSF0m",
            messages=[
                {"role": "system", "content": system_prompt},
                {
                    "role": "user",
                    "content": sentence
                },
            ],
            store=True,
            metadata={
                "task": "git"
            }
        )

generate_responses()

Après avoir fini de générer des résultats, utilisez les évaluations pour évaluer la capacité de votre nouveau modèle sur les données d'entrée.

Conclusion

La recette de la distillation d'OpenAI est simple mais directe. C'est d'autant plus utile que vous n'aurez pas à vous soucier d'affiner les modèles vous-même ou d'utiliser du code pour évaluer les résultats.

Les modèles d'OpenAI, même les plus petits, sont déjà très sophistiqués. Veillez à expérimenter les hyperparamètres avant d'affiner le modèle, à préparer des invites adéquates et stimulantes pour l'enseignant et l'élève, et à comparer l'évaluation affinée avec l'évaluation de base.

Avant de vous lancer dans la distillation de votre propre modèle, je vous conseille de lire ces deux ressources OpenAI : Distillation du modèle OpenAI dans l'API et Document sur la distillation de modèles.

Développer des applications d'IA

Apprenez à créer des applications d'IA à l'aide de l'API OpenAI.
Commencez à Upskiller gratuitement

Hesam Sheikh Hassani's photo
Author
Hesam Sheikh Hassani
LinkedIn
Twitter

Étudiante en master d'intelligence artificielle et rédactrice technique en intelligence artificielle. Je partage mes connaissances sur les dernières technologies de l'IA, en rendant la recherche en ML accessible et en simplifiant les sujets complexes liés à l'IA afin que vous restiez à la pointe du progrès.

Sujets

Apprenez à créer des applications d'intelligence artificielle !

cursus

Développer des applications d'IA

23 heures hr
Apprenez à créer des applications alimentées par l'IA avec les derniers outils de développement d'IA, notamment l'API OpenAI, Hugging Face et LangChain.
Afficher les détailsRight Arrow
Commencer le cours
Certification disponible

cours

Développer des systèmes d'IA avec l'API OpenAI

3 hr
3.3K
Tirez parti de l'API OpenAI pour préparer vos applications d'IA à la production.
Voir plusRight Arrow
Apparenté

blog

Les 32 meilleures questions d'entretien sur AWS et leurs réponses pour 2024

Un guide complet pour explorer les questions d'entretien AWS de base, intermédiaires et avancées, ainsi que des questions basées sur des situations réelles. Il couvre tous les domaines, garantissant ainsi une stratégie de préparation bien équilibrée.
Zoumana Keita 's photo

Zoumana Keita

30 min

blog

Les 20 meilleures questions d'entretien pour les flocons de neige, à tous les niveaux

Vous êtes actuellement à la recherche d'un emploi qui utilise Snowflake ? Préparez-vous à répondre à ces 20 questions d'entretien sur le flocon de neige pour décrocher le poste !
Nisha Arya Ahmed's photo

Nisha Arya Ahmed

20 min

blog

Q2 2023 DataCamp Donates Digest

DataCamp Donates a offert plus de 20k bourses d'études à nos partenaires à but non lucratif au deuxième trimestre 2023. Découvrez comment des apprenants défavorisés et assidus ont transformé ces opportunités en réussites professionnelles qui ont changé leur vie.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

blog

2022-2023 Rapport annuel DataCamp Classrooms

À l'aube de la nouvelle année scolaire, DataCamp Classrooms est plus motivé que jamais pour démocratiser l'apprentissage des données, avec plus de 7 650 nouveaux Classrooms ajoutés au cours des 12 derniers mois.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

8 min

blog

Célébration de Saghar Hazinyar : Une boursière de DataCamp Donates et une diplômée de Code to Inspire

Découvrez le parcours inspirant de Saghar Hazinyar, diplômée de Code to Inspire, qui a surmonté les défis en Afghanistan et s'est épanouie grâce à une bourse de DataCamp Donates.
Fereshteh Forough's photo

Fereshteh Forough

4 min

blog

Nous avons fait don de bourses DataCamp Premium à un million de personnes, et ce n'est pas fini.

Réparties entre nos deux programmes d'impact social, DataCamp Classrooms et #DCDonates, les bourses offrent un accès illimité à tout ce que DataCamp Premium a à offrir.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

Voir plusVoir plus