Dokumen ini menjelaskan cara men-tuning model Gemini pro menggunakan tuning yang diawasi.
Sebelum memulai
- Memahami cara kerja tuning yang diawasi dan manfaat penggunaannya.
- Pelajari cara menyiapkan set data penyesuaian yang diawasi.
- Pilih region tuning yang diawasi untuk menjalankan tugas tuning.
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:
Di bagian Vertex AI pada Konsol Google Cloud, buka halaman Vertex AI Studio.
Klik tab Tune and distill.
Klik Create Tuned model.
Di bagian Tuning method, pilih tombol pilihan untuk Supervised tuning.
Di bagian Detail model, konfigurasikan hal berikut:
- Di kolom Tuned model name, masukkan nama untuk model baru yang telah disesuaikan, maksimal 128 karakter.
- Di kolom Model dasar, pilih
gemini-1.0-pro-002
. - Di kolom drop-down Region, pilih region tempat tugas penyesuaian pipeline dijalankan dan tempat model yang telah disesuaikan di-deploy.
Opsional: luaskan panah drop-down Advanced Options dan konfigurasi hal berikut:
- Di kolom Jumlah epoch, masukkan jumlah langkah yang akan dijalankan untuk penyesuaian model.
- Di kolom Pengganda kecepatan pembelajaran, masukkan Masukkan ukuran langkah untuk setiap iterasi. Nilai default adalah 1.
Klik Lanjutkan.
Halaman Set data Tuning akan terbuka.
Untuk mengupload file set data, pilih salah satu opsi berikut:
- Jika Anda belum mengupload set data, pilih tombol pilihan untuk Upload file to Cloud Storage.
- Di kolom Select JSONL file, klik Browse, lalu pilih file set data.
- Di kolom Dataset location, klik Browse, lalu pilih bucket Cloud Storage tempat Anda ingin menyimpan file set data.
- Jika file set data Anda sudah ada di bucket Cloud Storage, pilih tombol pilihan untuk Existing file on Cloud Storage.
- Di kolom Cloud Storage file path, klik Browse, lalu pilih bucket Cloud Storage tempat file set data berada.
(Opsional) Untuk mendapatkan metrik validasi selama pelatihan, klik tombol Aktifkan validasi model.
- Dalam file Set data validasi, masukkan jalur Cloud Storage set data validasi Anda.
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"
}'
Konfigurasi yang direkomendasikan
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.
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
Untuk melihat detail model yang telah disesuaikan di Konsol Google Cloud, buka halaman Vertex AI Studio.
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
Untuk membatalkan tugas tuning di Konsol Google Cloud, buka halaman Vertex AI Studio.
Di tabel Gemini Pro Tuned models, klik
Manage run.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
dantopK
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. Suhu0
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 dari3
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
Untuk melihat detail model yang telah disesuaikan di Konsol Google Cloud, buka halaman Vertex AI Studio.
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.