آموزش تنظیم دقیق

این آموزش به شما کمک می کند تا با استفاده از Python SDK یا REST API با استفاده از curl شروع به کار با سرویس تنظیم API Gemini کنید. مثال‌ها نحوه تنظیم مدل متنی در پشت سرویس تولید متن Gemini API را نشان می‌دهند.

مشاهده در ai.google.dev یک نوت بوک کولب را امتحان کنید مشاهده نوت بوک در GitHub

محدودیت ها

قبل از تنظیم یک مدل، باید از محدودیت های زیر آگاه باشید:

تنظیم دقیق مجموعه داده ها

مجموعه داده های تنظیم دقیق برای Gemini 1.5 Flash دارای محدودیت های زیر است:

  • حداکثر اندازه ورودی در هر نمونه 40000 کاراکتر است.
  • حداکثر اندازه خروجی در هر نمونه 5000 کاراکتر است.
  • فقط نمونه های جفت ورودی-خروجی پشتیبانی می شوند. مکالمات چند نوبتی به سبک چت پشتیبانی نمی شود.

مدل های تیون شده

مدل های تنظیم شده دارای محدودیت های زیر هستند:

  • محدودیت ورودی یک مدل فلش جمینی 1.5 تنظیم شده 40000 کاراکتر است.
  • حالت JSON با مدل های تنظیم شده پشتیبانی نمی شود.
  • فقط ورودی متن پشتیبانی می شود.

مدل های تنظیم شده را لیست کنید

می توانید مدل های تنظیم شده موجود خود را با روش genai.list_tuned_models بررسی کنید.

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

یک مدل تنظیم شده ایجاد کنید

برای ایجاد یک مدل تنظیم شده، باید مجموعه داده خود را به روش genai.create_tuned_model به مدل ارسال کنید. شما می توانید این کار را با تعریف مستقیم مقادیر ورودی و خروجی در تماس یا وارد کردن از یک فایل به یک دیتافریم برای ارسال به متد انجام دهید.

برای این مثال، شما یک مدل را برای تولید عدد بعدی در دنباله تنظیم می کنید. به عنوان مثال، اگر ورودی 1 باشد، مدل باید خروجی 2 داشته باشد. اگر ورودی one hundred باشد، خروجی باید 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

مقادیر بهینه برای تعداد دوره، اندازه دسته و نرخ یادگیری به مجموعه داده شما و سایر محدودیت‌های مورد استفاده شما بستگی دارد. برای کسب اطلاعات بیشتر در مورد این مقادیر، تنظیمات تنظیم پیشرفته و Hyperparameters را ببینید.

از آنجایی که تنظیم یک مدل می تواند زمان قابل توجهی داشته باشد، این API منتظر تکمیل تنظیم نمی ماند. در عوض، یک شی google.api_core.operation.Operation را برمی گرداند که به شما امکان می دهد وضعیت کار تنظیم را بررسی کنید یا منتظر بمانید تا کامل شود و نتیجه را بررسی کنید.

مدل تیون شده شما فوراً به لیست مدل های تنظیم شده اضافه می شود، اما حالت آن بر روی "ایجاد" تنظیم می شود در حالی که مدل تنظیم می شود.

پیشرفت تنظیم را بررسی کنید

شما می توانید با استفاده از روش wait_bar() پیشرفت عملیات تنظیم را بررسی کنید:

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

همچنین می‌توانید از operation.metadata برای بررسی تعداد کل مراحل تنظیم و operation.update() برای بازخوانی وضعیت عملیات استفاده کنید.

با استفاده از روش cancel() می توانید کار تنظیم خود را هر زمان که بخواهید لغو کنید.

operation.cancel()

مدل را امتحان کنید

می توانید از متد genai.generate_text استفاده کنید و نام مدل تنظیم شده را برای تست عملکرد آن مشخص کنید.

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."})

مدل را حذف کنید

می‌توانید با حذف مدل‌هایی که دیگر نیازی ندارید، فهرست مدل‌های تنظیم‌شده خود را پاک کنید. برای حذف یک مدل از روش genai.delete_tuned_model استفاده کنید. اگر کار تنظیم را لغو کردید، ممکن است بخواهید آن‌ها را حذف کنید زیرا ممکن است عملکرد آنها غیرقابل پیش‌بینی باشد.

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