บทแนะนำนี้จะช่วยให้คุณเริ่มต้นใช้งานบริการการปรับแต่ง 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")