Tutorial fine-tuning

Tutorial ini akan membantu Anda memulai layanan penyesuaian Gemini API menggunakan Python SDK atau REST API menggunakan curl. Contoh ini menunjukkan cara menyesuaikan model teks di balik layanan pembuatan teks Gemini API.

Lihat di ai.google.dev Mencoba notebook Colab Lihat notebook di GitHub

Batasan

Sebelum menyesuaikan model, Anda harus mengetahui batasan berikut:

Menyesuaikan set data

Set data yang dioptimalkan untuk Gemini 1.5 Flash memiliki batasan berikut:

  • Ukuran input maksimum per contoh adalah 40.000 karakter.
  • Ukuran output maksimum per contoh adalah 5.000 karakter.
  • Hanya contoh pasangan input-output yang didukung. Percakapan multi-giliran gaya chat tidak didukung.

Model yang disesuaikan

Model yang dioptimalkan memiliki batasan berikut:

  • Batas input model Gemini 1.5 Flash yang dioptimalkan adalah 40.000 karakter.
  • Mode JSON tidak didukung dengan model yang dioptimalkan.
  • Hanya input teks yang didukung.

Sebelum memulai: Menyiapkan project dan kunci API

Sebelum memanggil Gemini API, Anda perlu menyiapkan project dan mengonfigurasi kunci API.

Membuat daftar model yang disesuaikan

Anda dapat memeriksa model yang disesuaikan yang ada dengan metode tunedModels.list.

import google.generativeai as genai

for model_info in genai.list_tuned_models():
    print(model_info.name)

Membuat model yang di-tuning

Untuk membuat model yang disesuaikan, Anda harus meneruskan set data ke model dalam metode tunedModels.create.

Untuk contoh ini, Anda akan menyesuaikan model untuk menghasilkan angka berikutnya dalam urutan. Misalnya, jika inputnya adalah 1, model akan menghasilkan output 2. Jika inputnya adalah one hundred, outputnya harus one hundred one.

import google.generativeai as genai

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 belajar bergantung pada set data dan batasan kasus penggunaan Anda lainnya. Untuk mempelajari nilai ini lebih lanjut, lihat Setelan penyesuaian lanjutan dan Hyperparameter.

Karena penyesuaian model dapat memerlukan waktu yang signifikan, API ini tidak menunggu penyesuaian selesai. Sebagai gantinya, metode ini menampilkan objek google.api_core.operation.Operation yang memungkinkan Anda memeriksa status tugas penyesuaian, atau menunggunya selesai, dan memeriksa hasilnya.

Model yang disesuaikan akan segera ditambahkan ke daftar model yang disesuaikan, tetapi statusnya ditetapkan ke "membuat" saat model disesuaikan.

Memeriksa progres penyesuaian

Anda dapat memeriksa progres operasi penyesuaian menggunakan metode wait_bar():

for status in operation.wait_bar():
    time.sleep(10)

Anda juga dapat menggunakan operation.metadata untuk memeriksa jumlah total langkah penyesuaian dan operation.update() untuk memuat ulang status operasi.

Anda dapat membatalkan tugas penyesuaian kapan saja menggunakan metode cancel().

operation.cancel()

Mencoba model

Anda dapat menggunakan metode tunedModels.generateContent dan menentukan nama model yang dioptimalkan untuk menguji performanya.

import google.generativeai as genai

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 dioptimalkan kapan saja menggunakan metode genai.update_tuned_model.

genai.update_tuned_model('tunedModels/my-increment-model', {"description":"This is my model."})

Menghapus model

Anda dapat membersihkan daftar model yang dioptimalkan dengan menghapus model yang tidak lagi diperlukan. Gunakan metode tunedModels.delete untuk menghapus model. Jika Anda membatalkan tugas penyesuaian, sebaiknya hapus tugas tersebut karena performanya mungkin tidak dapat diprediksi.

genai.delete_tuned_model("tunedModels/my-increment-model")