Cette page explique comment effectuer un réglage supervisé et par distillation sur des modèles ouverts tels que Llama 3.1. Sauf indication contraire, les instructions de cette page s'appliquent à la fois à l'affinage supervisé et à l'affinage par distillation. La distillation vous permet d'ajuster un modèle élève plus petit à l'aide des résultats d'un modèle enseignant plus grand.
Modes de réglage compatibles
- Affinage supervisé :
- Affinage complet
- Adaptation à faible rang (LoRA) : LoRA est un mode de réglage des paramètres avec optimisation qui n'ajuste qu'un sous-ensemble de paramètres. Il est plus économique et nécessite moins de données d'entraînement que l'affinage complet. En revanche, l'affinage complet offre un potentiel de qualité supérieur en ajustant tous les paramètres.
- Réglage par distillation : le réglage par distillation utilise le SDK GenAI, dans lequel vous spécifiez un modèle enseignant pour générer des réponses qui sont ensuite utilisées pour régler un modèle élève plus petit.
Cas d'utilisation recommandés pour l'affinage par distillation
Le réglage par distillation est plus efficace lorsque le modèle enseignant est nettement plus performant que le modèle élève pour la tâche cible. Il est recommandé pour transférer des capacités de raisonnement complexes en plusieurs étapes d'un enseignant plus grand vers un élève plus petit, y compris :
- Mathématiques et raisonnement quantitatif
- Réponses à des questions scientifiques, médicales et d'autres domaines spécifiques nécessitant un raisonnement étape par étape
- Autres tâches pour lesquelles un modèle enseignant puissant avec un comportement de "réflexion" ou de chaîne de pensée produit systématiquement des réponses de meilleure qualité que l'élève.
La distillation offre des gains plus faibles sur les tâches où le modèle élève est déjà proche du modèle enseignant, ou sur les tâches de récupération de texte court où la trace de raisonnement de l'enseignant n'apporte pas de valeur ajoutée.
Modèles compatibles
Modèles compatibles avec l'affinage supervisé
- Gemma 4 E2B IT (
google/gemma4@gemma-4-e2b-it) - Gemma 4 E4B IT (
google/gemma4@gemma-4-e4b-it) - Gemma 4 26B A4B IT (
google/gemma4@gemma-4-26b-a4b-it) - Gemma 4 31B IT (
google/gemma4@gemma-4-31b-it) - Gemma 3 1B IT (
google/gemma3@gemma-3-1b-it) - Gemma 3 4B IT (
google/gemma3@gemma-3-4b-it) - Gemma 3 12B IT (
google/gemma3@gemma-3-12b-it) - Gemma 3 27B IT (
google/gemma3@gemma-3-27b-it) - Medgemma 1.5 4B IT (
google/medgemma@medgemma-1.5-4b-it) - Qwen 3.6 27B (
qwen/qwen3-6@qwen3.6-27b) - Qwen 3.6 35B A3B (
qwen/qwen3-6@qwen3.6-35b-a3b) - Qwen 3.5 9B (
qwen/qwen3-5@qwen3.5-9b) - Qwen 3 4B (
qwen/qwen3@qwen3-4b) - Qwen 3 8B (
qwen/qwen3@qwen3-8b) - Qwen 3 14B (
qwen/qwen3@qwen3-14b) - Qwen 3 32B (
qwen/qwen3@qwen3-32b) - Llama 3.1 8B (
meta/llama3_1@llama-3.1-8b) - Llama 3.1 8B Instruct (
meta/llama3_1@llama-3.1-8b-instruct) - Llama 3.2 1B Instruct (
meta/llama3-2@llama-3.2-1b-instruct) - Llama 3.2 3B Instruct (
meta/llama3-2@llama-3.2-3b-instruct) - Llama 3.3 70B Instruct (
meta/llama3-3@llama-3.3-70b-instruct) - Llama 4 Scout 17B 16E Instruct (
meta/llama4@llama-4-scout-17b-16e-instruct) - GLM 4.7 Flash (
zai-org/glm-4.7-flash@glm-4.7-flash)
Modèles compatibles avec le réglage par distillation
Modèles enseignants compatibles :
- DeepSeek R1 0528 MaaS (
deepseek-ai/deepseek-r1-0528-maas) - DeepSeek V3.2 MaaS (
deepseek-ai/deepseek-v3.2-maas) - GLM 5.2 MaaS (
zai-org/glm-5.2-maas) - Kimi K2 Thinking MaaS (
moonshotai/kimi-k2-thinking-maas) - Qwen 3 Next 80B A3B Thinking MaaS (
qwen/qwen3-next-80b-a3b-thinking-maas)
Modèles d'élèves compatibles :
- Qwen 3 4B (
qwen/qwen3@qwen3-4b) - Qwen 3 8B (
qwen/qwen3@qwen3-8b) - Qwen 3 14B (
qwen/qwen3@qwen3-14b) - Qwen 3 32B (
qwen/qwen3@qwen3-32b) - Gemma 3 1B IT (
google/gemma3@gemma-3-1b-it) - Gemma 3 4B IT (
google/gemma3@gemma-3-4b-it) - Gemma 3 12B IT (
google/gemma3@gemma-3-12b-it) - Gemma 3 27B IT (
google/gemma3@gemma-3-27b-it)
Régions où le service est disponible
Le point de terminaison mondial (global) est fortement recommandé pour lancer des jobs de réglage. Il sélectionnera une région prise en charge disposant de capacité disponible et lancera un job de réglage.
Tenez compte des points suivants lorsque vous lancez un job à partir du point de terminaison global :
- Lorsque vous créez un job de réglage global, un job de réglage régional correspondant (dans la région sélectionnée) est créé. Seul un job de réglage sera décompté de votre quota et vous sera facturé.
- Les sous-ressources (comme les tests ou les modèles TensorBoard) seront créées dans la région cible sélectionnée. L'emplacement peut être extrait du nom complet de la ressource et interrogé à l'aide du SDK Vertex AI.
Les jobs de réglage spécifiques à une région sont toujours disponibles pour les utilisateurs ayant des besoins plus avancés (par exemple, toutes les ressources limitées à une seule région) :
- Iowa (
us-central1) - Pays-Bas (
europe-west4) - Oregon (
us-west1) - Columbus (
us-east5) - Singapour (
asia-southeast1) - Jakarta (
asia-southeast2)
Limites
| Modèle | Spécification | Valeur |
|---|---|---|
| Gemma 4 E2B IT | Modes de réglage | Affinage d'un sous-ensemble de paramètres |
| Longueur maximale de séquence | 8 192 | |
| Modalités | Texte | |
| Gemma 4 E4B IT | Modes de réglage | Affinage d'un sous-ensemble de paramètres |
| Longueur maximale de séquence | 8 192 | |
| Modalités | Texte | |
| Gemma 4 26B A4B IT | Modes de réglage | Affinage d'un sous-ensemble de paramètres |
| Longueur maximale de séquence | 8 192 | |
| Modalités | Texte | |
| Gemma 4 31B IT | Modes de réglage | Affinage d'un sous-ensemble de paramètres |
| Longueur maximale de séquence | 8 192 | |
| Modalités | Texte | |
| Gemma 3 1B IT | Modes de réglage | Affinage complet |
| Longueur maximale de séquence | 8 192 | |
| Modalités | Texte | |
| Gemma 3 4B IT | Modes de réglage | Affinage complet |
| Longueur maximale de séquence | 8 192 | |
| Modalités | Texte | |
| Gemma 3 12B IT | Modes de réglage | Affinage complet |
| Longueur maximale de séquence | 8 192 | |
| Modalités | Texte | |
| Gemma 3 27B IT | Modes de réglage | Affinage d'un sous-ensemble de paramètres Affinage complet |
| Longueur maximale de séquence | 8 192 | |
| Modalités | Texte | |
| Medgemma 1.5 4B IT | Modes de réglage | Affinage complet |
| Longueur maximale de séquence | 8 192 | |
| Modalités | Texte | |
| Qwen 3.6 27B | Modes de réglage | Affinage d'un sous-ensemble de paramètres |
| Longueur maximale de séquence | 12 288 | |
| Modalités | Texte | |
| Qwen 3.6 35B A3B | Modes de réglage | Affinage d'un sous-ensemble de paramètres |
| Longueur maximale de séquence | 12 288 | |
| Modalités | Texte | |
| Qwen 3.5 9B | Modes de réglage | Affinage complet |
| Longueur maximale de séquence | 8 192 | |
| Modalités | Texte | |
| Qwen 3 4B | Modes de réglage | Affinage complet |
| Longueur maximale de séquence | 8 192 | |
| Modalités | Texte | |
| Qwen 3 8B | Modes de réglage | Affinage complet |
| Longueur maximale de séquence | 8 192 | |
| Modalités | Texte | |
| Qwen 3 14B | Modes de réglage | Affinage complet |
| Longueur maximale de séquence | 8 192 | |
| Modalités | Texte | |
| Qwen 3 32B | Modes de réglage | Affinage d'un sous-ensemble de paramètres Affinage complet |
| Longueur maximale de séquence | 8 192 | |
| Modalités | Texte | |
| Llama 3.1 8B | Modes de réglage | Affinage d'un sous-ensemble de paramètres Affinage complet |
| Longueur maximale de séquence | 8 192 | |
| Modalités | Texte | |
| Llama 3.1 8B Instruct | Modes de réglage | Affinage d'un sous-ensemble de paramètres Affinage complet |
| Longueur maximale de séquence | 8 192 | |
| Modalités | Texte | |
| Llama 3.2 1B Instruct | Modes de réglage | Affinage complet |
| Longueur maximale de séquence | 8 192 | |
| Modalités | Texte | |
| Llama 3.2 3B Instruct | Modes de réglage | Affinage complet |
| Longueur maximale de séquence | 8 192 | |
| Modalités | Texte | |
| Llama 3.3 70B Instruct | Modes de réglage | Affinage d'un sous-ensemble de paramètres Affinage complet |
| Longueur maximale de séquence | 8 192 | |
| Modalités | Texte | |
| Llama 4 Scout 17B 16E Instruct | Modes de réglage | Affinage d'un sous-ensemble de paramètres |
| Longueur maximale de séquence | 2 048 | |
| Modalités | Texte Images* *Les ensembles de données mixtes contenant à la fois des exemples de texte et d'images ne sont pas acceptés. Si l'ensemble de données contient au moins un exemple d'image, tous les exemples textuels seront filtrés. |
|
| GLM 4.7 Flash | Modes de réglage | Affinage d'un sous-ensemble de paramètres |
| Longueur maximale de séquence | 8 192 | |
| Modalités | Texte |
Avant de commencer
- Connectez-vous à votre compte Google Cloud . Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits sans frais pour exécuter, tester et déployer des charges de travail.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Gemini Enterprise Agent Platform and Cloud Storage APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Gemini Enterprise Agent Platform and Cloud Storage APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.
Installez le SDK et importez les bibliothèques pour votre méthode de réglage.
Affinage supervisé
Installez et initialisez le SDK Vertex AI pour Python, puis importez les bibliothèques suivantes :
import os
import time
import uuid
import vertexai
vertexai.init(project=PROJECT_ID, location=REGION)
from google.cloud import aiplatform
from vertexai.tuning import sft, SourceModel
Réglage de la distillation
Installez le SDK suivant :
pip install google-genai
Importez ensuite les bibliothèques suivantes :
import os
import time
import uuid
from google import genai
from google.genai import types
client = genai.Client(vertexai=True, project=PROJECT_ID, location=REGION)
Préparer l'ensemble de données pour le réglage
Un ensemble de données d'entraînement est requis pour le réglage. Nous vous recommandons de préparer un ensemble de données de validation facultatif si vous souhaitez évaluer les performances de votre modèle réglé.
Votre ensemble de données doit être dans l'un des formats JSON Lines (JSONL) compatibles suivants, où chaque ligne contient un seul exemple de réglage.
Importez vos fichiers JSONL dans Cloud Storage.
Ensembles de données textuelles
Complétion de prompt
{"prompt": "<prompt text>", "completion": "<ideal generated text>"}
Format de chat au tour par tour
{"messages": [
{"content": "You are a chatbot that helps with scientific literature and generates state-of-the-art abstracts from articles.",
"role": "system"},
{"content": "Summarize the paper in one paragraph.",
"role": "user"},
{"content": " Here is a one paragraph summary of the paper:\n\nThe paper describes PaLM, ...",
"role": "assistant"}
]}
GenerateContent
{
"systemInstruction": {
"parts": [{ "text": "You are a chatbot that helps with scientific literature and generates state-of-the-art abstracts from articles." }]},
"contents": [
{"role": "user",
"parts": [{ "text": "Summarize the paper in one paragraph." }]},
{"role": "assistant",
"parts": [{ "text": "Here is a one paragraph summary of the paper:\n\nThe paper describes PaLM, ..." }]}
]}
Ensembles de données multimodaux
Format de chat au tour par tour
{"messages": [
{"role": "user", "content": [
{"type": "text", "text": "You are a chatbot that helps with scientific literature and generates state-of-the-art abstracts from articles."},
{"type": "image_url", "image_url": {
"url": "gs://your-gcs-bucket/your-image.jpeg",
"detail": "low"}}]
},
{"role": "assistant", "content": [
{"type": "text", "text": "Here is a one paragraph summary of the paper:\n\nThe paper describes PaLM, ..."}]
},
{"role": "user", "content": [
{"type": "text", "text": "You are a chatbot that helps with scientific literature and generates state-of-the-art abstracts from articles."},
{"type": "image_url", "image_url": {
"url": "data:image/jpeg;base64,<base64 image>",
"detail": "low"}}]
},
{"role": "assistant", "content": [
{"type": "text", "text": "Here is a one paragraph summary of the paper:\n\nThe paper describes PaLM, ..."}]
},
]}
GenerateContent
{
"systemInstruction": {
"parts": [{ "text": "You are a chatbot that helps with scientific literature and generates state-of-the-art abstracts from articles." }]},
"contents": [
{"role": "user",
"parts": [
{"text": "You are a chatbot that helps with scientific literature and generates state-of-the-art abstracts from articles." },
{"file_data": {
"mime_type": "image/jpeg", "file_uri": "gs://your-gcs-bucket/your-image.jpeg"}}]
},
{"role": "assistant",
"parts": [{ "text": "Here is a one paragraph summary of the paper:\n\nThe paper describes PaLM, ..." }]}
]}
Les formats acceptés incluent les images JPEG, PNG, WEBP et encodées en Base64.
Notez que si vos images sont stockées dans un bucket Cloud Storage différent de celui de vos fichiers JSONL, vous devez vous assurer d'avoir attribué le rôle IAM "Utilisateur d'objets Storage" (roles/storage.objectUser) sur les deux buckets pour ces deux comptes de service :
service-PROJECT_NUMBER@gcp-sa-vertex-moss-ft.iam.gserviceaccount.comservice-PROJECT_NUMBER@gcp-sa-aiplatform.iam.gserviceaccount.com
Créer un job de réglage
Vous pouvez régler les paramètres suivants :
- Un modèle de base compatible, tel que Llama 3.1
Un modèle qui possède la même architecture que l'un des modèles de base compatibles. Il peut s'agir d'un point de contrôle de modèle personnalisé provenant d'un dépôt tel que Hugging Face ou d'un modèle précédemment réglé à partir d'un job de réglage Gemini Enterprise Agent Platform. Cela vous permet de continuer à régler un modèle qui a déjà été réglé.
Console Cloud (supervisée)
Vous pouvez lancer un réglage de différentes manières :
- Accédez à la fiche de modèle, cliquez sur Réglage, puis sélectionnez Réglage géré.
Accéder à la fiche de modèle Llama 3.1
ou
- Accédez à la page Réglage, puis cliquez sur Créer un modèle réglé.
Renseignez les paramètres, puis cliquez sur Commencer le réglage.
Une tâche de réglage démarre. Vous pouvez la voir sur la page "Réglage", sous l'onglet Réglage géré.
Une fois le job de réglage terminé, vous pouvez afficher les informations sur le modèle réglé dans l'onglet Détails.
SDK Agent Platform (supervisé)
Remplacez les valeurs des paramètres par les vôtres, puis exécutez le code suivant pour créer un job de réglage :
sft_tuning_job = sft.train(
source_model=SourceModel(
base_model="meta/llama3_1@llama-3.1-8b",
# Optional, folder that is either a custom model checkpoint or previously tuned model
custom_base_model="gs://{STORAGE-URI}",
),
tuning_mode="FULL", # FULL or PEFT_ADAPTER
epochs=3,
train_dataset="gs://{STORAGE-URI}", # JSONL file
validation_dataset="gs://{STORAGE-URI}", # JSONL file
output_uri="gs://{STORAGE-URI}",
)
SDK GenAI (distillation)
Remplacez les valeurs des paramètres par les vôtres, puis exécutez le code suivant pour créer un job de réglage par distillation :
tuning_job = client.tunings.tune(
base_model="qwen/qwen3@qwen3-4b",
training_dataset=types.TuningDataset(
gcs_uri="gs://{STORAGE-URI}"
),
config=types.CreateTuningJobConfig(
method="DISTILLATION",
base_teacher_model="qwen/qwen3-next-80b-a3b-thinking-maas",
epoch_count=3,
validation_dataset=types.TuningValidationDataset(
gcs_uri="gs://{STORAGE-URI}"
),
output_uri="gs://{STORAGE-URI}",
),
)
Artefacts de modèle réglé
Une fois le job de réglage terminé, les artefacts du modèle réglé sont stockés dans votre répertoire de sortie Cloud Storage.
gs://<output_dir>/
# (Distillation tuning only) The labeled dataset from teacher model's inference
-> distillation_labelled_dataset.jsonl
gs://<output_dir>/postprocess/node-0/checkpoints/
# Final checkpoint
-> final/
-> model-00001-of-000xx.safetensors
-> model-000yy-of-000xx.safetensors
# Intermediate checkpoints
-> checkpoint-M/
-> model-00001-of-000xx.safetensors
-> model-000yy-of-000xx.safetensors
…
-> checkpoint-N/
-> model-00001-of-000xx.safetensors
-> model-000yy-of-000xx.safetensors
- Vous pouvez stocker jusqu'à 10 points de contrôle.
- Si le nombre d'époques (E) est inférieur à 10, exactement E points de contrôle sont stockés (un pour chaque époque).
- Les points de contrôle intermédiaires de la plage M à N sont ordonnés. Notez que les points de contrôle intermédiaires ne sont pas toujours numérotés de manière consécutive. Par exemple, les points de contrôle peuvent être numérotés 1, 3, 5, 10 plutôt que 1, 2, 3, 4.
Déployer le modèle réglé
Vous pouvez déployer le modèle réglé sur un point de terminaison Gemini Enterprise Agent Platform. Vous pouvez également exporter le modèle réglé depuis Cloud Storage et le déployer ailleurs.
Pour déployer le modèle réglé sur un point de terminaison Gemini Enterprise Agent Platform :
Console Cloud
Accédez à la page Model Garden, puis cliquez sur Déployer un modèle avec des pondérations personnalisées.
Renseignez les paramètres, puis cliquez sur Déployer.
SDK Agent Platform pour Python
Déployez un G2 machine à l'aide d'un conteneur prédéfini :
from vertexai.preview import model_garden
MODEL_ARTIFACTS_STORAGE_URI = "gs://{STORAGE-URI}/postprocess/node-0/checkpoints/final"
model = model_garden.CustomModel(
gcs_uri=MODEL_ARTIFACTS_STORAGE_URI,
)
# deploy the model to an endpoint using GPUs. Cost will incur for the deployment
endpoint = model.deploy(
machine_type="g2-standard-12",
accelerator_type="NVIDIA_L4",
accelerator_count=1,
)
Obtenir une inférence
Une fois le déploiement réussi, vous pouvez envoyer des requêtes au point de terminaison avec des prompts textuels. Notez que l'exécution des premières requêtes prendra plus de temps.
# Loads the deployed endpoint
endpoint = aiplatform.Endpoint("projects/{PROJECT_ID}/locations/{REGION}/endpoints/{endpoint_name}")
prompt = "Summarize the following article. Article: Preparing a perfect risotto requires patience and attention to detail. Begin by heating butter in a large, heavy-bottomed pot over medium heat. Add finely chopped onions and minced garlic to the pot, and cook until they're soft and translucent, about 5 minutes. Next, add Arborio rice to the pot and cook, stirring constantly, until the grains are coated with the butter and begin to toast slightly. Pour in a splash of white wine and cook until it's absorbed. From there, gradually add hot chicken or vegetable broth to the rice, stirring frequently, until the risotto is creamy and the rice is tender with a slight bite.. Summary:"
# Define input to the prediction call
instances = [
{
"prompt": "What is a car?",
"max_tokens": 200,
"temperature": 1.0,
"top_p": 1.0,
"top_k": 1,
"raw_response": True,
},
]
# Request the prediction
response = endpoint.predict(
instances=instances
)
for prediction in response.predictions:
print(prediction)
Pour en savoir plus sur l'obtention d'inférences à partir d'un modèle déployé, consultez Obtenir une inférence en ligne.
Notez que les modèles ouverts gérés utilisent la méthode chat.completions au lieu de la méthode predict utilisée par les modèles déployés. Pour en savoir plus sur l'obtention d'inférences à partir de modèles gérés, consultez Appeler un modèle Llama.
Limites et quotas
Le quota est appliqué au nombre de jobs de réglage simultanés. Chaque projet est associé à un quota par défaut pour exécuter au moins un job de réglage. Il s'agit d'un quota mondial, partagé entre toutes les régions disponibles et tous les modèles compatibles. Si vous souhaitez exécuter plus de jobs simultanément, vous devez demander un quota supplémentaire pour Global concurrent managed OSS model fine-tuning jobs per project.
En plus du quota de jobs de réglage, l'affinage par distillation utilise le modèle enseignant, et votre projet doit disposer d'un quota suffisant pour le modèle enseignant spécifié. Les modèles ouverts fournis en tant que service (MaaS) utilisent un quota partagé dynamique. Lorsqu'un job de réglage appelle un modèle enseignant, il consomme le quota partagé du projet pour ce modèle. Pour en savoir plus sur les quotas des modèles ouverts gérés, consultez Modèles gérés Gemini Enterprise Agent Platform pour MaaS.
Tarifs
Le réglage vous est facturé en fonction des tarifs de réglage de modèle. Le nombre de jetons d'entraînement est calculé en multipliant le nombre de jetons de votre ensemble de données d'entraînement par le nombre d'époques. Pour le réglage par distillation, vous êtes également facturé pour les appels d'API effectués vers le modèle enseignant pour générer des réponses, en fonction des tarifs des modèles gérés.
Vous êtes également facturé pour les services associés, tels que Cloud Storage et Gemini Enterprise Agent Platform Prediction.
Consultez les tarifs de Gemini Enterprise Agent Platform et les tarifs de Cloud Storage, et utilisez le simulateur de coût pour générer une estimation des coûts en fonction de votre utilisation prévue.