Tutorial ini akan membantu Anda memulai penyesuaian Gemini API layanan web menggunakan Python SDK atau REST API menggunakan curl. Contoh tersebut menunjukkan cara men-tuning model teks di balik layanan pembuatan teks Gemini API.
Lihat di ai.google.dev | Coba notebook Colab | Lihat notebook di GitHub |
Menyiapkan autentikasi
Gemini API memungkinkan Anda menyesuaikan model menggunakan data Anda sendiri. Karena itu data Anda dan model yang telah disesuaikan, hal ini memerlukan kontrol akses yang lebih ketat daripada yang dapat disediakan oleh kunci API.
Sebelum dapat menjalankan tutorial ini, Anda harus menyiapkan OAuth untuk project Anda.
Mencantumkan model yang telah disesuaikan
Anda dapat memeriksa model yang sudah ada yang telah disesuaikan dengan genai.list_tuned_models
.
for model_info in genai.list_tuned_models():
print(model_info.name)
Membuat model yang di-tuning
Untuk membuat model yang di-tuning, Anda harus meneruskan set data ke model tersebut di bagian
Metode genai.create_tuned_model
. Anda bisa melakukannya dengan langsung mendefinisikan
nilai input dan output dalam panggilan atau mengimpor dari file ke dalam sebuah {i>dataframe<i}
diteruskan ke metode tersebut.
Untuk contoh ini, Anda akan menyesuaikan model untuk menghasilkan angka berikutnya dalam
. Misalnya, jika inputnya adalah 1
, model akan menghasilkan 2
. Jika
inputnya adalah one hundred
, output-nya harus one hundred one
.
import time
base_model = "models/gemini-1.5-flash-001-tuning"
training_data = [
{"text_input": "1", "output": "2"},
# ... more examples ...
# ...
{"text_input": "seven", "output": "eight"},
]
operation = genai.create_tuned_model(
# You can use a tuned model here too. Set `source_model="tunedModels/..."`
display_name="increment",
source_model=base_model,
epoch_count=20,
batch_size=4,
learning_rate=0.001,
training_data=training_data,
)
for status in operation.wait_bar():
time.sleep(10)
result = operation.result()
print(result)
# # You can plot the loss curve with:
# snapshots = pd.DataFrame(result.tuning_task.snapshots)
# sns.lineplot(data=snapshots, x='epoch', y='mean_loss')
model = genai.GenerativeModel(model_name=result.name)
result = model.generate_content("III")
print(result.text) # IV
Nilai optimal untuk jumlah epoch, ukuran batch, dan kecepatan pemelajaran bergantung pada set data dan batasan lain dari kasus penggunaan Anda. Untuk mempelajari lebih lanjut tentang nilai-nilai ini, lihat Setelan penyesuaian lanjutan dan Hyperparameter.
Karena penyesuaian model bisa memakan waktu lama, API ini tidak menunggu
penyelesaian tuning. Sebagai gantinya, metode ini akan menampilkan google.api_core.operation.Operation
yang memungkinkan Anda memeriksa status tugas tuning, atau menunggunya
selesai, dan
memeriksa hasilnya.
Model Anda yang di-tuning segera ditambahkan ke daftar model yang telah di-tuning, tetapi ditetapkan ke "{i>create<i}" selagi model di-tuning.
Memeriksa progres tuning
Anda dapat memeriksa progres operasi penyesuaian menggunakan wait_bar()
berikut:
for status in operation.wait_bar():
time.sleep(10)
Anda juga dapat menggunakan operation.metadata
untuk memeriksa jumlah total langkah tuning
dan operation.update()
untuk memuat ulang status operasi.
Anda dapat membatalkan tugas tuning kapan saja menggunakan metode cancel()
.
operation.cancel()
Coba modelnya
Anda dapat menggunakan metode genai.generate_text
dan menentukan nama produk yang telah disesuaikan
model ini untuk menguji performanya.
model = genai.GenerativeModel(model_name="tunedModels/my-increment-model")
result = model.generate_content("III")
print(result.text) # "IV"
Memperbarui deskripsi
Anda dapat memperbarui deskripsi model yang telah disesuaikan kapan saja menggunakan
Metode genai.update_tuned_model
.
genai.update_tuned_model('tunedModels/my-increment-model', {"description":"This is my model."})
Hapus model
Anda dapat membersihkan daftar model yang telah disesuaikan dengan menghapus model yang tidak lagi diperlukan.
Gunakan metode genai.delete_tuned_model
untuk menghapus model. Jika Anda membatalkan
tuning tugas, Anda dapat menghapusnya karena performanya mungkin
tidak dapat diprediksi.
genai.delete_tuned_model("tunedModels/my-increment-model")