Menggunakan penyesuaian berkelanjutan untuk model Gemini

Penyesuaian berkelanjutan memungkinkan Anda terus menyesuaikan model atau checkpoint model yang sudah disesuaikan dengan menambahkan lebih banyak epoch atau contoh pelatihan. Menggunakan model atau checkpoint yang sudah disesuaikan sebagai model dasar memungkinkan eksperimen penyesuaian yang lebih efisien.

Anda dapat menggunakan penyesuaian berkelanjutan untuk tujuan berikut:

  • Untuk menyesuaikan dengan lebih banyak data jika model yang sudah disesuaikan tidak sesuai.
  • Untuk meningkatkan performa atau menjaga model tetap terbaru dengan data baru.
  • Untuk menyesuaikan lebih lanjut model yang sudah disesuaikan.

Model Gemini berikut mendukung penyesuaian berkelanjutan:

Klik untuk meluaskan model yang didukung

Untuk mengetahui informasi mendetail tentang versi model Gemini, lihat Model Google serta Versi dan siklus proses model.

Mengonfigurasi penyesuaian berkelanjutan

Saat membuat tugas penyesuaian berkelanjutan, perhatikan hal-hal berikut:

  • Penyesuaian berkelanjutan didukung di Google Gen AI SDK. Penyesuaian berkelanjutan tidak didukung di Agent Platform SDK untuk Python.
  • Anda harus memberikan nama resource model:

    • Di Google Cloud konsol, nama resource model muncul di halaman Gemini Enterprise Agent Platform Tuning, di kolom Tuning details > Model Name.
    • Nama resource model menggunakan format berikut:
    projects/{project}/locations/{location}/models/{modelId}@{version_id}
    
    • {version_id} bersifat opsional dan dapat berupa ID versi yang dibuat atau alias versi yang diberikan pengguna. Jika dihilangkan, versi default akan digunakan.
  • Jika Anda tidak menentukan versi model, versi default akan digunakan.

  • Jika Anda menggunakan checkpoint sebagai model dasar dan tidak menentukan ID checkpoint, checkpoint default akan digunakan. Untuk mengetahui informasi selengkapnya, lihat Menggunakan checkpoint dalam supervised fine-tuning untuk model Gemini. Di Google Cloud konsol, checkpoint default dapat ditemukan sebagai berikut:

    1. Buka halaman Model Registry.
    2. Klik Model Name untuk model.
    3. Klik View all versions.
    4. Klik versi yang diinginkan untuk melihat daftar checkpoint. Checkpoint default ditunjukkan dengan kata default di samping ID checkpoint.
  • Secara default, versi model baru dibuat di bawah model induk yang sama dengan model yang telah disesuaikan. Jika Anda memberikan nama tampilan model yang telah disesuaikan, model baru akan dibuat.

  • Hanya model dasar penyesuaian yang diawasi yang disesuaikan pada atau setelah 11 Juli 2025 yang dapat digunakan sebagai model dasar untuk penyesuaian berkelanjutan.

  • Jika Anda menggunakan kunci enkripsi yang dikelola pelanggan (CMEK), tugas penyesuaian berkelanjutan Anda harus menggunakan CMEK yang sama yang digunakan dalam tugas penyesuaian untuk model yang telah disesuaikan.

Konsol

Untuk mengonfigurasi penyesuaian berkelanjutan untuk model yang telah disesuaikan menggunakan Google Cloud konsol, lakukan langkah-langkah berikut:

  1. Di bagian Gemini Enterprise Agent Platform pada Google Cloud konsol, buka halaman Agent Platform Studio.

    Buka Agent Platform Studio

  2. Klik Create tuned model.

  3. Di bagian Model details, konfigurasi hal berikut:

    1. Pilih Tune a pre-tuned model.
    2. Di kolom Pre-tuned model, pilih nama model yang telah disesuaikan.
    3. Jika model memiliki setidaknya satu checkpoint, kolom drop-down Checkpoint akan muncul. Pilih checkpoint yang diinginkan.
  4. Klik Continue.

REST

Untuk mengonfigurasi penyesuaian berkelanjutan, kirim permintaan POST menggunakan metode tuningJobs.create. Beberapa parameter tidak didukung oleh semua model. Pastikan Anda hanya menyertakan parameter yang berlaku untuk model yang sedang disesuaikan.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • Parameter untuk penyesuaian berkelanjutan:
    • TUNED_MODEL_NAME: Nama model yang telah disesuaikan untuk digunakan.
    • CHECKPOINT_IDOpsional: ID checkpoint yang akan digunakan.
  • Parameter yang tersisa sama seperti untuk penyesuaian yang diawasi atau penyesuaian preferensi.

Metode HTTP dan URL:

POST https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs

Meminta isi JSON:

{
  "preTunedModel": {
      "tunedModelName": "TUNED_MODEL_NAME",
      "checkpointId": "CHECKPOINT_ID",
  },
  "supervisedTuningSpec" : {
      "trainingDatasetUri": "TRAINING_DATASET_URI",
      "validationDatasetUri": "VALIDATION_DATASET_URI",
      "hyperParameters": {
          "epochCount": EPOCH_COUNT,
          "adapterSize": "ADAPTER_SIZE",
          "learningRateMultiplier": "LEARNING_RATE_MULTIPLIER"
      },
      "exportLastCheckpointOnly": EXPORT_LAST_CHECKPOINT_ONLY,
      "evaluationConfig": {
          "metrics": [
              {
                  "aggregation_metrics": ["AVERAGE", "STANDARD_DEVIATION"],
                  "METRIC_SPEC": {
                      "METRIC_SPEC_FIELD_NAME":
                          METRIC_SPEC_FIELD_CONTENT
                  }
              },
          ],
          "outputConfig": {
              "gcs_destination": {
                  "output_uri_prefix": "CLOUD_STORAGE_BUCKET"
              }
          },
      },
  },
  "tunedModelDisplayName": "TUNED_MODEL_DISPLAYNAME",
  "encryptionSpec": {
    "kmsKeyName": "KMS_KEY_NAME"
  },
  "serviceAccount": "SERVICE_ACCOUNT"
}

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs"

PowerShell

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

$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://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs" | Select-Object -Expand Content

Anda akan melihat respons JSON yang mirip seperti berikut:

Contoh perintah curl

PROJECT_ID=myproject
LOCATION=global
curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
"https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/tuningJobs" \
-d \
$'{
   "preTunedModel": "gemini-2.5-flash",
   "supervisedTuningSpec" : {
      "trainingDatasetUri": "gs://cloud-samples-data/ai-platform/generative_ai/gemini/text/sft_train_data.jsonl",
      "validationDatasetUri": "gs://cloud-samples-data/ai-platform/generative_ai/gemini/text/sft_validation_data.jsonl"
   },
   "tunedModelDisplayName": "tuned_gemini"
}'

Google Gen AI SDK

Contoh berikut menunjukkan cara mengonfigurasi penyesuaian berkelanjutan menggunakan Google Gen AI SDK.

import time

from google import genai
from google.genai.types import HttpOptions, TuningDataset, CreateTuningJobConfig

# TODO(developer): Update and un-comment below line
# tuned_model_name = "projects/123456789012/locations/us-central1/models/1234567890@1"
# checkpoint_id = "1"

client = genai.Client(http_options=HttpOptions(api_version="v1beta1"))

training_dataset = TuningDataset(
    gcs_uri="gs://cloud-samples-data/ai-platform/generative_ai/gemini/text/sft_train_data.jsonl",
)
validation_dataset = TuningDataset(
    gcs_uri="gs://cloud-samples-data/ai-platform/generative_ai/gemini/text/sft_validation_data.jsonl",
)

tuning_job = client.tunings.tune(
    base_model=tuned_model_name,  # Note: Using a Tuned Model
    training_dataset=training_dataset,
    config=CreateTuningJobConfig(
        tuned_model_display_name="Example tuning job",
        validation_dataset=validation_dataset,
        pre_tuned_model_checkpoint_id=checkpoint_id,
    ),
)

running_states = set([
    "JOB_STATE_PENDING",
    "JOB_STATE_RUNNING",
])

while tuning_job.state in running_states:
    print(tuning_job.state)
    tuning_job = client.tunings.get(name=tuning_job.name)
    time.sleep(60)

print(tuning_job.tuned_model.model)
print(tuning_job.tuned_model.endpoint)
print(tuning_job.experiment)
# Example response:
# projects/123456789012/locations/us-central1/models/1234567890@2
# projects/123456789012/locations/us-central1/endpoints/123456789012345
# projects/123456789012/locations/us-central1/metadataStores/default/contexts/tuning-experiment-2025010112345678

if tuning_job.tuned_model.checkpoints:
    for i, checkpoint in enumerate(tuning_job.tuned_model.checkpoints):
        print(f"Checkpoint {i + 1}: ", checkpoint)
    # Example response:
    # Checkpoint 1:  checkpoint_id='1' epoch=1 step=10 endpoint='projects/123456789012/locations/us-central1/endpoints/123456789000000'
    # Checkpoint 2:  checkpoint_id='2' epoch=2 step=20 endpoint='projects/123456789012/locations/us-central1/endpoints/123456789012345'