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

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