Sesuaikan model Gemini Pro dengan menggunakan tuning yang diawasi

Dokumen ini menjelaskan cara men-tuning model Gemini pro menggunakan tuning yang diawasi.

Sebelum memulai

Membuat tugas tuning

Anda dapat membuat tugas penyesuaian model teks yang diawasi menggunakan konsol Google Cloud, API, atau Vertex AI SDK untuk Python. Untuk panduan konfigurasi penyesuaian model, lihat Konfigurasi yang direkomendasikan.

REST

Untuk membuat tugas penyesuaian model, kirim permintaan POST menggunakan metode tuningJobs.create. Perhatikan bahwa 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:

  • BASE_MODEL: Nama model dasar yang akan disesuaikan. Opsinya adalah: gemini-1.0-pro-002.
  • TRAINING_DATASET_URI: URI Cloud Storage file set data pelatihan Anda.
  • VALIDATION_DATASET_URIOpsional: URI Cloud Storage file set data validasi Anda.
  • EPOCH_COUNTOpsional: Jumlah epoch yang akan dilatih. Biarkan tidak disetel untuk menggunakan nilai yang direkomendasikan.
  • LEARNING_RATE_MULTIPLIER: Opsional: Pengganda untuk diterapkan ke kecepatan pembelajaran yang direkomendasikan. Biarkan tidak disetel untuk menggunakan nilai yang direkomendasikan.
  • TUNED_MODEL_DISPLAYNAMEOpsional: Nama tampilan untuk model yang disesuaikan. Jika tidak ditetapkan, nama acak akan dibuat.

Metode HTTP dan URL:

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

Isi JSON permintaan:

{
  "baseModel": "BASE_MODEL",
  "supervisedTuningSpec" : {
      "training_dataset_uri": "TRAINING_DATASET_URI",
      "validation_dataset_uri": "VALIDATION_DATASET_URI",
      "hyper_parameters": {
          "epoch_count": EPOCH_COUNT,
          "learning_rate_multiplier": LEARNING_RATE_MULTIPLIER
      },
  },
  "tunedModelDisplayName": "TUNED_MODEL_DISPLAYNAME,
}

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:

Python

  import time
  from vertexai.preview import tuning
  from vertexai.preview.tuning import sft

  sft_tuning_job = sft.train(
      source_model="gemini-1.0-pro-002",
      train_dataset="gs://cloud-samples-data/ai-platform/generative_ai/sft_train_data.jsonl"
  )
  # Polling for job completion
  while not sft_tuning_job.has_ended:
      time.sleep(60)
      sft_tuning_job.refresh()

  print(sft_tuning_job.tuned_model_name)
  print(sft_tuning_job.tuned_model_endpoint_name)
  print(sft_tuning_job.experiment)

Konsol

Untuk men-tuning model teks dengan penyesuaian yang diawasi menggunakan Konsol Google Cloud, lakukan langkah-langkah berikut:

  1. Di bagian Vertex AI pada Konsol Google Cloud, buka halaman Vertex AI Studio.

    Buka Vertex AI Studio

  2. Klik tab Tune and distill.

  3. Klik Create Tuned model.

  4. Di bagian Tuning method, pilih tombol pilihan untuk Supervised tuning.

  5. Di bagian Detail model, konfigurasikan hal berikut:

    1. Di kolom Tuned model name, masukkan nama untuk model baru yang telah disesuaikan, maksimal 128 karakter.
    2. Di kolom Model dasar, pilih gemini-1.0-pro-002.
    3. Di kolom drop-down Region, pilih region tempat tugas penyesuaian pipeline dijalankan dan tempat model yang telah disesuaikan di-deploy.
  6. Opsional: luaskan panah drop-down Advanced Options dan konfigurasi hal berikut:

    1. Di kolom Jumlah epoch, masukkan jumlah langkah yang akan dijalankan untuk penyesuaian model.
    2. Di kolom Pengganda kecepatan pembelajaran, masukkan Masukkan ukuran langkah untuk setiap iterasi. Nilai default adalah 1.
  7. Klik Lanjutkan.

    Halaman Set data Tuning akan terbuka.

  8. Untuk mengupload file set data, pilih salah satu opsi berikut:

    1. Jika Anda belum mengupload set data, pilih tombol pilihan untuk Upload file to Cloud Storage.
    2. Di kolom Select JSONL file, klik Browse, lalu pilih file set data.
    3. Di kolom Dataset location, klik Browse, lalu pilih bucket Cloud Storage tempat Anda ingin menyimpan file set data.
    4. Jika file set data Anda sudah ada di bucket Cloud Storage, pilih tombol pilihan untuk Existing file on Cloud Storage.
    5. Di kolom Cloud Storage file path, klik Browse, lalu pilih bucket Cloud Storage tempat file set data berada.
  9. (Opsional) Untuk mendapatkan metrik validasi selama pelatihan, klik tombol Aktifkan validasi model.

    1. Dalam file Set data validasi, masukkan jalur Cloud Storage set data validasi Anda.
  10. Klik Start Tuning.

    Model baru Anda akan muncul di bagian Gemini Pro Tuned models di halaman Tune and Distill. Setelah model selesai di-tuning, Status akan menampilkan Succeeded.

Contoh perintah curl

PROJECT_ID=myproject
LOCATION=us-central1

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 \
$'{
    "baseModel": "gemini-1.0-pro-002",
    "supervisedTuningSpec" : {
        "training_dataset_uri": "gs://cloud-samples-data/ai-platform/generative_ai/sft_train_data.jsonl",
        "validation_dataset_uri": "gs://cloud-samples-data/ai-platform/generative_ai/sft_validation_data.jsonl"
    },
    "tunedModelDisplayName": "tuned_gemini_pro"
}'

Tabel berikut menunjukkan konfigurasi yang direkomendasikan untuk menyesuaikan model dasar berdasarkan tugas:

Tugas Jumlah contoh dalam set data Jumlah Epoch
Classification 500+ 2-4
Perangkuman 1000+ 2-4
UM (Uji Mutu) Ekstraktif 500+ 2-4
Chat 1000+ 2-4

Untuk jumlah epoch, sebaiknya Anda mencoba beberapa nilai untuk mendapatkan performa terbaik pada set data tertentu. Meningkatkan jumlah epoch dapat memberikan hasil yang lebih baik. Namun, Anda harus mewaspadai overfitting terutama jika set data Anda kecil dan angka epochnya lebih rendah jika terjadi.

Untuk tugas klasifikasi, kompleksitas tugas meningkat seiring bertambahnya jumlah class. Untuk class dalam jumlah besar, Anda mungkin memerlukan set data yang lebih besar.

Melihat daftar tugas tuning

Anda dapat melihat daftar tugas penyesuaian di project saat ini dengan menggunakan konsol Google Cloud, Vertex AI SDK untuk Python, atau dengan mengirim permintaan GET menggunakan metode tuningJobs.

REST

Untuk melihat daftar tugas penyesuaian model, kirim permintaan GET menggunakan metode tuningJobs.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: Project ID Anda.
  • TUNING_JOB_REGION: Region tempat tugas tuning dijalankan. Ini juga merupakan region default tempat model yang telah disesuaikan diupload.

Metode HTTP dan URL:

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

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Jalankan perintah berikut:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs"

PowerShell

Jalankan perintah berikut:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs" | Select-Object -Expand Content

Anda akan menerima respons JSON yang mirip dengan yang berikut ini:

Python

from vertexai.preview import tuning
from vertexai.preview.tuning import sft
sft.SupervisedTuningJob.list()

Konsol

Untuk melihat tugas tuning Anda di konsol Google Cloud, buka halaman Vertex AI Studio.

Buka Vertex AI Studio

Tugas penyesuaian Gemini Anda tercantum dalam tabel di bagian model yang telah disesuaikan Gemini Pro.

Mendapatkan detail tugas tuning

Anda bisa mendapatkan detail tugas tuning dalam project saat ini menggunakan konsol Google Cloud, Vertex AI SDK untuk Python, atau dengan mengirim permintaan GET menggunakan metode tuningJobs.

REST

Untuk melihat daftar tugas penyesuaian model, kirim permintaan GET dan tentukan TuningJob_ID.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: Project ID Anda.
  • TUNING_JOB_REGION: Region tempat tugas tuning dijalankan. Ini juga merupakan region default tempat model yang telah disesuaikan diupload.
  • TUNING_JOB_ID: ID tugas tuning.

Metode HTTP dan URL:

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

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Jalankan perintah berikut:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs/TUNING_JOB_ID"

PowerShell

Jalankan perintah berikut:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs/TUNING_JOB_ID" | Select-Object -Expand Content

Anda akan menerima respons JSON yang mirip dengan yang berikut ini:

Python

from vertexai.preview import tuning
from vertexai.preview.tuning import sft
sft_tuning_job=sft.SupervisedTuningJob("projects/<PROJECT_ID>/locations/<TUNING_JOB_REGION>/tuningJobs/<TUNING_JOB_ID>")

Konsol

  1. Untuk melihat detail model yang telah disesuaikan di Konsol Google Cloud, buka halaman Vertex AI Studio.

    Buka Vertex AI Studio

  2. Di tabel Model yang disesuaikan Gemini Pro, temukan model Anda, lalu klik Detail.

    Detail model Anda ditampilkan.

Membatalkan tugas tuning

Anda dapat membatalkan tugas tuning di project saat ini dengan menggunakan konsol Google Cloud, Vertex AI SDK untuk Python, atau dengan mengirim permintaan POST menggunakan metode tuningJobs.

REST

Untuk membatalkan tugas tuning, kirim permintaan POST dan tentukan TuningJob_ID.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: Project ID Anda.
  • TUNING_JOB_REGION: Region tempat tugas tuning dijalankan. Ini juga merupakan region default tempat model yang telah disesuaikan diupload.
  • TUNING_JOB_ID: ID tugas tuning.

Metode HTTP dan URL:

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

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Jalankan perintah berikut:

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

PowerShell

Jalankan perintah berikut:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-Uri "https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs/TUNING_JOB_ID:cancel" | Select-Object -Expand Content

Anda akan menerima respons JSON yang mirip dengan yang berikut ini:

Python

from vertexai.preview import tuning
from vertexai.preview.tuning import sft
sft_tuning_job = sft.SupervisedTuningJob("projects/<PROJECT_ID>/locations/<TUNING_JOB_REGION>/tuningJobs/<TUNING_JOB_ID>")
sft_tuning_job.cancel()

Konsol

  1. Untuk membatalkan tugas tuning di Konsol Google Cloud, buka halaman Vertex AI Studio.

    Buka Vertex AI Studio

  2. Di tabel Gemini Pro Tuned models, klik Manage run.

  3. Klik Cancel.

Membuat prediksi dengan model yang di-tuning

REST

Untuk mendapatkan prediksi dengan model yang telah disesuaikan dari tugas tuning, kirim permintaan POST dan tentukan TUNED_ENDPOINT_ID.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: Project ID Anda.
  • TUNING_JOB_REGION: Region tempat tugas tuning dijalankan. Ini juga merupakan region default tempat model yang telah disesuaikan diupload.
  • ENDPOINT_ID: ID endpoint model yang telah disesuaikan dari GET API.
  • TEMPERATURE: Suhu digunakan untuk pengambilan sampel selama pembuatan respons, yang terjadi saat topP dan topK diterapkan. Suhu mengontrol tingkat keacakan dalam pemilihan token. Suhu yang lebih rendah cocok untuk perintah yang memerlukan respons yang kurang terbuka atau kreatif, sedangkan suhu yang lebih tinggi dapat memberikan hasil yang lebih beragam atau kreatif. Suhu 0 berarti token probabilitas tertinggi selalu dipilih. Dalam hal ini, respons untuk permintaan tertentu sebagian besar deterministik, tetapi sedikit variasi masih dapat dilakukan.

    Jika model menampilkan respons yang terlalu umum, terlalu pendek, atau model memberikan respons penggantian, coba tingkatkan suhu.

  • TOP_P: Top-P mengubah cara model memilih token untuk output. Token dipilih dari yang paling mungkin (lihat top-K) hingga yang paling tidak mungkin sampai jumlah probabilitasnya sama dengan nilai top-P. Misalnya, jika token A, B, dan C memiliki probabilitas 0,3, 0,2, dan 0,1 dengan nilai top-P adalah 0.5, model akan memilih A atau B sebagai token berikutnya dengan menggunakan suhu dan mengecualikan C sebagai kandidat.

    Tentukan nilai yang lebih rendah untuk respons acak yang lebih sedikit dan nilai yang lebih tinggi untuk respons acak yang lebih banyak.

  • TOP_K: Top-K mengubah cara model memilih token untuk output. Top-K dari 1 berarti token yang dipilih berikutnya adalah yang paling mungkin di antara semua token dalam kosakata model (juga disebut decoding greedy), sedangkan nilai top-K dari 3 berarti token berikutnya dipilih di antara tiga token yang paling mungkin menggunakan suhu.

    Untuk setiap langkah pemilihan token, token top-K dengan probabilitas tertinggi akan diambil sampelnya. Kemudian token akan difilter lebih lanjut berdasarkan top-P dengan token akhir yang dipilih menggunakan pengambilan sampel suhu.

    Tentukan nilai yang lebih rendah untuk respons acak yang lebih sedikit dan nilai yang lebih tinggi untuk respons acak yang lebih banyak.

  • MAX_OUTPUT_TOKENS: Jumlah maksimum token yang dapat dibuat dalam respons. Token terdiri dari sekitar empat karakter. 100 token setara dengan sekitar 60-80 kata.

    Tentukan nilai yang lebih rendah untuk respons yang lebih pendek dan nilai yang lebih tinggi untuk respons yang berpotensi lebih lama.

Metode HTTP dan URL:

POST https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/endpoints/ENDPOINT_ID:generateContent

Isi JSON permintaan:

{
    "contents": [
        {
            "role": "USER",
            "parts": {
                "text" : "Why is sky blue?"
            }
        }
    ],
    "generation_config": {
        "temperature":TEMPERATURE,
        "top_p": TOP_P,
        "top_k": TOP_K,
        "max_output_tokens": MAX_OUTPUT_TOKENS
    }
}

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/endpoints/ENDPOINT_ID:generateContent"

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/endpoints/ENDPOINT_ID:generateContent" | Select-Object -Expand Content

Anda akan melihat respons JSON yang mirip seperti berikut:

Python

from vertexai.preview.generative_models import GenerativeModel
from vertexai.preview import tuning
from vertexai.preview.tuning import sft

sft_tuning_job = sft.SupervisedTuningJob("projects/<PROJECT_ID>/locations/<TUNING_JOB_REGION>/tuningJobs/<TUNING_JOB_ID>")
tuned_model = GenerativeModel(sft_tuning_job.tuned_model_endpoint_name)
print(tuned_model.generate_content(content))

Konsol

  1. Untuk melihat detail model yang telah disesuaikan di Konsol Google Cloud, buka halaman Vertex AI Studio.

    Buka Vertex AI Studio

  2. Di tabel Gemini Pro Tuned models, pilih Test.

    Tindakan ini akan membuka halaman tempat Anda dapat membuat percakapan dengan model yang telah disesuaikan.

Metrik validasi dan penyesuaian

Anda dapat mengonfigurasi tugas penyesuaian model untuk mengumpulkan dan melaporkan penyesuaian model dan metrik evaluasi model, yang kemudian dapat divisualisasikan di halaman Vertex AI Studio.

Metrik penyesuaian model

Tugas penyesuaian model akan otomatis mengumpulkan metrik penyesuaian berikut untuk gemini-1.0-pro-002.

  • /train_total_loss: Kerugian untuk set data penyesuaian pada langkah pelatihan.
  • /train_fraction_of_correct_next_step_preds: Akurasi token pada langkah pelatihan. Satu prediksi terdiri dari serangkaian token. Metrik ini mengukur akurasi token yang diprediksi jika dibandingkan dengan kebenaran dasar dalam set data tuning.
  • /train_num_predictions: Jumlah token yang diprediksi pada langkah pelatihan.

Metrik validasi model:

Anda dapat mengonfigurasi tugas penyesuaian model guna mengumpulkan metrik validasi berikut untuk gemini-1.0-pro-002.

  • /eval_total_loss: Kerugian untuk set data validasi pada langkah validasi.
  • /eval_fraction_of_correct_next_step_preds: Akurasi token pada langkah validasi. Satu prediksi terdiri dari serangkaian token. Metrik ini mengukur akurasi token yang diprediksi jika dibandingkan dengan kebenaran dasar dalam set data validasi.
  • /eval_num_predictions: Jumlah token yang diprediksi pada langkah validasi.

Visualisasi metrik tersedia setelah tugas penyesuaian model selesai. Jika Anda tidak menentukan set data validasi saat membuat tugas tuning, hanya visualisasi untuk metrik tuning yang akan tersedia.