बेहतर बनाने का ट्यूटोरियल

इस ट्यूटोरियल में, 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 मोड काम नहीं करता.
  • सिर्फ़ टेक्स्ट इनपुट का इस्तेमाल किया जा सकता है.

शुरू करने से पहले: अपना प्रोजेक्ट और एपीआई पासकोड सेट अप करें

Gemini API को कॉल करने से पहले, आपको अपना प्रोजेक्ट सेट अप करना होगा और उसे कॉन्फ़िगर करना होगा आपकी एपीआई कुंजी.

ट्यून किए गए मॉडल की सूची

tunedModels.list तरीके से, ट्यून किए गए अपने मौजूदा मॉडल देखे जा सकते हैं.

import google.generativeai as genai

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

ट्यून किया गया मॉडल बनाना

ट्यून किया जाने वाला मॉडल बनाने के लिए, आपको अपना dataset पास करना होगा 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

epoch काउंट, बैच साइज़, और लर्निंग रेट के लिए सबसे सही वैल्यू इन बातों पर निर्भर करती हैं अपने डेटासेट और इस्तेमाल के उदाहरण की दूसरी कंस्ट्रेंट के लिए. इस बारे में ज़्यादा जानने के लिए तो इन मानों की पहचान करने के लिए, ट्यून करने की बेहतर सेटिंग और हाइपर पैरामीटर.

मॉडल को ट्यून करने में काफ़ी समय लग सकता है. इसलिए, यह एपीआई ट्यूनिंग पूरी होने का इंतज़ार नहीं करता. इसके बजाय, यह google.api_core.operation.Operation दिखाता है एक ऑब्जेक्ट होता है, जो आपको ट्यूनिंग जॉब की स्थिति देखने या इसके लिए इंतज़ार करने देता है पूरा करें और परिणाम की जाँच करें.

ट्यून किया गया मॉडल, ट्यून किए गए मॉडल की सूची में तुरंत जुड़ जाता है. हालांकि, मॉडल ट्यून होने के दौरान, इसकी स्थिति "बनाया जा रहा है" पर सेट होती है.

ट्यूनिंग की प्रोग्रेस देखना

wait_bar() का इस्तेमाल करके, ट्यूनिंग की प्रोग्रेस देखी जा सकती है तरीका:

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

ट्यूनिंग के चरणों की कुल संख्या देखने के लिए, operation.metadata का भी इस्तेमाल किया जा सकता है और operation.update() का इस्तेमाल करें.

cancel() तरीके का इस्तेमाल करके, ट्यूनिंग की प्रोसेस को किसी भी समय रद्द किया जा सकता है.

operation.cancel()

मॉडल आज़माना

Google आपके यूआरएल पैरामीटर को कैसे इस्तेमाल करेगा, यह तय करने के लिए 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")