ai.google.dev-এ দেখুন | Google Colab-এ চালান | GitHub-এ উৎস দেখুন |
এই নোটবুকে, আপনি জেমিনি API-এর জন্য পাইথন ক্লায়েন্ট লাইব্রেরি ব্যবহার করে টিউনিং পরিষেবাটি কীভাবে শুরু করবেন তা শিখবেন। এখানে, আপনি শিখবেন কিভাবে Gemini API এর টেক্সট জেনারেশন সার্ভিসের পিছনে টেক্সট মডেল টিউন করতে হয়।
আপনি শুরু করার আগে: আপনার প্রকল্প এবং API কী সেট আপ করুন
Gemini API কল করার আগে, আপনাকে আপনার প্রকল্প সেট আপ করতে হবে এবং আপনার API কী কনফিগার করতে হবে।
আপনার API কী পান এবং সুরক্ষিত করুন
Gemini API কল করার জন্য আপনার একটি API কী প্রয়োজন। আপনার যদি ইতিমধ্যে একটি না থাকে তবে Google AI স্টুডিওতে একটি কী তৈরি করুন৷
এটি দৃঢ়ভাবে সুপারিশ করা হয় যে আপনি আপনার সংস্করণ নিয়ন্ত্রণ সিস্টেমে একটি API কী চেক করবেন না ৷ পরিবর্তে, আপনার API কী একটি গোপন দোকানে সংরক্ষণ করা উচিত (উদাহরণস্বরূপ, সিক্রেট ম্যানেজার )।
SDK প্যাকেজ ইনস্টল করুন এবং আপনার API কী কনফিগার করুন
Gemini API-এর জন্য Python SDK google-generativeai
প্যাকেজে রয়েছে।
পিপ ব্যবহার করে নির্ভরতা ইনস্টল করুন:
pip install -U google-generativeai
প্যাকেজটি আমদানি করুন এবং আপনার API কী দিয়ে পরিষেবাটি কনফিগার করুন:
import os import google.generativeai as genai genai.configure(api_key=os.environ['API_KEY'])
সেটআপ
প্রমাণীকরণ সেট আপ করুন
জেমিনি API আপনাকে আপনার নিজস্ব ডেটাতে মডেলগুলি টিউন করতে দেয়৷ যেহেতু এটি আপনার ডেটা এবং আপনার টিউন করা মডেলগুলি এর জন্য API-কীগুলি সরবরাহ করতে পারে তার চেয়ে কঠোর অ্যাক্সেস নিয়ন্ত্রণের প্রয়োজন৷
আপনি এই টিউটোরিয়ালটি চালানোর আগে, আপনাকে আপনার প্রকল্পের জন্য OAuth সেটআপ করতে হবে।
Colab-এ সেট-আপ করার সবচেয়ে সহজ উপায় হল আপনার client_secret.json
ফাইলের বিষয়বস্তু Colab-এর "সিক্রেটস ম্যানেজার"-এ (বাম প্যানেলে কী আইকনের নিচে) CLIENT_SECRET
গোপন নাম দিয়ে কপি করা।
এই gcloud কমান্ডটি client_secret.json
ফাইলটিকে শংসাপত্রে পরিণত করে যা পরিষেবার সাথে প্রমাণীকরণের জন্য ব্যবহার করা যেতে পারে।
import os
if 'COLAB_RELEASE_TAG' in os.environ:
from google.colab import userdata
import pathlib
pathlib.Path('client_secret.json').write_text(userdata.get('CLIENT_SECRET'))
# Use `--no-browser` in colab
!gcloud auth application-default login --no-browser --client-id-file client_secret.json --scopes='https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/generative-language.tuning'
else:
!gcloud auth application-default login --client-id-file client_secret.json --scopes='https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/generative-language.tuning'
ক্লায়েন্ট লাইব্রেরি ইনস্টল করুন
pip install -q google-generativeai
লাইব্রেরি আমদানি করুন
import google.generativeai as genai
আপনি genai.list_tuned_model
পদ্ধতির মাধ্যমে আপনার বিদ্যমান টিউন করা মডেলগুলি পরীক্ষা করতে পারেন।
for i, m in zip(range(5), genai.list_tuned_models()):
print(m.name)
tunedModels/my-model-8527 tunedModels/my-model-7092 tunedModels/my-model-2778 tunedModels/my-model-1298 tunedModels/my-model-3883
টিউন করা মডেল তৈরি করুন
একটি টিউন করা মডেল তৈরি করতে, আপনাকে genai.create_tuned_model
পদ্ধতিতে মডেলটিতে আপনার ডেটাসেট পাস করতে হবে। আপনি কলে ইনপুট এবং আউটপুট মান সরাসরি সংজ্ঞায়িত করে বা পদ্ধতিতে পাস করার জন্য একটি ডেটাফ্রেমে একটি ফাইল থেকে আমদানি করে এটি করতে পারেন।
এই উদাহরণের জন্য, আপনি ক্রমানুসারে পরবর্তী সংখ্যা তৈরি করতে একটি মডেল টিউন করবেন। উদাহরণস্বরূপ, যদি ইনপুট 1
হয়, তাহলে মডেলটি 2
আউটপুট করবে। ইনপুট one hundred
হলে আউটপুট one hundred one
হতে হবে।
base_model = [
m for m in genai.list_models()
if "createTunedModel" in m.supported_generation_methods][0]
base_model
Model(name='models/gemini-1.0-pro-001', base_model_id='', version='001', display_name='Gemini 1.0 Pro', description=('The best model for scaling across a wide range of tasks. This is a stable ' 'model that supports tuning.'), input_token_limit=30720, output_token_limit=2048, supported_generation_methods=['generateContent', 'countTokens', 'createTunedModel'], temperature=0.9, top_p=1.0, top_k=1)
import random
name = f'generate-num-{random.randint(0,10000)}'
operation = genai.create_tuned_model(
# You can use a tuned model here too. Set `source_model="tunedModels/..."`
source_model=base_model.name,
training_data=[
{
'text_input': '1',
'output': '2',
},{
'text_input': '3',
'output': '4',
},{
'text_input': '-3',
'output': '-2',
},{
'text_input': 'twenty two',
'output': 'twenty three',
},{
'text_input': 'two hundred',
'output': 'two hundred one',
},{
'text_input': 'ninety nine',
'output': 'one hundred',
},{
'text_input': '8',
'output': '9',
},{
'text_input': '-98',
'output': '-97',
},{
'text_input': '1,000',
'output': '1,001',
},{
'text_input': '10,100,000',
'output': '10,100,001',
},{
'text_input': 'thirteen',
'output': 'fourteen',
},{
'text_input': 'eighty',
'output': 'eighty one',
},{
'text_input': 'one',
'output': 'two',
},{
'text_input': 'three',
'output': 'four',
},{
'text_input': 'seven',
'output': 'eight',
}
],
id = name,
epoch_count = 100,
batch_size=4,
learning_rate=0.001,
)
আপনার টিউন করা মডেলটি অবিলম্বে টিউন করা মডেলের তালিকায় যোগ করা হয়েছে, কিন্তু মডেলটি টিউন করার সময় এর স্থিতি "তৈরি করা" তে সেট করা হয়েছে৷
model = genai.get_tuned_model(f'tunedModels/{name}')
model
TunedModel(name='tunedModels/generate-num-2946', source_model='models/gemini-1.0-pro-001', base_model='models/gemini-1.0-pro-001', display_name='', description='', temperature=0.9, top_p=1.0, top_k=1, state=<State.CREATING: 1>, create_time=datetime.datetime(2024, 2, 21, 20, 4, 16, 448050, tzinfo=datetime.timezone.utc), update_time=datetime.datetime(2024, 2, 21, 20, 4, 16, 448050, tzinfo=datetime.timezone.utc), tuning_task=TuningTask(start_time=datetime.datetime(2024, 2, 21, 20, 4, 16, 890698, tzinfo=datetime.timezone.utc), complete_time=None, snapshots=[], hyperparameters=Hyperparameters(epoch_count=100, batch_size=4, learning_rate=0.001)))
model.state
<State.CREATING: 1>
টিউনিং অগ্রগতি পরীক্ষা করুন
অবস্থা পরীক্ষা করতে metadata
ব্যবহার করুন:
operation.metadata
total_steps: 375 tuned_model: "tunedModels/generate-num-2946"
operation.result()
, বা operation.wait_bar()
ব্যবহার করে প্রশিক্ষণ শেষ হওয়ার জন্য অপেক্ষা করুন
import time
for status in operation.wait_bar():
time.sleep(30)
0%| | 0/375 [00:00<?, ?it/s]
আপনি cancel()
পদ্ধতি ব্যবহার করে যেকোনো সময় আপনার টিউনিং কাজ বাতিল করতে পারেন। নিচের লাইনটি আনকমেন্ট করুন এবং আপনার কাজ শেষ হওয়ার আগে বাতিল করতে কোড সেল চালান।
# operation.cancel()
টিউনিং সম্পূর্ণ হলে, আপনি টিউনিং ফলাফল থেকে ক্ষতি বক্ররেখা দেখতে পারেন। ক্ষতির বক্ররেখা দেখায় যে মডেলের ভবিষ্যদ্বাণী আদর্শ আউটপুট থেকে কতটা বিচ্যুত।
import pandas as pd
import seaborn as sns
model = operation.result()
snapshots = pd.DataFrame(model.tuning_task.snapshots)
sns.lineplot(data=snapshots, x = 'epoch', y='mean_loss')
<Axes: xlabel='epoch', ylabel='mean_loss'>
আপনার মডেল মূল্যায়ন
আপনি genai.generate_text
পদ্ধতি ব্যবহার করতে পারেন এবং আপনার মডেলের কার্যক্ষমতা পরীক্ষা করতে আপনার মডেলের নাম উল্লেখ করতে পারেন।
model = genai.GenerativeModel(model_name=f'tunedModels/{name}')
result = model.generate_content('55')
result.text
'56'
result = model.generate_content('123455')
result.text
'123456'
result = model.generate_content('four')
result.text
'five'
result = model.generate_content('quatre') # French 4
result.text # French 5 is "cinq"
'IV'
'cinq'
result = model.generate_content('III') # Roman numeral 3
result.text # Roman numeral 4 is IV
result = model.generate_content('七') # Japanese 7
result.text # Japanese 8 is 八!
'八'
সীমিত উদাহরণ থাকা সত্ত্বেও এটি সত্যিই কাজটি বেছে নিয়েছে বলে মনে হচ্ছে, কিন্তু "পরবর্তী" একটি তুলনামূলকভাবে সহজ ধারণা, কর্মক্ষমতা উন্নত করার বিষয়ে আরও নির্দেশনার জন্য টিউনিং গাইড দেখুন।
বর্ণনা আপডেট করুন
আপনি genai.update_tuned_model
পদ্ধতি ব্যবহার করে যেকোনো সময় আপনার টিউন করা মডেলের বিবরণ আপডেট করতে পারেন।
genai.update_tuned_model(f'tunedModels/{name}', {"description":"This is my model."});
model = genai.get_tuned_model(f'tunedModels/{name}')
model.description
'This is my model.'
মডেল মুছুন
আপনার আর প্রয়োজন নেই এমন মডেলগুলি মুছে দিয়ে আপনি আপনার টিউন করা মডেল তালিকা পরিষ্কার করতে পারেন৷ একটি মডেল মুছে ফেলার জন্য genai.delete_tuned_model
পদ্ধতি ব্যবহার করুন। আপনি যদি কোনো টিউনিং কাজ বাতিল করেন, আপনি সেগুলি মুছে দিতে চাইতে পারেন কারণ তাদের কর্মক্ষমতা অপ্রত্যাশিত হতে পারে।
genai.delete_tuned_model(f'tunedModels/{name}')
মডেলটি আর বিদ্যমান নেই:
try:
m = genai.get_tuned_model(f'tunedModels/{name}')
print(m)
except Exception as e:
print(f"{type(e)}: {e}")
<class 'google.api_core.exceptions.NotFound'>: 404 Tuned model tunedModels/generate-num-2946 does not exist.