La distillation étape par étape utilise un grand modèle enseignant pour entraîner un modèle élève plus petit afin de mieux exécuter certaines tâches grâce à des capacités de raisonnement améliorées. Le modèle distillé et entraîné peut effectuer les mêmes tâches que le modèle enseignant plus volumineux, pour un coût et une latence moindres.
Lorsque vous distillez un modèle de fondation, vous utilisez un modèle enseignant et un modèle de type élève :
Le modèle enseignant est le grand modèle qui peut faire ce que vous voulez. Cependant, en raison de sa taille, le modèle enseignant peut coûter plus cher et présenter une latence plus élevée qu'un modèle plus petit.
Le modèle "élève" est plus petit que le modèle "enseignant". Le processus d'entraînement et de distillation utilise des exemples étiquetés et des logiques générées par le modèle enseignant pour ajuster le modèle élève. Les performances et les fonctionnalités de raisonnement du modèle distillé sont meilleures que celles du modèle élève d'origine.
Vous spécifiez un modèle enseignant et un modèle élève lorsque vous créez une tâche de distillation.
Workflow de réglage et de distillation d'un modèle
Le workflow de distillation sur Vertex AI comprend les étapes suivantes :
- Préparer l'ensemble de données de réglage du modèle
- Spécifiez le modèle enseignant.
- Spécifiez le modèle élève.
- Importer l'ensemble de données de réglage du modèle dans un bucket Cloud Storage
- Créez un job de distillation de modèle.
Une fois la distillation du modèle terminée, le modèle distillé est déployé sur un point de terminaison Vertex AI. Le nom du point de terminaison est identique au nom du modèle distillé. Les modèles distillés peuvent être sélectionnés dans Vertex AI Studio lorsque vous souhaitez créer une requête.
Modèles compatibles
Vous pouvez spécifier les éléments suivants pour le modèle "enseignant" :
text-unicorn@001
Vous pouvez spécifier les éléments suivants pour le modèle élève :
text-bison@002
Format de l'ensemble de données
La distillation fonctionne sur un ensemble de données étiqueté ou non. Si vous disposez d'un ensemble de données étiqueté de haute qualité avec des centaines d'exemples, nous vous recommandons de l'utiliser. Sinon, vous pouvez utiliser un ensemble de données de requêtes non étiquetées. Si vous utilisez un ensemble de données non étiqueté, le modèle enseignant génère les étiquettes et la logique de distillation. Il est recommandé d'utiliser plus de 1 000 exemples si vous utilisez un ensemble de données sans étiquette.
L'ensemble de données de distillation étiqueté ou non doit être au format JSON Lines (JSONL), où chaque ligne contient un seul exemple de réglage. Avant de distiller le modèle, vous importez l'ensemble de données dans un bucket Cloud Storage.
Chaque exemple d'ensemble de données contient un champ input_text
avec la requête du modèle et un champ output_text
facultatif contenant un exemple de réponse que le modèle distillé doit produire.
La longueur maximale de jeton pour input_text
est de 7168, et la longueur maximale de jeton pour output_text
est de 1024. Si l'un des champs dépasse la longueur maximale du jeton, les jetons excédentaires sont tronqués.
Un ensemble de données peut contenir 10 000 exemples au maximum pour un modèle de génération de texte.
Exemple d'ensemble de données
{"input_text": "question: How many people live in Beijing? context: With over 21 million residents, Beijing is the world's most populous national capital city and is China's second largest city after Shanghai. It is located in Northern China, and is governed as a municipality under the direct administration of the State Council with 16 urban, suburban, and rural districts.[14] Beijing is mostly surrounded by Hebei Province with the exception of neighboring Tianjin to the southeast; together, the three divisions form the Jingjinji megalopolis and the national capital region of China.", "output_text": "over 21 million people"}
{"input_text": "question: How many parishes are there in Louisiana? context: The U.S. state of Louisiana is divided into 64 parishes (French: paroisses) in the same manner that 48 other states of the United States are divided into counties, and Alaska is divided into boroughs.", "output_text": "64"}
Inclure des instructions dans les exemples
Pour les tâches telles que la classification, il est possible de créer un ensemble de données d'exemples ne contenant pas d'instructions. Toutefois, exclure les instructions des exemples dans l'ensemble de données entraîne de mauvaises performances après la distillation, en particulier pour les ensembles de données plus petits.
Instructions relatives à l'exclusion :
{"input_text": "5 stocks to buy now", "output_text": "business"}
Instructions incluses :
{"input_text": "Classify the following text into one of the following classes: [business, entertainment] Text: 5 stocks to buy now", "output_text": "business"}
Exemples d'ensembles de données
Vous pouvez utiliser un exemple d'ensemble de données pour commencer la distillation. Voici un ensemble de données de tâches de classification qui contient des exemples de transcriptions médicales pour diverses spécialités médicales. Les données proviennent de la ressource mtsamples.com, telle qu'elle figure sur la plateforme Kaggle.
Exemple d'URI d'ensemble de données de distillation :
gs://cloud-samples-data/vertex-ai/model-evaluation/peft_train_sample.jsonl
Exemple d'URI d'ensemble de données d'évaluation :
gs://cloud-samples-data/vertex-ai/model-evaluation/peft_eval_sample.jsonl
Pour utiliser ces ensembles de données, spécifiez les URI dans les paramètres applicables lors de la création d'un job de distillation d'un modèle de texte.
Exemple :
...
"dataset_uri": "gs://cloud-samples-data/vertex-ai/model-evaluation/peft_train_sample.jsonl",
...
"evaluation_data_uri": "gs://cloud-samples-data/vertex-ai/model-evaluation/peft_eval_sample.jsonl",
...
Assurer la cohérence des données de production
Les exemples de vos ensembles de données doivent correspondre au trafic de production attendu. Si votre ensemble de données contient une mise en forme, des mots clés, des instructions ou des informations spécifiques, les données de production doivent utiliser le même format et les mêmes instructions.
Par exemple, si les exemples de votre ensemble de données incluent "question:"
et "context:"
, le trafic de production doit également être mis en forme de manière à inclure "question:"
et "context:"
dans le même ordre que les exemples de l'ensembles de données. Si vous excluez le contexte, le modèle ne reconnaît pas le modèle, même si la question exacte figurait dans un exemple de l'ensemble de données.
Importer des ensembles de données de distillation dans Cloud Storage
Pour exécuter un job de réglage, vous devez importer un ou plusieurs ensembles de données dans un bucket Cloud Storage. Vous pouvez créer un bucket Cloud Storage ou utiliser un bucket existant pour stocker les fichiers des ensembles de données. La région du bucket n'a pas d'importance, mais nous vous recommandons d'utiliser un bucket situé dans le même projet Google Cloud que celui où vous prévoyez de régler votre modèle.
Une fois votre bucket prêt, importez-y le fichier de votre ensemble de données.
Paramètres de région pour la distillation
Vous pouvez spécifier trois paramètres de région Google Cloud lorsque vous configurez un job de distillation. Une région est l'emplacement du pipeline qui règle le modèle. L'autre région sert à exécuter la partie réglage du modèle du processus de distillation et à importer le modèle distillé.
Région du job de pipeline
La région du job de pipeline est celle dans laquelle le job de pipeline est exécuté. Si la région d'importation du modèle n'est pas spécifiée, le modèle est importé et déployé dans la région du job de pipeline. Les données intermédiaires, telles que l'ensemble de données transformé, sont stockées dans la région du job de pipeline. Pour connaître les régions que vous pouvez utiliser pour les jobs de pipeline, consultez la page Régions de job et d'importation de modèles compatibles.
Vous devez spécifier la région du job de pipeline à l'aide de l'une des méthodes suivantes :
Si vous créez un job de distillation supervisé en envoyant une requête POST à l'aide de la méthode
pipelineJobs.create
, vous utilisez l'URL pour spécifier la région dans laquelle le job de pipeline est exécuté. Dans l'URL suivante, remplacez les deux instances dePIPELINE_JOB_REGION
par la région où le pipeline est exécuté :https://PIPELINE_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/PIPELINE_JOB_REGION/pipelineJobs
Si vous utilisez la console Google Cloud pour créer une tâche de distillation, vous devez spécifier la région de la tâche de pipeline dans le contrôle Région lorsque vous créez votre tâche de distillation. Dans la console Google Cloud, le contrôle Région spécifie à la fois la région du job de pipeline et la région d'importation du modèle. Lorsque vous utilisez la console Google Cloud pour créer une tâche de distillation, les deux régions sont toujours identiques.
Région d'importation du modèle
Vous utilisez le paramètre facultatif tuned_model_location
pour spécifier l'emplacement d'importation du modèle distillé.
Si la région d'importation du modèle n'est pas spécifiée, le modèle distillé est importé dans la région du job de pipeline.Vous pouvez utiliser l'une des régions de jobs de pipeline et d'importation de modèles compatibles. Vous pouvez spécifier la région d'importation du modèle à l'aide de l'une des méthodes suivantes :
Si vous créez un job de distillation en envoyant une requête POST à l'aide de la méthode
pipelineJobs
, vous pouvez utiliser le paramètrelocation
pour spécifier la région d'importation du modèle.Si vous utilisez la console Google Cloud pour créer une tâche de distillation, vous devez spécifier la région d'importation du modèle dans le contrôle Région lorsque vous créez votre tâche de distillation. Dans la console Google Cloud, le contrôle Région spécifie à la fois la région d'importation du modèle et la région du job de pipeline. Lorsque vous utilisez la console Google Cloud pour créer une tâche de distillation, les deux régions sont toujours identiques.
Paramètres de région pour la distillation
La région que vous choisissez correspond à l'endroit où Vertex AI distille le modèle, puis l'importe.
La région de réglage est l'emplacement où s'effectue le calcul de la partie réglage du job de distillation. Cette région est déterminée par le type d'accélérateur que vous choisissez.
us-central1
: si vous choisissez cette région, 8 GPU Nvidia A100 de 80 Go sont utilisés.europe-west4
: si vous choisissez cette région, 64 cœurs du pod TPU v3 sont utilisés.
Régions compatibles avec les jobs de pipeline et l'importation de modèles
Vous pouvez utiliser l'une des régions suivantes pour spécifier la région d'importation du modèle et la région du job de pipeline :
us-central1
europe-west4
asia-southeast1
us-west1
europe-west3
europe-west2
asia-northeast1
us-east4
us-west4
northamerica-northeast1
europe-west9
europe-west1
asia-northeast3
Créer un job de distillation de modèle de texte
Vous pouvez créer une tâche de distillation de modèle texte à l'aide de la console Google Cloud ou de l'API. Pour obtenir des conseils sur les configurations de distillation de modèle, consultez la page Configurations recommandées.
REST
Pour créer un job de distillation de modèle, envoyez une requête POST à l'aide de la méthode pipelineJobs
.
Notez que certains paramètres ne sont pas compatibles avec tous les modèles. Veillez à n'inclure que les paramètres applicables au modèle que vous distillez.
Avant d'utiliser les données de requête, effectuez les remplacements suivants :
- PIPELINEJOB_DISPLAYNAME : nom à afficher pour la tâche pipelineJob.
- OUTPUT_DIR : URI du bucket dans lequel générer les artefacts de pipeline.
- PROJECT_ID : l'ID de votre projet.
- MODEL_DISPLAYNAME : nom à afficher pour le modèle distillé importé par
pipelineJob
. - DATASET_URI : URI du fichier de votre ensemble de données.
- PIPELINE_JOB_REGION : région dans laquelle le job de réglage de pipeline est exécuté. Il s'agit également de la région par défaut dans laquelle le modèle réglé est importé. Si vous souhaitez importer votre modèle dans une autre région, utilisez le paramètre
location
pour spécifier la région d'importation du modèle réglé. Pour en savoir plus, consultez la section Région d'importation du modèle. - MODEL_UPLOAD_REGION : (facultatif) région dans laquelle le modèle réglé est importé. Si vous ne spécifiez pas de région d'importation du modèle, le modèle réglé est importé dans la même région que la tâche de pipeline. Pour en savoir plus, consultez la section Région d'importation du modèle.
- ACCELERATOR_TYPE : (facultatif, valeur par défaut
GPU
) type d'accélérateur à utiliser pour le réglage du modèle. Les options valides sont les suivantes :GPU
: utilise 8 GPU A100 de 80 Go pour le réglage. Assurez-vous de disposer d'un quota suffisant. Si vous choisissezGPU
, VPC-SC est compatible. CMEK est compatible si l'emplacement de réglage et d'importation du modèle estus-centra1
. Pour en savoir plus, consultez la section Paramètres de région des réglages supervisés. Si vous choisissezGPU
, les calculs de réglage du modèle s'effectuent dans la régionus-central1
.TPU
: utilise 64 cœurs du pod TPU v3 pour le réglage. Assurez-vous de disposer d'un quota suffisant. Les clés CMEK ne sont pas acceptées, mais VPC-SC l'est. Si vous choisissezTPU
, les calculs de réglage de votre modèle s'effectuent dans la régioneurope-west4
.
- TEACHER_MODEL_REFERENCE : nom du modèle enseignant à utiliser pour la distillation. Le modèle compatible est
text-unicorn@001
. - STUDENT_MODEL_REFERENCE : nom du modèle étudiant à utiliser pour la distillation. Le modèle compatible est
text-bison@002
. - STEPS : Nombre d'étapes à exécuter pour le réglage du modèle. La valeur par défaut est 300. La taille de lot varie en fonction de l'emplacement de réglage et de la taille du modèle. Pour les modèles à 8 000, tels que
text-bison@002
,chat-bison@002
,code-bison@002
etcodechat-bison@002
:us-central1
a une taille de lot de 8.europe-west4
a une taille de lot de 24.
text-bison-32k
,chat-bison-32k
,code-bison-32k
etcodechat-bison-32k
:us-central1
a une taille de lot de 8.europe-west4
a une taille de lot de 8.
Par exemple, si vous entraînez le modèle
text-bison@002
dans la régioneurope-west4
, vous allez disposer de 240 exemples dans un ensemble de données d'entraînement, et si vous définissez le paramètresteps
sur 20, alors le nombre d'exemples d'entraînement va correspondre au produit du nombre d'étapes par la taille de lot, soit 20 x 24 = 480 étapes d'entraînement. Dans ce cas, le processus d'entraînement comporte deux époques, car il parcourt les exemples deux fois. Dans la régionus-central1
, si un ensemble de données d'entraînement contient 240 exemples et si vous définissez le paramètresteps
sur 15, alors le nombre d'exemples d'entraînement va correspondre au produit du nombre d'étapes par la taille de lot, soit 15 x8 = 120 étapes d'entraînement. Dans ce cas, le processus d'entraînement ne va comporter que 0,5 époque, car le nombre d'étapes d'entraînement est inférieur de moitié au nombre d'exemples. - LEARNING_RATE_MULTIPLIER : multiplicateur à appliquer au taux d'apprentissage recommandé. Pour utiliser le taux d'apprentissage recommandé, utilisez
1.0
. - EVAL_DATASET_URI : (facultatif) URI du fichier JSONL contenant l'ensemble de données d'évaluation pour la prédiction par lot et l'évaluation. L'évaluation n'est pas compatible avec
chat-bison
. Pour plus d'informations, consultez la page Format d'ensemble de données pour le réglage d'un modèle de code. L'ensemble de données d'évaluation nécessite entre 10 et 250 exemples. - EVAL_INTERVAL : (facultatif, valeur par défaut
20
) nombre d'étapes de réglage entre chaque évaluation. Un intervalle d'évaluation n'est pas disponible pour les modèles de chat. Étant donné que l'évaluation s'exécute sur l'ensemble de données d'évaluation complet, un intervalle d'évaluation plus petit entraîne un temps de réglage plus long. Par exemple, sisteps
est égal à 200 et la valeur deEVAL_INTERVAL
égale à 100, vous n'obtenez que deux points de données pour les métriques d'évaluation. Ce paramètre nécessite queevaluation_data_uri
soit défini. - ENABLE_EARLY_STOPPING : (facultatif, valeur par défaut
true
)boolean
qui, si la valeur est définie surtrue
, arrête le réglage avant d'effectuer toutes les étapes de réglage si les performances du modèle (telles que mesurées par la précision des jetons prévus) ne s'améliorent pas suffisamment entre les exécutions d'évaluations. Si elle est définie surfalse
, le réglage se poursuit jusqu'à ce que toutes les étapes de réglage soient terminées. Ce paramètre nécessite queevaluation_data_uri
soit défini. L'arrêt prématuré n'est pas disponible pour les modèles de chat. - TENSORBOARD_RESOURCE_ID : (facultatif) ID d'une instance Vertex AI TensorBoard. L'instance Vertex AI TensorBoard est utilisée pour créer un test une fois la tâche de réglage terminée. L'instance Vertex AI TensorBoard doit se trouver dans la même région que le pipeline de réglage.
- ENCRYPTION_KEY_NAME : (facultatif) nom complet d'une clé de chiffrement gérée par le client (CMEK) que vous souhaitez utiliser pour le chiffrement des données. Une clé CMEK n'est disponible que dans
us-central1
. Si vous utilisezus-central1
et ne spécifiez pas de CMEK, une clé appartenant à Google et gérée par Google est utilisée. Une clé appartenant à Google et gérée par Google est utilisée par défaut dans toutes les autres régions disponibles. Pour en savoir plus, consultez la page Présentation du chiffrement CMEK. - TEMPLATE_URI : URI du modèle distillé,
https://us-kfp.pkg.dev/ml-pipeline/distillation/distillation/v1.0.0
. - SERVICE_ACCOUNT (facultatif) : compte de service utilisé par Vertex AI pour exécuter la tâche de pipeline. Par défaut, le compte de service Compute Engine par défaut de votre projet (
PROJECT_NUMBER‑compute@developer.gserviceaccount.com
) est utilisé. Apprenez-en plus sur l'association d'un compte de service personnalisé.
Méthode HTTP et URL :
POST https://PIPELINE_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/PIPELINE_JOB_REGION/pipelineJobs
Corps JSON de la requête :
{ "displayName": "PIPELINEJOB_DISPLAYNAME", "runtimeConfig": { "gcsOutputDirectory": "gs://OUTPUT_DIR", "parameterValues": { "project": "PROJECT_ID", "model_display_name": "MODEL_DISPLAYNAME", "dataset_uri": "gs://DATASET_URI", "location": "MODEL_UPLOAD_REGION", "accelerator_type": "ACCELERATOR_TYPE", "teacher_model_reference":TEACHER_MODEL_REFERENCE , "student_model_reference":STUDENT_MODEL_REFERENCE , "train_steps": STEPS, "learning_rate_multiplier": LEARNING_RATE_MULTIPLIER, "evaluation_data_uri": "gs://EVAL_DATASET_URI", "evaluation_interval": EVAL_INTERVAL, "enable_early_stopping": ENABLE_EARLY_STOPPING, "enable_checkpoint_selection": "ENABLE_CHECKPOINT_SELECTION", "tensorboard_resource_id": "TENSORBOARD_ID", "encryption_spec_key_name": "ENCRYPTION_KEY_NAME" } }, "encryptionSpec": { "kmsKeyName": "ENCRYPTION_KEY_NAME" }, "serviceAccount": "SERVICE_ACCOUNT", "templateUri": "TEMPLATE_URI" }
Pour envoyer votre requête, choisissez l'une des options suivantes :
curl
Enregistrez le corps de la requête dans un fichier nommé request.json
, puis exécutez la commande suivante :
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://PIPELINE_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/PIPELINE_JOB_REGION/pipelineJobs"
PowerShell
Enregistrez le corps de la requête dans un fichier nommé request.json
, puis exécutez la commande suivante :
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://PIPELINE_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/PIPELINE_JOB_REGION/pipelineJobs" | Select-Object -Expand Content
Vous devriez recevoir une réponse JSON semblable à la suivante. Notez que pipelineSpec
a été tronqué pour économiser de l'espace.
Python
Pour savoir comment installer ou mettre à jour le SDK Vertex AI pour Python, consultez la section Installer le SDK Vertex AI pour Python. Pour en savoir plus, consultez la documentation de référence de l'API Python.
Console
Pour distiller un modèle de texte à l'aide de la console Google Cloud, procédez comme suit :
- Dans la section "Vertex AI" de la console Google Cloud, accédez à la page Vertex AI Studio.
- Cliquez sur l'onglet Régler et distiller.
- Cliquez sur Créer un modèle distillé.
- Configurez les détails du modèle :
- Nom du modèle : saisissez un nom pour votre modèle réglé.
- Modèle enseignant : sélectionnez le modèle que vous souhaitez utiliser pour le modèle enseignant.
- Modèle étudiant : sélectionnez le modèle que vous souhaitez utiliser pour le modèle étudiant.
- Région : sélectionnez la région où le job de réglage de pipeline s'exécute et où le modèle réglé est déployé.
- Répertoire de travail : saisissez l'emplacement Cloud Storage où sont stockés les artefacts lorsque votre modèle est réglé.
- Développez la section Options avancées pour configurer les paramètres avancés.
- Étapes d'entraînement : saisissez le nombre d'étapes à exécuter pour le réglage du modèle. La valeur par défaut est 300. La taille de lot varie en fonction de l'emplacement de réglage et de la taille du modèle. Pour les modèles à 8 000, tels que
text-bison@002
,chat-bison@002
,code-bison@002
etcodechat-bison@002
:us-central1
a une taille de lot de 8.europe-west4
a une taille de lot de 24.
text-bison-32k
,chat-bison-32k
,code-bison-32k
etcodechat-bison-32k
:us-central1
a une taille de lot de 8.europe-west4
a une taille de lot de 8.
Par exemple, si vous entraînez le modèle
text-bison@002
dans la régioneurope-west4
, vous allez disposer de 240 exemples dans un ensemble de données d'entraînement, et si vous définissez le paramètresteps
sur 20, alors le nombre d'exemples d'entraînement va correspondre au produit du nombre d'étapes par la taille de lot, soit 20 x 24 = 480 étapes d'entraînement. Dans ce cas, le processus d'entraînement comporte deux époques, car il parcourt les exemples deux fois. Dans la régionus-central1
, si un ensemble de données d'entraînement contient 240 exemples et si vous définissez le paramètresteps
sur 15, alors le nombre d'exemples d'entraînement va correspondre au produit du nombre d'étapes par la taille de lot, soit 15 x8 = 120 étapes d'entraînement. Dans ce cas, le processus d'entraînement ne va comporter que 0,5 époque, car le nombre d'étapes d'entraînement est inférieur de moitié au nombre d'exemples. - Multiplicateur du taux d'apprentissage : saisissez la taille de pas à chaque itération. La valeur par défaut est de 1.
- Type d'accélérateur : (facultatif) saisissez le type d'accélérateur à utiliser pour le réglage du modèle. Les options valides sont les suivantes :
GPU
: utilise 8 GPU A100 de 80 Go pour le réglage. Assurez-vous de disposer d'un quota suffisant. Si vous choisissezGPU
, VPC-SC est compatible. CMEK est compatible si l'emplacement de réglage et d'importation du modèle estus-centra1
. Pour en savoir plus, consultez la section Paramètres de région des réglages supervisés. Si vous choisissezGPU
, les calculs de réglage du modèle s'effectuent dans la régionus-central1
.TPU
: utilise 64 cœurs du pod TPU v3 pour le réglage. Assurez-vous de disposer d'un quota suffisant. Les clés CMEK ne sont pas acceptées, mais VPC-SC l'est. Si vous choisissezTPU
, les calculs de réglage de votre modèle s'effectuent dans la régioneurope-west4
.
- Ajouter une instance TensorBoard : (facultatif) ID d'une instance Vertex AI TensorBoard. L'instance Vertex AI TensorBoard est utilisée pour créer un test une fois le job de réglage terminé. L'instance Vertex AI TensorBoard doit se trouver dans la même région que le pipeline de réglage.
- Chiffrement (facultatif) : choisissez d'utiliser une clé appartenant à Google et gérée par Google, ou une clé de chiffrement gérée par le client (CMEK). Les clés CMEK ne sont disponibles que pour le chiffrement dans la région
us-central1
. Dans toutes les autres régions disponibles, une clé appartenant à Google et gérée par Google est utilisée. Pour en savoir plus, consultez la page Présentation du chiffrement CMEK. - Compte de service (facultatif) Choisissez un compte de service géré par l'utilisateur. Un compte de service détermine les ressources Google Cloud auxquelles votre code de service peut accéder. Si vous ne choisissez pas de compte de service, un agent de service doté des autorisations appropriées pour la plupart des modèles est utilisé.
- Étapes d'entraînement : saisissez le nombre d'étapes à exécuter pour le réglage du modèle. La valeur par défaut est 300. La taille de lot varie en fonction de l'emplacement de réglage et de la taille du modèle. Pour les modèles à 8 000, tels que
- Cliquez sur Continuer.
- Si vous souhaitez importer le fichier de votre ensemble de données de distillation, sélectionnez
Importer un fichier JSONL
- Dans le champ Sélectionner un fichier JSONL, cliquez sur Parcourir et sélectionnez le fichier de votre ensemble de données.
- Dans le champ Emplacement de l'ensemble de données, cliquez sur Parcourir et sélectionnez le bucket Cloud Storage dans lequel vous souhaitez stocker le fichier de votre ensemble de données.
Utiliser un fichier JSONL existant
Dans Chemin d'accès du fichier Cloud Storage, cliquez sur Parcourir et sélectionnez le bucket Cloud Storage où se trouve le fichier de votre ensemble de données.
Importer le fichier JSONL dans Cloud Storage. Si le fichier de votre ensemble de données se trouve déjà dans un bucket Cloud Storage, sélectionnez Fichier JSONL existant dans Cloud Storage.
- (Facultatif) Pour évaluer votre modèle distillé, sélectionnez Activer l'évaluation du modèle et configurez votre évaluation du modèle :
- Ensemble de données d'évaluation : (facultatif) URI du fichier JSONL contenant l'ensemble de données d'évaluation pour la prédiction par lot et l'évaluation. L'évaluation n'est pas compatible avec
codechat-bison
. Pour plus d'informations, consultez la page Format d'ensemble de données pour le réglage d'un modèle de code. L'ensemble de données d'évaluation nécessite entre 10 et 250 exemples. - Intervalle d'évaluation : (facultatif, valeur par défaut
20
) nombre d'étapes de réglage entre chaque évaluation. Un intervalle d'évaluation n'est pas disponible pour les modèles de chat. Étant donné que l'évaluation s'exécute sur l'ensemble de données d'évaluation complet, un intervalle d'évaluation plus petit entraîne un temps de réglage plus long. Par exemple, sisteps
est égal à 200 et la valeur deEVAL_INTERVAL
égale à 100, vous n'obtenez que deux points de données pour les métriques d'évaluation. Ce paramètre nécessite queevaluation_data_uri
soit défini. - Activer l'arrêt prématuré : (facultatif, valeur par défaut
true
) Une valeurboolean
qui, si elle est définie surtrue
, arrête le réglage avant d'effectuer toutes les étapes de réglage en cas de performances du modèle comme mesuré par la précision des jetons prévus, ne s'améliore pas suffisamment entre les exécutions d'évaluations. Si elle est définie surfalse
, le réglage se poursuit jusqu'à ce que toutes les étapes de réglage soient terminées. Ce paramètre nécessite queevaluation_data_uri
soit défini. L'arrêt prématuré n'est pas disponible pour les modèles de chat. - Activer la sélection de points de contrôle : Lorsque cette option est activée, Vertex AI sélectionne et renvoie le point de contrôle avec les meilleures performances d'évaluation de modèle de tous les points de contrôle créés lors de la tâche de réglage. Lorsqu'elle est désactivée, le point de contrôle final créé lors de la tâche de réglage est renvoyé. Chaque point de contrôle fait référence à un instantané du modèle lors d'une tâche de réglage.
- Instance TensorBoard : (facultatif) ID d'une instance Vertex AI TensorBoard. L'instance Vertex AI TensorBoard est utilisée pour créer un test une fois la tâche de réglage terminée. L'instance Vertex AI TensorBoard doit se trouver dans la même région que le pipeline de réglage.
- Ensemble de données d'évaluation : (facultatif) URI du fichier JSONL contenant l'ensemble de données d'évaluation pour la prédiction par lot et l'évaluation. L'évaluation n'est pas compatible avec
- Cliquez sur Commencer la distillation.
Configurations recommandées
Le tableau suivant présente les configurations recommandées pour le réglage d'un modèle de fondation par tâche :
Tâche | Nombre d'exemples dans l'ensemble de données | Étapes d'entraînement |
---|---|---|
Classification | Plus de 100 | 200-1000 |
Synthèse | 100-500+ | 1000-1500 |
Questions-réponses extractives | Plus de 100 | 200 à 800 |
Pour les étapes d'entraînement, vous pouvez essayer plusieurs valeurs pour obtenir les meilleures performances sur un ensemble de données particulier (par exemple, 100, 200, 500).
Afficher la liste des modèles distillés
Vous pouvez afficher la liste des modèles de votre projet actuel, y compris de vos modèles distillés, à l'aide de la console Google Cloud ou du SDK Vertex AI pour Python.
Python
Avant d'essayer cet exemple, suivez les instructions de configuration pour Python décrites dans le guide de démarrage rapide de Vertex AI à l'aide des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Vertex AI Python.
Pour vous authentifier auprès de Vertex AI, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Console
Pour afficher vos modèles distillés dans la console Google Cloud, accédez à la page Vertex AI Model Registry.
Charger un modèle de texte distillé
L'exemple de code suivant utilise le SDK Vertex AI pour Python pour charger un modèle de génération de texte distillé :
import vertexai from vertexai.preview.language_models import TextGenerationModel model = TextGenerationModel.get_tuned_model(TUNED_MODEL_NAME)
Remplacez TUNED_MODEL_NAME
par le nom de ressource qualifié de votre modèle distillé.
Ce nom est au format projects/PROJECT_ID/locations/LOCATION/models/MODEL_ID
.
Vous pouvez trouver l'ID de votre modèle distillé dans Vertex AI Model Registry.
Métriques de réglage et d'évaluation
Vous pouvez configurer une tâche de réglage de modèle pour collecter et signaler les métriques de réglage de modèle et d'évaluation du modèle, qui peuvent ensuite être visualisées à l'aide de Vertex AI TensorBoard.
Métriques de réglage du modèle
Vous pouvez configurer une tâche de réglage de modèle afin de collecter les métriques de réglage suivantes pourchat-bison
, code-bison
, codechat-bison
et text-bison
:/train_total_loss
: perte de l'ensemble de données de réglage à une étape d'entraînement./train_fraction_of_correct_next_step_preds
: justesse du jeton à un pas d'entraînement. Une prédiction unique consiste en une séquence de jetons. Cette métrique mesure la précision des jetons prévus par rapport à la vérité terrain dans l'ensemble de données de réglage./train_num_predictions:
Nombre de jetons prévus à une étape d'évaluation.
Métriques d'évaluation du modèle
Vous pouvez configurer une tâche de réglage de modèle pour collecter les métriques d'évaluation suivantes pour code-bison
et text-bison
:
/eval_total_loss
: perte de l'ensemble de données d'évaluation à une étape d'évaluation./eval_fraction_of_correct_next_step_preds
: justesse du jeton à une étape d'évaluation. Une prédiction unique consiste en une séquence de jetons. Cette métrique mesure la précision des jetons prévus par rapport à la vérité terrain dans l'ensemble de données d'évaluation./eval_num_predictions
: nombre de jetons prédits à une étape d'évaluation.
Les visualisations des métriques sont disponibles une fois le job de réglage du modèle terminé. Si vous ne spécifiez qu'un ID d'instance Vertex AI TensorBoard et non un ensemble de données d'évaluation lorsque vous créez la tâche de réglage, seules les visualisations des métriques de réglage sont disponibles.