Fine-tuning yang diawasi dan distilasi untuk model terbuka

Halaman ini menjelaskan cara melakukan supervised fine-tuning dan distilasi pada model terbuka seperti Llama 3.1. Kecuali dinyatakan lain, petunjuk di halaman ini berlaku untuk supervised fine-tuning dan penyesuaian distilasi. Distilasi memungkinkan Anda menyesuaikan model siswa yang lebih kecil menggunakan output model pengajar yang lebih besar.

Mode penyesuaian yang didukung

  • Supervised fine-tuning:
    • Penyesuaian penuh
    • Low-Rank Adaptation (LoRA): LoRA adalah mode penyesuaian yang efisien secara parameter yang hanya menyesuaikan subset parameter. Lebih hemat biaya dan memerlukan lebih sedikit data pelatihan daripada penyesuaian penuh. Di sisi lain, penyesuaian menyeluruh memiliki potensi kualitas yang lebih tinggi dengan menyesuaikan semua parameter.
  • Penyesuaian penyulingan: Penyesuaian penyulingan menggunakan GenAI SDK, tempat Anda menentukan model pengajar untuk menghasilkan respons yang kemudian digunakan untuk menyesuaikan model siswa yang lebih kecil.

Kasus penggunaan yang direkomendasikan untuk penyesuaian penyulingan

Penyesuaian penyulingan paling efektif jika model pengajar jauh lebih mumpuni daripada model siswa dalam tugas target. Metode ini direkomendasikan untuk mentransfer kemampuan penalaran multi-langkah yang kompleks dari model pengajar yang lebih besar ke model siswa yang lebih kecil, termasuk:

  • Penalaran matematika dan kuantitatif
  • Penjawab pertanyaan ilmiah, medis, dan khusus domain lainnya yang memerlukan penalaran langkah demi langkah
  • Tugas lain di mana model pengajar yang kuat dengan perilaku "berpikir" atau chain-of-thought secara konsisten menghasilkan respons berkualitas lebih tinggi daripada siswa.

Distilasi memberikan peningkatan yang lebih kecil pada tugas yang model siswanya sudah berperforma mendekati model pengajar, atau pada tugas pengambilan informasi bentuk pendek yang jejak penalaran pengajar tidak memberikan nilai tambah.

Model yang didukung

Model yang mendukung supervised fine-tuning

  • 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-4b-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)

Model yang didukung penyesuaian distilasi

Model pengajar yang didukung:

  • DeepSeek R1 0528 MaaS (deepseek-ai/deepseek-r1-0528-maas)
  • DeepSeek V3.2 MaaS (deepseek-ai/deepseek-v3.2-maas)
  • Qwen 3 Next 80B A3B Thinking MaaS (qwen/qwen3-next-80b-a3b-thinking-maas)

Model siswa yang didukung:

  • 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)

Region yang didukung

  • Iowa (us-central1)
  • Belanda (europe-west4)
  • Oregon (us-west1)
  • Columbus (us-east5)
  • Singapura (asia-southeast1)

Batasan

Model Spesifikasi Nilai
Gemma 3 1B IT Mode penyetelan Penyesuaian penuh
Panjang urutan maksimum 8192
Modalities Teks
Gemma 3 4B IT Mode penyetelan Penyesuaian penuh
Panjang urutan maksimum 8192
Modalities Teks
Gemma 3 12B IT Mode penyetelan Penyesuaian penuh
Panjang urutan maksimum 8192
Modalities Teks
Gemma 3 27B IT Mode penyetelan Parameter-efficient fine-tuning
Fine-tuning penuh
Panjang urutan maksimum 8192
Modalities Teks
Medgemma 1.5 4B IT Mode penyetelan Penyesuaian penuh
Panjang urutan maksimum 8192
Modalities Teks
Llama 3.1 8B Mode penyetelan Parameter-efficient fine-tuning
Fine-tuning penuh
Panjang urutan maksimum 8192
Modalities Teks
Llama 3.1 8B Instruct Mode penyetelan Parameter-efficient fine-tuning
Fine-tuning penuh
Panjang urutan maksimum 8192
Modalities Teks
Llama 3.2 1B Instruct Mode penyetelan Penyesuaian penuh
Panjang urutan maksimum 8192
Modalities Teks
Llama 3.2 3B Instruct Mode penyetelan Penyesuaian penuh
Panjang urutan maksimum 8192
Modalities Teks
Llama 3.3 70B Instruct Mode penyetelan Parameter-efficient fine-tuning
Fine-tuning penuh
Panjang urutan maksimum 8192
Modalities Teks
Llama 4 Scout 17B 16E Instruct Mode penyetelan Fine-tuning yang efisien parameter
Panjang urutan maksimum 2048
Modalities Text
Images*

*Set data campuran yang berisi contoh teks saja dan gambar tidak didukung. Jika ada setidaknya satu contoh gambar dalam set data, semua contoh teks saja akan difilter.
Qwen 3 4B Mode penyetelan Penyesuaian penuh
Panjang urutan maksimum 8192
Modalities Teks
Qwen 3 8B Mode penyetelan Penyesuaian penuh
Panjang urutan maksimum 8192
Modalities Teks
Qwen 3 14B Mode penyetelan Penyesuaian penuh
Panjang urutan maksimum 8192
Modalities Teks
Qwen 3 32B Mode penyetelan Parameter-efficient fine-tuning
Fine-tuning penuh
Panjang urutan maksimum 8192
Modalities Teks

Sebelum memulai

  1. Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
  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 Gemini Enterprise Agent Platform 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 Gemini Enterprise Agent Platform 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

Instal SDK dan impor library untuk metode penyesuaian Anda.

Supervised fine-tuning

Instal dan lakukan inisialisasi Vertex AI SDK untuk Python, lalu impor library berikut:

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

Penyesuaian distilasi

Instal SDK berikut:

pip install google-genai

Kemudian, impor library berikut:

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)

Menyiapkan set data untuk penyesuaian

Set data pelatihan diperlukan untuk penyesuaian. Sebaiknya siapkan set data validasi opsional jika Anda ingin mengevaluasi performa model yang telah disesuaikan.

Set data Anda harus dalam salah satu format JSON Lines (JSONL) yang didukung berikut, dengan setiap baris berisi satu contoh penyesuaian.

Upload file JSONL Anda ke Cloud Storage.

Set data hanya teks

Penyelesaian perintah

{"prompt": "<prompt text>", "completion": "<ideal generated text>"}

Format chat berbasis giliran

{"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, ..." }]}
]}

Set data multimodal

Format chat berbasis giliran

{"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, ..." }]}
]}

Format yang didukung mencakup JPEG, PNG, WEBP, dan gambar berenkode Base64.

Perhatikan bahwa jika gambar Anda disimpan di bucket Cloud Storage yang berbeda dari file JSONL Anda, pastikan Anda telah memberikan peran IAM Storage Object User (roles/storage.objectUser) di kedua bucket untuk kedua akun layanan ini:

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

Buat tugas penyesuaian

Anda dapat menyesuaikan dari:

  • Model dasar yang didukung, seperti Llama 3.1
  • Model yang memiliki arsitektur yang sama dengan salah satu model dasar yang didukung. Ini bisa berupa titik pemeriksaan model kustom dari repositori seperti Hugging Face atau model yang telah disesuaikan sebelumnya dari tugas penyesuaian Gemini Enterprise Agent Platform. Dengan begitu, Anda dapat terus menyesuaikan model yang telah disesuaikan.

Konsol Cloud (Diawasi)

  1. Anda dapat memulai penyesuaian dengan cara berikut:

    • Buka kartu model, klik Sesuaikan, lalu pilih Penyesuaian terkelola.

    Buka kartu model Llama 3.1

    atau

    • Buka halaman Penyesuaian, lalu klik Buat model yang disesuaikan.

    Buka Penyesuaian

  2. Isi parameter, lalu klik Mulai penyesuaian.

Tindakan ini akan memulai tugas penyesuaian, yang dapat Anda lihat di halaman Penyesuaian di tab Penyesuaian terkelola.

Setelah tugas tuning selesai, Anda dapat melihat informasi tentang model yang di-tuning di tab Detail.

Agent Platform SDK (Diawasi)

Ganti nilai parameter dengan nilai Anda sendiri, lalu jalankan kode berikut untuk membuat tugas penyesuaian:

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 (Distilasi)

Ganti nilai parameter dengan nilai Anda sendiri, lalu jalankan kode berikut untuk membuat tugas penyesuaian distilasi:

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

Artefak model yang disesuaikan

Setelah tugas penyesuaian selesai, artefak model untuk model yang disesuaikan akan disimpan di direktori output Cloud Storage Anda.

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
  • Maksimum 10 titik pemeriksaan disimpan.
  • Jika jumlah epoch (E) kurang dari 10, maka tepatnya E titik pemeriksaan disimpan (satu untuk setiap epoch).
  • Pos pemeriksaan perantara dari rentang M hingga N diurutkan. Perhatikan bahwa titik pemeriksaan perantara tidak selalu diberi nomor secara berurutan. Misalnya, pos pemeriksaan mungkin diberi nomor 1, 3, 5, 10, bukan 1, 2, 3, 4.

Men-deploy model yang disesuaikan

Anda dapat men-deploy model yang di-tune ke endpoint Gemini Enterprise Agent Platform. Anda juga dapat mengekspor model yang telah di-tuning dari Cloud Storage dan men-deploy-nya di tempat lain.

Untuk men-deploy model yang di-tune ke endpoint Gemini Enterprise Agent Platform:

Cloud Console

  1. Buka halaman Model Garden, lalu klik Deploy model with custom weights.

    Buka Model Garden

  2. Isi parameter, lalu klik Deploy.

Agent Platform SDK untuk Python

Men-deploy G2 machine menggunakan container bawaan:

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

Mendapatkan inferensi

Setelah deployment berhasil, Anda dapat mengirim permintaan ke endpoint dengan perintah teks. Perhatikan bahwa beberapa perintah pertama akan memerlukan waktu lebih lama untuk dieksekusi.

# 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)

Untuk mengetahui detail selengkapnya tentang cara mendapatkan inferensi dari model yang di-deploy, lihat Mendapatkan inferensi online.

Perhatikan bahwa model terbuka terkelola menggunakan metode chat.completions, bukan metode predict yang digunakan oleh model yang di-deploy. Untuk mengetahui informasi selengkapnya tentang cara mendapatkan inferensi dari model terkelola, lihat Melakukan panggilan ke model Llama.

Batas dan kuota

Kuota diterapkan pada jumlah tugas penyesuaian serentak. Setiap project dilengkapi dengan kuota default untuk menjalankan setidaknya satu tugas penyesuaian. Ini adalah kuota global, yang dibagikan di semua region yang tersedia dan model yang didukung. Jika Anda ingin menjalankan lebih banyak tugas secara bersamaan, Anda harus meminta kuota tambahan untuk Global concurrent managed OSS model fine-tuning jobs per project.

Selain kuota tugas penyesuaian, penyesuaian model pengajaran menggunakan model pengajar, dan project Anda harus memiliki kuota yang cukup untuk model pengajar yang ditentukan. Model terbuka yang disediakan sebagai layanan (MaaS) menggunakan kuota bersama dinamis. Saat tugas penyesuaian memanggil model pengajar, tugas tersebut akan menggunakan kuota bersama project untuk model tersebut. Untuk informasi selengkapnya tentang kuota untuk model terbuka terkelola, lihat Model terkelola Gemini Enterprise Agent Platform untuk MaaS.

Harga

Anda ditagih untuk penyesuaian berdasarkan harga untuk Penyesuaian model. Jumlah token pelatihan dihitung dengan mengalikan jumlah token dalam set data pelatihan Anda dengan jumlah epoch. Untuk penyesuaian distilasi, Anda juga ditagih untuk panggilan API yang dilakukan ke model pengajar untuk membuat respons, berdasarkan harga untuk model terkelola.

Anda juga ditagih untuk layanan terkait, seperti Cloud Storage dan Prediksi Platform Agen Gemini Enterprise.

Pelajari harga Platform Agen Gemini Enterprise, harga Cloud Storage, dan gunakan Kalkulator Harga untuk membuat perkiraan biaya berdasarkan penggunaan yang Anda proyeksikan.

Langkah berikutnya