इस ट्यूटोरियल की मदद से, curl का इस्तेमाल करके, Python SDK या REST API में से किसी एक का इस्तेमाल करके, Gemini API ट्यूनिंग सेवा का इस्तेमाल शुरू किया जा सकता है. इन उदाहरणों में, 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)
ट्यून किया गया मॉडल बनाना
ट्यून किया गया मॉडल बनाने के लिए, आपको 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
एपिसोड की संख्या, बैच का साइज़, और लर्निंग रेट की सबसे सही वैल्यू, आपके डेटासेट और इस्तेमाल के उदाहरण की अन्य सीमाओं पर निर्भर करती हैं. इन वैल्यू के बारे में ज़्यादा जानने के लिए, बेहतर ट्यूनिंग सेटिंग और हाइपरपैरामीटर देखें.
मॉडल को ट्यून करने में काफ़ी समय लग सकता है. इसलिए, यह एपीआई ट्यूनिंग पूरी होने का इंतज़ार नहीं करता. इसके बजाय, यह एक 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")