Régler un modèle ouvert

Cette page explique comment effectuer un affinage supervisé sur des modèles ouverts tels que Llama 3.1.

Modes de réglage compatibles

  • 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. Elle est plus rentable et nécessite moins de données d'entraînement que l'affinage complet. En revanche, l'affinage complet offre un potentiel de qualité plus élevé en ajustant tous les paramètres.

Modèles compatibles

  • 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)
  • 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 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 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)
  • Oregon (us-west1)
  • Columbus (us-east5)
  • Singapour (asia-southeast1)

Limites

Modèle Spécification Valeur
Gemma 3 1B-it Modes de réglage Affinage complet
Longueur maximale de la séquence 8 192
Modalités Texte
Gemma 3 4B-it Modes de réglage Affinage complet
Longueur maximale de la séquence 8 192
Modalités Texte
Gemma 3 12B-it Modes de réglage Affinage complet
Longueur maximale de la 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 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 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 la séquence 8 192
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 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 la séquence 2 048
Modalités Texte
Images*

* Les ensembles de données mixtes contenant 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 4B Modes de réglage Affinage complet
Longueur maximale de la séquence 8 192
Modalités Texte
Qwen 3 8B Modes de réglage Affinage complet
Longueur maximale de la séquence 8 192
Modalités Texte
Qwen3 14B Modes de réglage Affinage complet
Longueur maximale de la 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 la séquence 8 192
Modalités Texte

Avant de commencer

  1. 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.
  2. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. 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 the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  5. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. 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 the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  8. Installer et initialiser le SDK Vertex AI pour Python
  9. 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
    

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 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 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 comptes de service pour les deux buckets :

  • service-PROJECT_NUMBER@gcp-sa-vertex-moss-ft.iam.gserviceaccount.com
  • service-PROJECT_NUMBER@gcp-sa-aiplatform.iam.gserviceaccount.com

Créer un job de réglage

Vous pouvez écouter les stations suivantes :

  • Un modèle de base compatible, tel que Llama 3.1
  • Modèle dont l'architecture est identique à celle de 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 ajusté à partir d'un job d'ajustement Vertex AI. Cela vous permet de continuer à affiner un modèle qui l'a déjà été.

Console Cloud

  1. Vous pouvez lancer le réglage précis de différentes manières :

    • Accédez à la fiche de 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é.

    Accéder à "Réglage"

  2. Renseignez les paramètres, puis cliquez sur Commencer l'ajustement.

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 d'optimisation :

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}",
)

Artefacts de modèle ajusté

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>/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
  • Un maximum de 10 points de contrôle sont stockés.
  • 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 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

  1. Accédez à la page Model Garden, puis cliquez sur Déployer un modèle avec des pondérations personnalisées.

Accéder à la page "Jardin de modèles"

  1. Renseignez les paramètres, puis cliquez sur Déployer.

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

L'ajustement vous est facturé en fonction de la tarification de l'ajustement de modèles. Le nombre de jetons d'entraînement est calculé en multipliant le nombre de jetons dans votre ensemble de données d'entraînement par le nombre d'époques.

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.

Étapes suivantes