Partager via


Ajuster les modèles à l’aide de déploiements standard dans Azure AI Foundry

Important

Les éléments marqués (aperçu) dans cet article sont actuellement en aperçu public. Cette version préliminaire est fournie sans contrat de niveau de service, et nous la déconseillons pour les charges de travail en production. Certaines fonctionnalités peuvent être limitées ou non prises en charge. Pour plus d’informations, consultez Conditions d’utilisation supplémentaires pour les préversions de Microsoft Azure.

Azure AI Foundry vous permet de personnaliser des modèles de langage volumineux sur vos jeux de données spécifiques par le biais d’un processus appelé réglage précis. Ce processus offre des avantages significatifs en permettant la personnalisation et l’optimisation adaptées à des tâches et applications spécifiques. Les avantages incluent l’amélioration des performances, l’efficacité des coûts, la latence réduite et les sorties personnalisées.

Rentabilité : le réglage précis d’Azure AI Foundry peut être plus économique, en particulier pour les déploiements à grande échelle, grâce à la tarification Standard.

Variété de modèles : le réglage précis du déploiement standard d’Azure AI Foundry offre une prise en charge des modèles propriétaires et open source, ce qui permet aux utilisateurs de sélectionner les modèles qui conviennent le mieux à leurs besoins sans être limités à un seul type.

Personnalisation et contrôle : Azure AI Foundry offre une meilleure personnalisation et un meilleur contrôle du processus d’optimisation, ce qui permet aux utilisateurs d’adapter plus précisément les modèles à leurs besoins spécifiques.

Dans cet article, vous allez découvrir comment affiner les modèles déployés à l’aide de déploiements standard dans Azure AI Foundry.

Conditions préalables

  • Un abonnement Azure avec un moyen de paiement valide. Les abonnements Azure gratuits ou d’essai ne fonctionnent pas. Si vous ne disposez pas d’un abonnement Azure, commencez par créer un compte Azure payant.

  • Un accès au Portail Azure.

  • Un projet Azure AI Foundry.

  • Les contrôles d’accès en fonction du rôle Azure (RBAC Azure) sont utilisés pour accorder l’accès aux opérations dans le portail Azure AI Foundry. Pour effectuer les étapes décrites dans cet article, votre compte d’utilisateur doit avoir le rôle Propriétaire ou Contributeur pour l’abonnement Azure. Pour plus d’informations sur les autorisations, consultez Contrôle d’accès en fonction du rôle sur le portail Azure AI Foundry.

Vérifiez l’inscription du fournisseur d’abonnement

Vérifiez que l’abonnement est inscrit auprès du fournisseur de ressources Microsoft.Network.

  1. Connectez-vous au portail Azure.
  2. Sélectionnez Abonnements dans le menu de gauche.
  3. Sélectionnez l’abonnement que vous souhaitez utiliser.
  4. Sélectionnez Paramètres>Fournisseurs de ressources dans le menu de gauche.
  5. Ajoutez Microsoft.Network à la liste des fournisseurs de ressources s’il n’est pas dans la liste.

Trouver des modèles avec un support de réglage fin

Le catalogue de modèles AI Foundry permet d'affiner la prise en charge de plusieurs types de modèles, y compris les compléments de conversation et la génération de texte. Pour obtenir la liste des modèles qui prennent en charge le réglage précis et les régions Azure de prise en charge du réglage précis, consultez la disponibilité des régions pour les modèles en tant que déploiement standard. Les tâches d’optimisation sont disponibles uniquement pour les utilisateurs dont l’abonnement Azure appartient à un compte de facturation dans un pays/une région où le fournisseur de modèles a rendu l’offre disponible. Si l’offre est disponible dans la région concernée, les utilisateurs doivent disposer d’une ressource de projet dans la région Azure où le modèle est disponible pour le déploiement ou l’ajustement, le cas échéant.

Vous pouvez également vous rendre sur le portail Azure AI Foundry pour afficher tous les modèles qui contiennent la prise en charge du réglage fin :

  1. Connectez-vous à Azure AI Foundry.

  2. Si vous n’êtes pas déjà dans votre projet, sélectionnez-le.

  3. Accédez au catalogue de modèle.

  4. Sélectionnez le filtre Tâches de réglage précis.

    Capture d’écran des options de filtre pour l'optimisation du catalogue de modèles.

  5. Sélectionnez Tout ou sélectionnez une tâche spécifique.

Préparer les données pour l’ajustement

Préparez vos données d’entraînement et de validation pour affiner votre modèle. Vos données d’entraînement et de validation se composent d’exemples d’entrée et de sortie pour la façon dont vous souhaitez que le modèle s’exécute.

Assurez-vous que vos exemples d’apprentissage suivent le format attendu pour l’inférence. Pour affiner efficacement les modèles, assurez-vous d’un jeu de données diversifié en conservant l’équilibre des données, y compris différents scénarios, et en affinant périodiquement les données d’apprentissage pour s’aligner sur les attentes réelles. Ces actions conduisent en fin de compte à des réponses plus précises et plus équilibrées du modèle.

Conseil / Astuce

Différents types de modèles nécessitent un format différent de données d’entraînement.

Exemple de format de fichier

Le type de fichier pris en charge est JSON Lines. Les fichiers sont chargés dans le magasin de données par défaut et mis à disposition dans votre projet.

    {"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "Is Xbox better than PlayStation?"}, {"role": "assistant", "content": "I apologize, but I cannot provide personal opinions. My primary job is to assist you with any issues related to your Xbox device. Do you have any Xbox-related issues that need addressing?"}]}
    {"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "Can I play PC games on my Xbox?"}, {"role": "assistant", "content": "While Xbox consoles don't natively support PC games, they can play an array of Xbox games, many of which are also available on PC. Can I assist you with finding games compatible with your Xbox device?"}]}
    {"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "I'm having trouble connecting my Xbox to the Wi-Fi."}, {"role": "assistant", "content": "No worries, let's go through the network settings on your Xbox. Can you please tell me what happens when you try to connect it to the Wi-Fi?"}]}

Utiliser l’Assistant Optimiser un modèle

Le portail Azure AI Foundry fournit l’Assistant Création d’un modèle personnalisé, ce qui vous permet de créer et d’entraîner de manière interactive un modèle affiné pour votre ressource Azure.

Sélectionnez le modèle de base

  1. Choisissez le modèle à affiner dans le catalogue de modèles Azure AI Foundry.
  2. Dans la page Détails du modèle, sélectionnez ajuster. Certains modèles de base prennent en charge le déploiement standard et le calcul managé, tandis que d’autres prennent en charge l’un ou l’autre.
  3. Si vous avez présenté les options de déploiement standard et de calcul managé, sélectionnez le déploiement standard pour le réglage précis. Cette action ouvre un Assistant qui affiche des informations sur le réglage Standard de votre modèle.

Choisir vos données d’entraînement

L’étape suivante consiste à choisir les données d’entraînement préparées existantes ou à charger de nouvelles données d’entraînement préparées à utiliser lors de la personnalisation de votre modèle. Le volet Données d’apprentissage affiche les jeux de données existants précédemment chargés et fournit également des options permettant de charger de nouvelles données d’apprentissage.

  • Si vos données d’apprentissage sont déjà chargées sur le service, sélectionnez Fichiers à partir d’Azure AI Foundry.
    • Sélectionnez le fichier dans la liste déroulante affichée.
  • Pour charger de nouvelles données d’apprentissage, utilisez l’une des options suivantes :
    • Sélectionnez Fichier local pour charger des données d’apprentissage à partir d’un fichier local.
    • Sélectionnez l’objet blob Azure ou d’autres emplacements web partagés pour importer des données d’apprentissage à partir d’objets blob Azure ou d’un autre emplacement web partagé.

Pour des fichiers de données volumineux, nous vous recommandons d’importer à partir d’un magasin Blob Azure. Pour plus d’informations sur le stockage Blob Azure, consultez Qu’est-ce qu’un stockage Blob Azure ?

Charger des données d’apprentissage à partir d’un fichier local

Vous pouvez charger un nouveau jeu de données d’entraînement sur le service à partir d’un fichier local à l’aide de l’une des méthodes suivantes :

  • Faites glisser et déposez le fichier dans la zone cliente du volet Données d’entraînement, puis sélectionnez Charger le fichier.
  • Sélectionnez Rechercher un fichier dans la zone cliente du volet Données d’entraînement, choisissez le fichier à charger à partir de la boîte de dialogue Ouvrir , puis sélectionnez Charger le fichier. Après avoir sélectionné et chargé le jeu de données d’apprentissage, sélectionnez Suivant pour continuer.

Choisir vos données de validation

L’étape suivante fournit des options pour configurer le modèle afin d’utiliser des données de validation dans le processus d’apprentissage. Si vous ne souhaitez pas utiliser de données de validation, vous pouvez choisir Suivant pour continuer vers les options avancées du modèle. Sinon, si vous avez un jeu de données de validation, vous pouvez choisir les données de validation préparées existantes ou charger de nouvelles données de validation préparées à utiliser lors de la personnalisation de votre modèle. Le volet Données de validation affiche les jeux de données d’apprentissage et de validation existants précédemment chargés et fournit des options vous permettant de charger de nouvelles données de validation.

Fractionner les données d’apprentissage

Vous pouvez diviser automatiquement vos données d’apprentissage pour générer un jeu de données de validation. Après avoir sélectionné fractionnement automatique des données d’entraînement, sélectionnez Suivant pour continuer.

Utiliser des données existantes dans Azure AI Foundry

  • Si vos données de validation sont déjà chargées dans le service, sélectionnez Choisir un jeu de données.
    • Sélectionnez le fichier dans la liste affichée dans le volet Données de validation.
  • Pour charger de nouvelles données de validation, utilisez l’une des options suivantes :
    • Sélectionnez Fichier local pour charger des données de validation à partir d’un fichier local.
    • Sélectionnez l’objet blob Azure ou d’autres emplacements web partagés pour importer des données de validation à partir d’objets blob Azure ou d’un autre emplacement web partagé. Pour des fichiers de données volumineux, nous vous recommandons d’importer à partir d’un magasin Blob Azure. Les fichiers volumineux peuvent devenir instables lors du chargement via des formulaires multipart, car les requêtes sont atomiques et ne peuvent pas être retentées ou reprises.

Remarque

  • Comme pour les fichiers de données d’apprentissage, les fichiers de données de validation doivent être mis en forme en tant que fichiers JSONL,
  • encodé en UTF-8 avec une marque d’ordre d’octet (BOM). La taille du fichier doit être inférieure à 512 Mo.

Charger des données de validation à partir d’un fichier local

Vous pouvez charger un nouveau jeu de données de validation sur le service à partir d’un fichier local à l’aide de l’une des méthodes suivantes :

  • Faites glisser et déposez le fichier dans la zone cliente du volet Données de validation, puis sélectionnez Charger le fichier.
  • Sélectionnez Rechercher un fichier dans la zone cliente du volet Données de validation , choisissez le fichier à charger à partir de la boîte de dialogue Open, puis sélectionnez Charger le fichier. Après avoir sélectionné et chargé le jeu de données de validation, sélectionnez Suivant pour continuer.

Configurer les paramètres de tâche

L'assistant de réglage du modèle affiche les paramètres d'entraînement de votre modèle ajusté dans le volet Paramètres de la tâche. Les paramètres disponibles sont les suivants :

Nom Type Description
batch_size entier Taille de lot à utiliser pour la formation. La taille du lot est le nombre d’exemples de la formation utilisés pour entraîner un seul passage avant et arrière. En général, nous avons constaté que les tailles de lot plus grandes ont tendance à fonctionner mieux pour les jeux de données plus volumineux. La valeur par défaut et la valeur maximale de cette propriété sont propres à un modèle de base. Une taille de lot plus grande signifie que les paramètres de modèle sont mis à jour moins souvent, mais avec une variance plus faible.
learning_rate_multiplier nombre Multiplicateur de taux de formation à utiliser pour la formation. Le taux d’apprentissage de réglage est le taux d’apprentissage d’origine utilisé pour le pré-entraînement multiplié par cette valeur. Les taux d’apprentissage plus importants ont tendance à mieux fonctionner que les tailles de lot plus grandes. Nous vous recommandons d’expérimenter des valeurs comprises entre 0,02 et 0,2 pour voir ce qui produit les meilleurs résultats. Un taux d’apprentissage plus faible peut être utile pour éviter un surajustement.
n_epochs entier Nombre d’époques pour lequel effectuer la formation du modèle. Une époque fait référence à un cycle complet dans le jeu de données de formation.

Sélectionnez Par défaut pour utiliser les valeurs par défaut du travail d’ajustement, ou sélectionnez Personnalisé pour afficher et modifier les valeurs des hyperparamètres. Lorsque les valeurs par défaut sont sélectionnées, nous déterminons la valeur correcte par algorithme en fonction de vos données de formation. Après avoir configuré les options avancées, sélectionnez Suivant pour passer en revue vos choix et effectuer l’apprentissage de votre modèle ajusté.

Passez en revue vos choix et entraîner votre modèle

Le volet Révision de l’assistant affiche des informations sur vos choix de configuration.

Si vous êtes prêt à entraîner votre modèle, sélectionnez Démarrer le travail d’entraînement pour démarrer le travail de réglage précis et revenir à l’onglet Modèles .

Vérifier l’état de votre modèle personnalisé

L’onglet Réglage précis affiche des informations sur votre modèle personnalisé. L’onglet inclut des informations sur l’état et l’ID de travail de la tâche affinée pour votre modèle personnalisé. Une fois la tâche terminée, l’onglet affiche l’ID de fichier du fichier de résultat. Vous devrez peut-être sélectionner Actualiser pour afficher un état mis à jour pour le travail d’entraînement du modèle.

Capture d’écran du tableau de bord des projets en cours d’exécution.

Après avoir démarré une tâche de réglage précis, un certain temps peut être nécessaire pour qu’elle s’achève. Votre tâche peut être mise en file d’attente derrière d’autres tâches sur le système. L’apprentissage de votre modèle peut prendre quelques minutes ou quelques heures selon le modèle et la taille du jeu de données. Voici quelques-unes des tâches que vous pouvez effectuer sous l’onglet Modèles :

  • Vérifiez l’état du travail de réglage précis de votre modèle personnalisé dans la colonne État de l’onglet Modèles personnalisés.
  • Dans la colonne Nom du modèle, sélectionnez le nom du modèle pour afficher plus d’informations sur le modèle personnalisé. Vous pouvez voir l’état de la tâche de réglage précis, les résultats de la formation, les événements liés à l’entraînement et les hyperparamètres utilisés dans la tâche.
  • Sélectionnez Actualiser pour mettre à jour les informations sur la page.

Capture d’écran du tableau de bord des détails de l’optimisation.

Scénarios d’entreprise pris en charge pour le réglage précis

Plusieurs scénarios d’entreprise sont pris en charge pour le réglage précis du déploiement standard. Le tableau ci-dessous présente les configurations prises en charge pour la mise en réseau et l’authentification du stockage utilisateur pour garantir une opération fluide dans les scénarios d’entreprise :

Remarque

  • L’authentification des connexions aux données peut être modifiée via AI Foundry en cliquant sur la connexion de l'entrepôt de données dans laquelle votre jeu de données est stocké, puis naviguez vers le paramètre détails d’accès>Méthode d’authentification.
  • L’authentification de stockage peut être modifiée dans >Paramètres>Configurations de la page >Autoriser l’accès de la clé du compte de stockage.
  • La mise en réseau du stockage peut être modifiée dans la page >Mise en réseau du stockage Azure.
Mise en réseau du stockage Authentification de stockage Authentification de la connexion de données Soutien
Accès réseau public = activé Clé de compte activée SAP/clé de compte Oui, l’expérience utilisateur et le SDK
Accès réseau public = activé Clé de compte désactivée Authentification basée sur Entra (Credentialless) Oui, l’expérience utilisateur et le SDK

Remarque : pour l’expérience utilisateur, vous devrez peut-être ajouter un lecteur de données Blob de stockage ou un contributeur aux données blob de stockage pour votre ID d’utilisateur sur le compte de stockage, ou modifier l’authentification de la connexion pour utiliser la clé de compte/jeton SAP
Activé à partir de réseaux virtuels et d’adresses IP sélectionnés Clé de compte activée Clé de compte Oui, l’expérience utilisateur et le SDK

Remarque : pour l’expérience utilisateur, l’adresse IP du calcul exécutant le navigateur doit se trouver dans la liste sélectionnée
Activé à partir de réseaux virtuels et d’adresses IP sélectionnés Clé de compte activée SAS Oui, l’expérience utilisateur et le SDK

Remarque : pour l’expérience utilisateur, l’adresse IP du calcul exécutant le navigateur doit se trouver dans la liste sélectionnée
Activé à partir de réseaux virtuels et d’adresses IP sélectionnés Clé de compte désactivée Authentification basée sur Entra (Credentialless) Oui, l’expérience utilisateur et le SDK.

Remarque : pour l’expérience utilisateur, vous devrez peut-être ajouter un lecteur de données Blob de stockage ou un contributeur de données blob de stockage pour votre ID d’utilisateur sur le compte de stockage, ou modifier l’authentification de la connexion pour utiliser la clé de compte/jeton SAP. Vérifiez également que l’adresse IP du calcul exécutant le navigateur doit se trouver dans la liste sélectionnée
Accès au réseau public = Désactivé Clé de compte activée SAP/clé de compte Oui, l’expérience utilisateur et le SDK.

Remarque : pour que le chargement et la soumission des données d’expérience utilisateur fonctionnent, l’espace de travail doit être accessible à partir du réseau virtuel disposant d’un accès approprié au stockage
Accès au réseau public = Désactivé Clé de compte désactivée Authentification basée sur Entra (Credentialless) Oui, l’expérience utilisateur et le SDK.

Remarque : pour que le chargement et la soumission des données d’expérience utilisateur fonctionnent, l’espace de travail doit être accessible à partir du réseau virtuel disposant d’un accès approprié au stockage

Les scénarios ci-dessus doivent également fonctionner dans un espace de travail de réseau virtuel managé. Consultez la configuration du hub AI Foundry de réseau virtuel managé ici : comment configurer un réseau managé pour les hubs Azure AI Foundry

Les clés gérées par le client (CMK) ne sont pas un scénario d’entreprise pris en charge avec un réglage précis du déploiement standard.

Problèmes de réglage précis avec des configurations réseau uniques sur l’espace de travail et le stockage pointe généralement vers un problème de configuration réseau.


Déployer un modèle affiné

Une fois le travail de réglage précis réussi, vous pouvez déployer le modèle personnalisé à partir de l’onglet Réglage précis . Vous devez déployer votre modèle personnalisé pour le rendre disponible pour une utilisation avec les appels d’achèvement.

Important

Après avoir déployé un modèle personnalisé et terminé avec le point de terminaison, n’oubliez pas de nettoyer les points de terminaison inactifs. La suppression d’un déploiement inactif ne supprime ou n’affecte pas le modèle personnalisé sous-jacent. Ainsi, le modèle personnalisé peut être redéployé à tout moment. Comme décrit dans la tarification d’Azure AI Foundry, chaque modèle (optimisé) personnalisé qui est déployé entraîne un coût horaire d’hébergement, indépendamment du fait que des complétions ou des appels de complétion de conversation soient effectués sur le modèle. Pour en savoir plus sur la planification et la gestion des coûts avec Azure AI Foundry, reportez-vous aux instructions de Plan pour gérer les coûts d’Azure AI Foundry Service.

Remarque

Un seul déploiement est autorisé par modèle personnalisé. Un message d’erreur s’affiche si vous sélectionnez un modèle personnalisé déjà déployé. Pour déployer votre modèle personnalisé, sélectionnez le modèle personnalisé à déployer, puis sélectionnez Déployer le modèle.

La boîte de dialogue Déployer un modèle s’ouvre. Dans la boîte de dialogue, entrez votre nom de déploiement , puis sélectionnez Déployer pour démarrer le déploiement de votre modèle personnalisé.

Vous pouvez également déployer un modèle affiné via l’onglet Modèles + points de terminaison en sélectionnant le bouton Déployer le modèle , puis en sélectionnant Déployer un modèle affiné dans la liste déroulante

Capture d’écran du tableau de bord de gestion des ajustements des déploiements.

Sélectionnez ensuite le modèle affiné que vous souhaitez déployer et sélectionnez Déployer.

Déploiement inter-région

L’ajustement fin prend en charge le déploiement d’un modèle finement ajusté dans une autre région que celle où il a été ajusté à l’origine. Vous pouvez également déployer vers une autre région/un autre abonnement. Les seules limitations sont que la nouvelle région doit également prendre en charge le réglage précis et lors du déploiement d’un abonnement croisé, le compte générant le jeton d’autorisation pour le déploiement doit avoir accès aux abonnements source et de destination. Le déploiement inter-abonnements/régions peut être effectué via Python

Utiliser un modèle personnalisé déployé

Après le déploiement de votre modèle personnalisé, vous pouvez l’utiliser comme n’importe quel autre modèle déployé. Vous pouvez utiliser les terrains de jeu dans portail Azure AI Foundry pour expérimenter votre nouveau déploiement. Vous pouvez continuer à utiliser les mêmes paramètres avec votre modèle personnalisé, comme la température et le max_tokens, que vous pouvez utiliser avec d’autres modèles déployés.

Nettoyer vos modèles affinés

Vous pouvez supprimer un modèle affiné de la liste des modèles d’affinage dans Azure AI Foundry ou depuis la page des détails du modèle. Pour supprimer le modèle de réglage fin de la page de réglage fin,

  1. Sélectionnez Réglage précis dans le volet de navigation gauche dans votre projet Azure AI Foundry.
  2. Sélectionnez le bouton Supprimer pour supprimer le modèle de réglage précis.

Remarque

Vous ne pouvez pas supprimer un modèle personnalisé si un déploiement de ce modèle existe. Vous devez d’abord supprimer votre modèle de déploiement avant de supprimer votre modèle personnalisé.

Créer un client pour consommer le modèle

Les sections suivantes vous guident tout au long de la procédure d’optimisation d’un modèle en python. Pour trouver un exemple de bloc-notes de ce code, consultez l’optimisation de LLM avec Model-As-Service

  1. Veillez à installer les dépendances pour commencer à ajuster votre modèle.
%pip install azure-ai-ml
%pip install azure-identity

%pip install mlflow
%pip install azureml-mlflow
  1. Créez le client pour consommer le modèle. Le code suivant utilise une URL de point de terminaison et une clé qui sont stockées dans les variables d’environnement.
from azure.ai.ml import MLClient
from azure.identity import (
    DefaultAzureCredential,
    InteractiveBrowserCredential,
)

try:
    credential = DefaultAzureCredential()
    credential.get_token("https://management.azure.com/.default")
except Exception as ex:
    credential = InteractiveBrowserCredential()

try:
    workspace_ml_client = MLClient.from_config(credential=credential)
except:
    workspace_ml_client = MLClient(
        credential,
        subscription_id="<SUBSCRIPTION_ID>",
        resource_group_name="<RESOURCE_GROUP_NAME>",
        workspace_name="<PROJECT_NAME OR WORKSPACE_NAME>",
    )

# the models, fine tuning pipelines and environments are available in various AzureML system registries,
# Example: Phi family of models are in "azureml", Llama family of models are in "azureml-meta" registry.
registry_ml_client = MLClient(credential, registry_name="azureml")

# Get AzureML workspace object.
workspace = workspace_ml_client._workspaces.get(workspace_ml_client.workspace_name)
workspace.id

Trouver des modèles avec un support de réglage fin

Le catalogue de modèles AI Foundry permet d'affiner la prise en charge de plusieurs types de modèles, y compris les compléments de conversation et la génération de texte. Pour obtenir la liste des modèles qui prennent en charge le réglage précis et les régions Azure de prise en charge du réglage précis, consultez la disponibilité des régions pour les modèles dans un déploiement standard. Les tâches d’optimisation sont disponibles uniquement pour les utilisateurs dont l’abonnement Azure appartient à un compte de facturation dans un pays/une région où le fournisseur de modèles a rendu l’offre disponible. Si l’offre est disponible dans la région concernée, les utilisateurs doivent disposer d’une ressource de projet dans la région Azure où le modèle est disponible pour le déploiement ou l’ajustement, le cas échéant.

Pour cet exemple, nous utilisons un modèle Phi-4-mini-instruct. Dans cet extrait de code, la propriété ID de modèle du modèle est transmise en tant qu’entrée au travail de réglage précis. Cela est également disponible en tant que champ ID de ressource dans la page détails du modèle dans le catalogue de modèles Azure AI Foundry.

model_name = "Phi-4-mini-instruct"
model_to_finetune = registry_ml_client.models.get(model_name, label="latest")
print(
    "\n\nUsing model name: {0}, version: {1}, id: {2} for fine tuning".format(
        model_to_finetune.name, model_to_finetune.version, model_to_finetune.id
    )
)

Préparer les données pour l’ajustement

Préparez vos données d’entraînement et de validation pour affiner votre modèle. Vos données d’entraînement et de validation se composent d’exemples d’entrée et de sortie pour la façon dont vous souhaitez que le modèle s’exécute.

Assurez-vous que vos exemples d’apprentissage suivent le format attendu pour l’inférence. Pour affiner efficacement les modèles, assurez-vous d’un jeu de données diversifié en conservant l’équilibre des données, y compris différents scénarios, et en affinant périodiquement les données d’apprentissage pour s’aligner sur les attentes réelles. Ces actions conduisent en fin de compte à des réponses plus précises et plus équilibrées du modèle.

Conseil / Astuce

Différents types de modèles nécessitent un format différent de données d’entraînement.

Exemple de format de fichier

Le type de fichier pris en charge est JSON Lines. Les fichiers sont chargés dans le magasin de données par défaut et mis à disposition dans votre projet.

    {"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "Is Xbox better than PlayStation?"}, {"role": "assistant", "content": "I apologize, but I cannot provide personal opinions. My primary job is to assist you with any issues related to your Xbox device. Do you have any Xbox-related issues that need addressing?"}]}
    {"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "Can I play PC games on my Xbox?"}, {"role": "assistant", "content": "While Xbox consoles don't natively support PC games, they can play an array of Xbox games, many of which are also available on PC. Can I assist you with finding games compatible with your Xbox device?"}]}
    {"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "I'm having trouble connecting my Xbox to the Wi-Fi."}, {"role": "assistant", "content": "No worries, let's go through the network settings on your Xbox. Can you please tell me what happens when you try to connect it to the Wi-Fi?"}]}

Créer des entrées de données d’apprentissage

Cet extrait de code vous montre comment définir un jeu de données d’entraînement.

from azure.ai.ml.constants import AssetTypes
from azure.ai.ml.entities import Data

dataset_version = "1"
train_dataset_name = "chat_training_small"
try:
    train_data_asset = workspace_ml_client.data.get(
        train_dataset_name, version=dataset_version
    )
    print(f"Dataset {train_dataset_name} already exists")
except:
    print("creating dataset")
    train_data = Data(
        path=f"./train.jsonl",
        type=AssetTypes.URI_FILE,
        description="Training dataset",
        name=train_dataset_name,
        version="1",
    )
    train_data_asset = workspace_ml_client.data.create_or_update(train_data)

Créer des données de validation

L’étape suivante fournit des options pour configurer le modèle afin d’utiliser des données de validation dans le processus d’apprentissage. Si vous ne souhaitez pas utiliser de données de validation, vous pouvez choisir d’ignorer cette étape pour passer à la section suivante. Sinon, si vous avez un jeu de données de validation, vous pouvez choisir les données de validation préparées existantes ou charger de nouvelles données de validation préparées à utiliser lors de la personnalisation de votre modèle.

from azure.ai.ml.entities import Data

dataset_version = "1"
validation_dataset_name = "chat_validation_small"
try:
    validation_data_asset = workspace_ml_client.data.get(
        validation_dataset_name, version=dataset_version
    )
    print(f"Dataset {validation_dataset_name} already exists")
except:
    print("creating dataset")
    validation_data = Data(
        path=f"./validation.jsonl",
        type=AssetTypes.URI_FILE,
        description="Validation dataset",
        name=validation_dataset_name,
        version="1",
    )
    validation_data_asset = workspace_ml_client.data.create_or_update(validation_data)

Créer un abonnement à la Place de marché pour les modèles tiers

Cette étape est requise pour tous les modèles non-Microsoft. Un exemple de modèle Microsoft est la famille Phi de modèles.

model_id_to_subscribe = "/".join(model_to_finetune.id.split("/")[:-2])
print(model_id_to_subscribe)

normalized_model_name = model_name.replace(".", "-")

from azure.ai.ml.entities import MarketplaceSubscription


subscription_name = f"{normalized_model_name}-sub"

marketplace_subscription = MarketplaceSubscription(
    model_id=model_id_to_subscribe,
    name=subscription_name,
)

# note: this will throw exception if the subscription already exists or subscription is not required (for example, if the model is not in the marketplace like Phi family)
try:
    marketplace_subscription = (
        workspace_ml_client.marketplace_subscriptions.begin_create_or_update(
            marketplace_subscription
        ).result()
    )
except Exception as ex:
    print(ex)

Soumettez le travail d'ajustement précis en utilisant le modèle et les données comme entrées

Vous trouverez ci-dessous un ensemble de paramètres requis pour affiner votre modèle. Chaque paramètre est défini dans les éléments suivants :

  • modèle : modèle de base à ajuster.
  • training_data : Données d’apprentissage pour affiner le modèle de base.
  • validation_data : Données de validation pour ajuster le modèle de base.
  • tâche : tâche de réglage précis à effectuer. Eg. CHAT_COMPLETION pour les travaux de réglage précis de la saisie semi-automatique de conversation.
  • sorties : Nom du modèle enregistré pour les sorties.

Les paramètres suivants sont facultatifs :

  • hyperparamètres : paramètres qui contrôlent le comportement de réglage précis au moment de l’exécution.
  • nom : Nom du travail de réglage précis
  • experiment_name : Nom de l’expérience pour le travail de réglage fin.
  • display_name : Nom complet du travail de réglage précis.
from azure.ai.ml.finetuning import FineTuningTaskType, create_finetuning_job
import uuid

guid = uuid.uuid4()
short_guid = str(guid)[:8]
display_name = f"{model_name}-display-name-{short_guid}-from-sdk"
name = f"{model_name}t-{short_guid}-from-sdk"
output_model_name_prefix = f"{model_name}-{short_guid}-from-sdk-finetuned"
experiment_name = f"{model_name}-from-sdk"

finetuning_job = create_finetuning_job(
    task=FineTuningTaskType.CHAT_COMPLETION,
    training_data=train_data_asset.id,
    validation_data=validation_data_asset.id,
    hyperparameters={
        "per_device_train_batch_size": "1",
        "learning_rate": "0.00002",
        "num_train_epochs": "1",
    },
    model=model_to_finetune.id,
    display_name=display_name,
    name=name,
    experiment_name=experiment_name,
    tags={"foo_tag": "bar"},
    properties={"my_property": "my_value"},
    output_model_name_prefix=output_model_name_prefix,
created_job = workspace_ml_client.jobs.create_or_update(finetuning_job)
workspace_ml_client.jobs.get(created_job.name)

status = workspace_ml_client.jobs.get(created_job.name).status

import time

while True:
    status = workspace_ml_client.jobs.get(created_job.name).status
    print(f"Current job status: {status}")
    if status in ["Failed", "Completed", "Canceled"]:
        print("Job has finished with status: {0}".format(status))
        break
    else:
        print("Job is still running. Checking again in 30 seconds.")
        time.sleep(30)
finetune_model_name = created_job.outputs["registered_model"]["name"]
finetune_model_name

Déployer un modèle affiné

Une fois le travail de réglage précis réussi, vous pouvez déployer le modèle personnalisé.

Important

Après avoir déployé un modèle personnalisé et terminé avec le point de terminaison, n’oubliez pas de nettoyer les points de terminaison inactifs. La suppression d’un déploiement inactif ne supprime ou n’affecte pas le modèle personnalisé sous-jacent. Ainsi, le modèle personnalisé peut être redéployé à tout moment. Comme décrit dans la tarification d’Azure AI Foundry, chaque modèle (optimisé) personnalisé qui est déployé entraîne un coût horaire d’hébergement, indépendamment du fait que des complétions ou des appels de complétion de conversation soient effectués sur le modèle. Pour en savoir plus sur la planification et la gestion des coûts avec Azure AI Foundry, reportez-vous aux instructions de Plan pour gérer les coûts d’Azure AI Foundry Service.

# Deploy the model as a serverless endpoint

endpoint_name = f"{normalized_model_name}-ft-{short_guid}"  # Name must be unique
model_id = f"azureml://locations/{workspace.location}/workspaces/{workspace._workspace_id}/models/{finetune_model_name}/versions/1"

Scénarios d’entreprise pris en charge pour le réglage précis

Plusieurs scénarios d’entreprise sont pris en charge pour le réglage précis du déploiement standard. Le tableau ci-dessous présente les configurations prises en charge pour la mise en réseau et l’authentification du stockage utilisateur pour garantir une opération fluide dans les scénarios d’entreprise :

Remarque

  • L’authentification des connexions aux données peut être modifiée via AI Foundry en cliquant sur la connexion de l'entrepôt de données dans laquelle votre jeu de données est stocké, puis naviguez vers le paramètre détails d’accès>Méthode d’authentification.
  • L’authentification de stockage peut être modifiée dans >Paramètres>Configurations de la page >Autoriser l’accès de la clé du compte de stockage.
  • La mise en réseau du stockage peut être modifiée dans la page >Mise en réseau du stockage Azure.
Mise en réseau du stockage Authentification de stockage Authentification de la connexion de données Soutien
Accès réseau public = activé Clé de compte activée SAP/clé de compte Oui, l’expérience utilisateur et le SDK
Accès réseau public = activé Clé de compte désactivée Authentification basée sur Entra (Credentialless) Oui, l’expérience utilisateur et le SDK

Remarque : pour l’expérience utilisateur, vous devrez peut-être ajouter un lecteur de données Blob de stockage ou un contributeur aux données blob de stockage pour votre ID d’utilisateur sur le compte de stockage, ou modifier l’authentification de la connexion pour utiliser la clé de compte/jeton SAP
Activé à partir de réseaux virtuels et d’adresses IP sélectionnés Clé de compte activée Clé de compte Oui, l’expérience utilisateur et le SDK

Remarque : pour l’expérience utilisateur, l’adresse IP du calcul exécutant le navigateur doit se trouver dans la liste sélectionnée
Activé à partir de réseaux virtuels et d’adresses IP sélectionnés Clé de compte activée SAS Oui, l’expérience utilisateur et le SDK

Remarque : pour l’expérience utilisateur, l’adresse IP du calcul exécutant le navigateur doit se trouver dans la liste sélectionnée
Activé à partir de réseaux virtuels et d’adresses IP sélectionnés Clé de compte désactivée Authentification basée sur Entra (Credentialless) Oui, l’expérience utilisateur et le SDK.

Remarque : pour l’expérience utilisateur, vous devrez peut-être ajouter un lecteur de données Blob de stockage ou un contributeur de données blob de stockage pour votre ID d’utilisateur sur le compte de stockage, ou modifier l’authentification de la connexion pour utiliser la clé de compte/jeton SAP. Vérifiez également que l’adresse IP du calcul exécutant le navigateur doit se trouver dans la liste sélectionnée
Accès au réseau public = Désactivé Clé de compte activée SAP/clé de compte Oui, l’expérience utilisateur et le SDK.

Remarque : pour que le chargement et la soumission des données d’expérience utilisateur fonctionnent, l’espace de travail doit être accessible à partir du réseau virtuel disposant d’un accès approprié au stockage
Accès au réseau public = Désactivé Clé de compte désactivée Authentification basée sur Entra (Credentialless) Oui, l’expérience utilisateur et le SDK.

Remarque : pour que le chargement et la soumission des données d’expérience utilisateur fonctionnent, l’espace de travail doit être accessible à partir du réseau virtuel disposant d’un accès approprié au stockage

Les scénarios ci-dessus doivent également fonctionner dans un espace de travail de réseau virtuel managé. Consultez la configuration du hub AI Foundry de réseau virtuel managé ici : comment configurer un réseau managé pour les hubs Azure AI Foundry

Les clés gérées par le client (CMK) ne sont pas un scénario d’entreprise pris en charge avec un réglage précis du déploiement standard.

Problèmes de réglage précis avec des configurations réseau uniques sur l’espace de travail et le stockage pointe généralement vers un problème de configuration réseau.

Déploiement inter-région

L’ajustement fin prend en charge le déploiement d’un modèle finement ajusté dans une autre région que celle où il a été ajusté à l’origine. Vous pouvez également déployer vers une autre région/un autre abonnement. Les seules limitations sont que la nouvelle région doit également prendre en charge le réglage précis et lors du déploiement d’un abonnement croisé, le compte générant le jeton d’autorisation pour le déploiement doit avoir accès aux abonnements source et de destination. Le déploiement inter-abonnements/régions peut être effectué via Python


# Create Cross region FT deployment client
from azure.ai.ml.entities import ServerlessEndpoint
from azure.ai.ml import MLClient
from azure.identity import (
    DefaultAzureCredential,
    InteractiveBrowserCredential,
)

try:
    credential = DefaultAzureCredential()
    credential.get_token("https://management.azure.com/.default")
except Exception as ex:
    credential = InteractiveBrowserCredential()
try:
    workspace_ml_client = MLClient.from_config(credential=credential)
except:
    workspace_ml_client = MLClient(
        credential,
        subscription_id="<TARGET_SUBSCRIPTION_ID>",
        resource_group_name="<TARGET_RESOURCE_GROUP_NAME>",
        workspace_name="<TARGET_PROJECT_NAME>",
    )

workspace = workspace_ml_client._workspaces.get(workspace_ml_client.workspace_name)
workspace_region = workspace.location
model_to_finetune.tags
supported_regions = model_to_finetune.tags["maas-finetuning-deploy-regions"]
supported_regions
if workspace_region in supported_regions:
    print(f"Creating endpoint in the region:{workspace_region}")
    serverless_endpoint = ServerlessEndpoint(name=endpoint_name, model_id=model_id)
    created_endpoint = workspace_ml_client.serverless_endpoints.begin_create_or_update(
        serverless_endpoint
    ).result()
else:
    raise ValueError(
        f"For the model : {model_to_finetune}, the target region: {workspace_region} is not supported for deployment, the supported regions: {supported_regions}"
    )

Utiliser un modèle personnalisé déployé

Après le déploiement de votre modèle personnalisé, vous pouvez l’utiliser comme n’importe quel autre modèle déployé. Vous pouvez continuer à utiliser les mêmes paramètres avec votre modèle personnalisé, comme la température et le max_tokens, que vous pouvez utiliser avec d’autres modèles déployés.

endpoint = workspace_ml_client.serverless_endpoints.get(endpoint_name)
endpoint_keys = workspace_ml_client.serverless_endpoints.get_keys(endpoint_name)
auth_key = endpoint_keys.primary_key

import requests

url = f"{endpoint.scoring_uri}/v1/chat/completions"

payload = {
    "max_tokens": 1024,
    "messages": [
        {
            "content": "This script is great so far. Can you add more dialogue between Amanda and Thierry to build up their chemistry and connection?",
            "role": "user",
        }
    ],
}
headers = {"Content-Type": "application/json", "Authorization": f"{auth_key}"}

response = requests.post(url, json=payload, headers=headers)

response.json()

Nettoyer vos modèles affinés

Une fois votre modèle terminé, vous exécutez le code suivant pour nettoyer votre modèle affiné.

workspace_ml_client.serverless_endpoints.begin_delete(endpoint_name).result()

Considérations relatives au coût et au quota pour les modèles déployés en tant que déploiement standard

Le quota est géré par déploiement. Chaque déploiement a une limite de débit de 200 000 jetons par minute et 1 000 requêtes d’API par minute. Toutefois, nous limitons actuellement un déploiement par modèle par projet. Contactez le Support Microsoft Azure si les limites de débit actuelles ne suffisent pas pour vos scénarios.

Coût des modèles Microsoft

Vous trouverez les informations de tarification sous l’onglet Tarification et conditions de l’Assistant Déploiement lors du déploiement de modèles Microsoft (tels que les modèles Phi-3) en tant que déploiement standard.

Coût pour les modèles autres que Microsoft

Les modèles non-Microsoft déployés en tant que déploiement standard sont proposés via la Place de marché Azure et intégrés à Azure AI Foundry pour une utilisation. Vous trouverez la tarification de Place de marché Azure lors du déploiement ou de l’optimisation de ces modèles.

Chaque fois qu’un projet s’abonne à une offre donnée à partir de la Place de marché Azure, une nouvelle ressource est créée pour suivre les coûts associés à sa consommation. La même ressource est utilisée pour suivre les coûts associés à l’inférence et à l’optimisation ; plusieurs compteurs sont cependant disponibles pour suivre chaque scénario indépendamment.

Pour plus d’informations sur le suivi des coûts, consultez Surveiller les coûts des modèles proposés via Place de marché Azure.

Capture d’écran montrant différentes ressources correspondant à différentes offres de modèle et à leurs compteurs associés.

Exemple de notebook

Vous pouvez utiliser cet exemple de bloc-notes pour créer une tâche de réglage fin autonome afin d'améliorer la capacité d'un modèle à résumer les dialogues entre deux personnes à l'aide de l'ensemble de données Samsum. Les données de formation utilisées sont l'ensemble de données ultrachat_200k, qui est divisé en quatre divisions adaptées au réglage fin supervisé (sft) et au classement par génération (gen). Le bloc-notes utilise les modèles Azure AI disponibles pour la tâche de complétion de conversation (si vous souhaitez utiliser un modèle différent de celui utilisé dans le bloc-notes, vous pouvez remplacer le nom du modèle). Le bloc-notes comprend la configuration des conditions préalables, la sélection d’un modèle à affiner, la création d’ensembles de données d’entraînement et de validation, la configuration et la soumission du travail d’affinage et enfin, la création d’un déploiement sans serveur à l’aide du modèle affiné pour l’inférence d’échantillons.

Exemple de CLI

En outre, vous pouvez utiliser cet exemple d’interface CLI pour créer un travail d’optimisation autonome afin d’améliorer la capacité d’un modèle à résumer les dialogues entre deux personnes à l’aide d’un jeu de données.

type: finetuning

name: "Phi-3-mini-4k-instruct-with-amlcompute"
experiment_name: "Phi-3-mini-4k-instruct-finetuning-experiment"
display_name: "Phi-3-mini-4k-instruct-display-name"
task: chat_completion
model_provider: custom
model: 
  path: "azureml://registries/azureml/models/Phi-3-mini-4k-instruct/versions/14"
  type: mlflow_model
training_data: train.jsonl
validation_data:
  path: validation.jsonl
  type: uri_file
hyperparameters:
  num_train_epochs: "1"
  per_device_train_batch_size: "1"
  learning_rate: "0.00002"
properties:
  my_property: "my_value"
tags:
  foo_tag: "bar"
outputs:
  registered_model:
    name: "Phi-3-mini-4k-instruct-finetuned-model"
    type: mlflow_model 

Les données de formation utilisées sont les mêmes que celles présentées dans le cahier SDK. L'interface de commande utilise les modèles Azure AI disponibles pour la tâche de remplissage du chat. Si vous préférez utiliser un modèle différent de celui de l’exemple CLI, vous pouvez mettre à jour les arguments, tels que « chemin du modèle », en conséquence.

Filtrage du contenu

Les modèles de déploiement standard sont protégés par Azure AI Content Safety. Quand ils sont déployés sur des points de terminaison en temps réel, vous pouvez ne pas accepter cette fonctionnalité. Avec Azure AI Content Safety activé, l'invite et la génération passent par un ensemble de modèles de classification visant à détecter et à empêcher la sortie de contenu nuisible. Le système de filtrage du contenu détecte les catégories spécifiques de contenu potentiellement nuisible dans les invites d’entrée et les achèvements de sortie et prend des mesures correspondantes. En savoir plus sur Azure AI Sécurité du Contenu.

Étapes suivantes