Cette page explique comment effectuer un affinage supervisé sur des modèles ouverts tels que Llama 3.1.
Modes de réglage compatibles
Low-Rank Adaptation (LoRA) : LoRA est un mode de réglage des paramètres avec optimisation qui n'ajuste qu'un sous-ensemble de paramètres. Elle est plus rentable et nécessite moins de données d'entraînement que l'affinage complet. En revanche, l'affinage complet a un potentiel de qualité plus élevé en ajustant tous les paramètres.
Modèles compatibles
- Gemma 3 27B IT (
google/gemma-3-27b-it) - 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) - Qwen 3 32B (
qwen/qwen3@qwen3-32b) - Llama 4 Scout 17B 16E Instruct
(
meta/llama4@llama-4-scout-17b-16e-instruct)
Régions où le service est disponible
- Iowa (
us-central1) - Pays-Bas (
europe-west4)
Limites
| Modèle | Spécification | Valeur |
|---|---|---|
| Gemma 3 27B IT | Modes de réglage | Affinage d'un sous-ensemble de paramètres Affinage complet |
| Longueur maximale de la 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 la séquence | 4 096 (affinage d'un sous-ensemble de paramètres) 8 192 (affinage complet) |
|
| 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 la séquence | 4 096 (affinage d'un sous-ensemble de paramètres) 8 192 (affinage complet) |
|
| Modalités | Texte | |
| Llama 3.2 1B Instruct | Modes de réglage | Affinage complet |
| Longueur maximale de la séquence | 8 192 | |
| Modalités | Texte | |
| Llama 3.2 3B Instruct | Modes de réglage | Affinage complet |
| Longueur maximale de la 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 la séquence | 4 096 (affinage d'un sous-ensemble de paramètres) 8 192 (affinage complet) |
|
| Modalités | Texte | |
| Llama 4 Scout 17B 16E Instruct | Modes de réglage | Affinage d'un sous-ensemble de paramètres |
| Longueur maximale de la séquence | 2 048 | |
| Modalités | Texte Images* * Les ensembles de données mixtes contenant à la fois des exemples de texte uniquement et d'images ne sont pas acceptés. S'il existe au moins un exemple d'image dans l'ensemble de données, tous les exemples de texte uniquement seront filtrés. |
|
| Qwen 3 32B | Modes de réglage | Affinage d'un sous-ensemble de paramètres Affinage complet |
| Longueur maximale de la séquence | 8 192 | |
| Modalités | Texte |
Avant de commencer
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
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 Vertex AI and Cloud Storage APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. 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 Vertex AI and Cloud Storage APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. - Installer et initialiser le SDK Vertex AI pour Python
- 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
service-PROJECT_NUMBER@gcp-sa-vertex-moss-ft.iam.gserviceaccount.comservice-PROJECT_NUMBER@gcp-sa-aiplatform.iam.gserviceaccount.com- Un modèle de base compatible, tel que Llama 3.1
Modèle dont l'architecture est identique à celle d'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 ajusté à partir d'un job d'ajustement Vertex AI. Cela vous permet de continuer à régler un modèle qui l'a déjà été.
Vous pouvez lancer un affinement de différentes manières :
- Accédez à la fiche du modèle, cliquez sur Affiner, 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 l'optimisation.
- 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.
Préparer l'ensemble de données pour le réglage
Un ensemble de données d'entraînement est nécessaire 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 ajusté.
Votre ensemble de données doit être dans l'un des formats JSON Lines (JSONL) acceptés suivants, où chaque ligne contient un seul exemple de réglage.
Importez vos fichiers JSONL dans Cloud Storage.
Ensembles de données textuelles uniquement
Finalisation de l'invite
{"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 multimodales
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 sont JPEG, PNG, WEBP et les images 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, assurez-vous d'avoir attribué le rôle IAM Utilisateur d'objets Storage (roles/storage.objectUser) aux deux buckets pour ces deux comptes de service :
Créer un job de réglage
Vous pouvez écouter les stations suivantes :
Console Cloud
Une tâche de réglage démarre. Vous pouvez la consulter sur la page "Réglage", dans 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 Vertex AI pour Python
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}",
)
Une fois le job terminé, les artefacts du modèle réglé sont stockés dans le dossier <output_uri>/postprocess/node-0/checkpoints/final.
Déployer le modèle réglé
Vous pouvez déployer le modèle ajusté sur un point de terminaison Vertex AI. Vous pouvez également exporter le modèle ajusté depuis Cloud Storage et le déployer ailleurs.
Pour déployer le modèle ajusté sur un point de terminaison Vertex AI :
Console Cloud
Accéder à la page "Jardin de modèles"
SDK Vertex AI 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 requêtes textuelles. 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 savoir comment obtenir des 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.
Tarifs
Le réglage vous est facturé en fonction de la tarification du réglage de modèles.
Vous êtes également facturé pour les services associés, tels que Cloud Storage et Vertex AI Prediction.
Découvrez les tarifs de Vertex AI et les tarifs de Cloud Storage, puis utilisez le simulateur de coût pour générer une estimation des coûts en fonction de votre utilisation prévue.