บทแนะนำการปรับแต่ง

บทแนะนำนี้จะช่วยให้คุณเริ่มต้นใช้งานบริการการปรับแต่ง Gemini API ได้โดยใช้ Python SDK หรือ REST API โดยใช้ curl ตัวอย่างแสดงวิธีปรับแต่งโมเดลข้อความที่อยู่เบื้องหลังบริการสร้างข้อความของ Gemini API

ดูใน ai.google.dev ลองใช้ Colab Notebook ดูสมุดบันทึกใน GitHub

ข้อจำกัด

ก่อนที่จะปรับแต่งโมเดล คุณควรทราบข้อจํากัดต่อไปนี้

การปรับแต่งชุดข้อมูล

การปรับแต่งชุดข้อมูลอย่างละเอียดสําหรับ Gemini 1.5 Flash มีข้อจํากัดต่อไปนี้

  • ขนาดอินพุตสูงสุดต่อตัวอย่างคือ 40,000 อักขระ
  • ขนาดเอาต์พุตสูงสุดต่อตัวอย่างคือ 5,000 อักขระ
  • ระบบรองรับเฉพาะตัวอย่างคู่อินพุต-เอาต์พุตเท่านั้น ไม่รองรับการสนทนาแบบหลายรอบในลักษณะแชท

โมเดลที่ปรับแต่งแล้ว

โมเดลที่ปรับแต่งมีข้อจํากัดต่อไปนี้

  • ขีดจํากัดของข้อมูลที่ป้อนของรุ่น Gemini 1.5 Flash ที่ปรับแต่งแล้วคือ 40,000 อักขระ
  • โมเดลที่ปรับแต่งแล้วไม่รองรับโหมด JSON
  • รองรับเฉพาะการป้อนข้อความ

ก่อนเริ่มต้น: ตั้งค่าโปรเจ็กต์และคีย์ API

คุณต้องตั้งค่าโปรเจ็กต์และกำหนดค่าคีย์ API ก่อนเรียกใช้ Gemini API

แสดงรายการโมเดลที่ปรับแต่งแล้ว

คุณสามารถตรวจสอบโมเดลที่ปรับแต่งที่มีอยู่ด้วยเมธอด tunedModels.list

import google.generativeai as genai

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

สร้างโมเดลที่ปรับแต่งแล้ว

หากต้องการสร้างโมเดลที่ปรับแต่งแล้ว คุณต้องส่งชุดข้อมูลไปยังโมเดลในเมธอด tunedModels.create

ในตัวอย่างนี้ คุณจะปรับแต่งโมเดลเพื่อสร้างตัวเลขถัดไปในลําดับ เช่น หากอินพุตคือ 1 โมเดลควรแสดงผลเป็น 2 หากป้อน one hundred เอาต์พุตควรเป็น 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

ค่าที่เหมาะสมที่สุดสำหรับจำนวนศักราช ขนาดกลุ่ม และอัตราการเรียนรู้จะขึ้นอยู่กับชุดข้อมูลและข้อจำกัดอื่นๆ ของกรณีการใช้งาน ดูข้อมูลเพิ่มเติมเกี่ยวกับค่าเหล่านี้ได้ที่การตั้งค่าการปรับแต่งขั้นสูงและไฮเปอร์พารามิเตอร์

เนื่องจากการปรับแต่งโมเดลอาจใช้เวลานาน API นี้จึงไม่รอให้การปรับแต่งเสร็จสมบูรณ์ แต่ระบบจะแสดงgoogle.api_core.operation.Operationออบเจ็กต์ที่ช่วยให้คุณตรวจสอบสถานะของงานการปรับแต่ง หรือรอให้งานเสร็จสมบูรณ์ แล้วตรวจสอบผลลัพธ์

ระบบจะเพิ่มโมเดลที่ปรับแต่งแล้วลงในรายการโมเดลที่ปรับแต่งทันที แต่ระบบจะตั้งค่าสถานะเป็น "กำลังสร้าง" ขณะปรับแต่งโมเดล

ตรวจสอบความคืบหน้าในการปรับแต่ง

คุณตรวจสอบความคืบหน้าของการปรับโดยใช้wait_bar()วิธีต่อไปนี้ได้

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

นอกจากนี้ คุณยังใช้ operation.metadata เพื่อตรวจสอบจํานวนขั้นตอนการปรับทั้งหมด และ operation.update() เพื่อรีเฟรชสถานะการดําเนินการได้ด้วย

คุณยกเลิกงานการปรับแต่งได้ทุกเมื่อโดยใช้วิธีการ cancel()

operation.cancel()

ลองใช้โมเดล

คุณสามารถใช้เมธอด tunedModels.generateContent และระบุชื่อโมเดลที่ปรับแต่งเพื่อทดสอบประสิทธิภาพของโมเดล

import google.generativeai as genai

model = genai.GenerativeModel(model_name="tunedModels/my-increment-model")
result = model.generate_content("III")
print(result.text)  # "IV"

อัปเดตคำอธิบาย

คุณสามารถอัปเดตคําอธิบายของรูปแบบที่ปรับแต่งได้ทุกเมื่อโดยใช้วิธี genai.update_tuned_model

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

ลบโมเดล

คุณสามารถล้างรายการโมเดลที่ปรับแต่งแล้วด้วยการลบโมเดลที่ไม่ต้องการแล้ว ใช้เมธอด tunedModels.delete เพื่อลบโมเดล หากยกเลิกงานการปรับแต่ง คุณอาจต้องลบงานเหล่านั้นเนื่องจากประสิทธิภาพอาจคาดเดาไม่ได้

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