ai.google.dev-এ দেখুন | Google Colab-এ চালান | Vertex AI-তে খুলুন | GitHub-এ উৎস দেখুন |
ওভারভিউ
Gemma হল হালকা ওজনের, অত্যাধুনিক খোলা বড় ভাষা মডেলের একটি পরিবার, যা Google DeepMind Gemini গবেষণা এবং প্রযুক্তির উপর ভিত্তি করে। এই টিউটোরিয়ালটি দেখায় কিভাবে Gemma 2B Instruct মডেলের সাহায্যে JAX (একটি উচ্চ-পারফরম্যান্স সংখ্যাসূচক কম্পিউটিং লাইব্রেরি), ফ্ল্যাক্স (JAX-ভিত্তিক নিউরাল নেটওয়ার্ক লাইব্রেরি), Orbax (a) দিয়ে লেখা Google DeepMind-এর gemma
লাইব্রেরি ব্যবহার করে মৌলিক নমুনা/অনুমান করা যায়। চেকপয়েন্টিংয়ের মতো প্রশিক্ষণের জন্য JAX-ভিত্তিক লাইব্রেরি, এবং SentencePiece (একটি টোকেনাইজার/ডিটোকেনাইজার লাইব্রেরি)। যদিও এই নোটবুকে ফ্ল্যাক্স সরাসরি ব্যবহার করা হয়নি, তবে জেমা তৈরি করতে ফ্ল্যাক্স ব্যবহার করা হয়েছিল।
এই নোটবুকটি বিনামূল্যের T4 GPU সহ Google Colab-এ চলতে পারে ( Edit > Notebook সেটিংস > Hardware Accelerator-এর অধীনে T4 GPU নির্বাচন করুন)।
সেটআপ
1. জেমার জন্য কাগল অ্যাক্সেস সেট আপ করুন
এই টিউটোরিয়ালটি সম্পূর্ণ করার জন্য, আপনাকে প্রথমে Gemma সেটআপে সেটআপ নির্দেশাবলী অনুসরণ করতে হবে, যা আপনাকে নিম্নলিখিতগুলি কীভাবে করতে হবে তা দেখায়:
- kaggle.com- এ Gemma-এ অ্যাক্সেস পান।
- Gemma মডেল চালানোর জন্য পর্যাপ্ত সম্পদ সহ একটি Colab রানটাইম বেছে নিন।
- একটি Kaggle ব্যবহারকারীর নাম এবং API কী তৈরি এবং কনফিগার করুন।
আপনি জেমা সেটআপ সম্পূর্ণ করার পরে, পরবর্তী বিভাগে যান, যেখানে আপনি আপনার Colab পরিবেশের জন্য পরিবেশের ভেরিয়েবল সেট করবেন।
2. পরিবেশ ভেরিয়েবল সেট করুন
KAGGLE_USERNAME
এবং KAGGLE_KEY
এর জন্য পরিবেশ ভেরিয়েবল সেট করুন। যখন "অ্যাক্সেস মঞ্জুর করুন?" বার্তা, গোপন অ্যাক্সেস প্রদান করতে সম্মত হন।
import os
from google.colab import userdata # `userdata` is a Colab API.
os.environ["KAGGLE_USERNAME"] = userdata.get('KAGGLE_USERNAME')
os.environ["KAGGLE_KEY"] = userdata.get('KAGGLE_KEY')
3. gemma
লাইব্রেরি ইনস্টল করুন
এই নোটবুকটি একটি ফ্রি Colab GPU ব্যবহার করার উপর ফোকাস করে। হার্ডওয়্যার ত্বরণ সক্ষম করতে, সম্পাদনা > নোটবুক সেটিংস > T4 GPU নির্বাচন করুন > সংরক্ষণ করুন এ ক্লিক করুন।
এর পরে, আপনাকে github.com/google-deepmind/gemma
থেকে Google DeepMind gemma
লাইব্রেরি ইনস্টল করতে হবে। আপনি যদি "পিপের নির্ভরতা সমাধানকারী" সম্পর্কে একটি ত্রুটি পান তবে আপনি সাধারণত এটি উপেক্ষা করতে পারেন।
pip install -q git+https://github.com/google-deepmind/gemma.git
Gemma মডেল লোড করুন এবং প্রস্তুত করুন
-
kagglehub.model_download
দিয়ে জেমা মডেল লোড করুন, যা তিনটি আর্গুমেন্ট নেয়:
-
handle
: কাগল থেকে মডেল হ্যান্ডেল -
path
: (ঐচ্ছিক স্ট্রিং) স্থানীয় পথ -
force_download
: (ঐচ্ছিক বুলিয়ান) মডেলটিকে পুনরায় ডাউনলোড করতে বাধ্য করে
GEMMA_VARIANT = '2b-it' # @param ['2b', '2b-it'] {type:"string"}
import kagglehub
GEMMA_PATH = kagglehub.model_download(f'google/gemma/flax/{GEMMA_VARIANT}')
Downloading from https://www.kaggle.com/api/v1/models/google/gemma/flax/2b-it/2/download... 100%|██████████| 3.67G/3.67G [00:35<00:00, 110MB/s] Extracting model files...
print('GEMMA_PATH:', GEMMA_PATH)
GEMMA_PATH: /root/.cache/kagglehub/models/google/gemma/flax/2b-it/2
- মডেল ওজন এবং টোকেনাইজারের অবস্থান পরীক্ষা করুন, তারপর পাথ ভেরিয়েবল সেট করুন। টোকেনাইজার ডিরেক্টরিটি মূল ডিরেক্টরিতে থাকবে যেখানে আপনি মডেলটি ডাউনলোড করেছেন, যখন মডেলের ওজনগুলি একটি সাব-ডিরেক্টরিতে থাকবে। উদাহরণ স্বরূপ:
-
tokenizer.model
ফাইলটি/LOCAL/PATH/TO/gemma/flax/2b-it/2
) এ থাকবে। - মডেল চেকপয়েন্টটি হবে
/LOCAL/PATH/TO/gemma/flax/2b-it/2/2b-it
)।
CKPT_PATH = os.path.join(GEMMA_PATH, GEMMA_VARIANT)
TOKENIZER_PATH = os.path.join(GEMMA_PATH, 'tokenizer.model')
print('CKPT_PATH:', CKPT_PATH)
print('TOKENIZER_PATH:', TOKENIZER_PATH)
CKPT_PATH: /root/.cache/kagglehub/models/google/gemma/flax/2b-it/2/2b-it TOKENIZER_PATH: /root/.cache/kagglehub/models/google/gemma/flax/2b-it/2/tokenizer.model
নমুনা/অনুমান সম্পাদন করুন
-
gemma.params.load_and_format_params
পদ্ধতির সাথে জেমা মডেল চেকপয়েন্ট লোড এবং ফর্ম্যাট করুন:
from gemma import params as params_lib
params = params_lib.load_and_format_params(CKPT_PATH)
-
sentencepiece.SentencePieceProcessor
ব্যবহার করে তৈরি জেমা টোকেনাইজার লোড করুন:
import sentencepiece as spm
vocab = spm.SentencePieceProcessor()
vocab.Load(TOKENIZER_PATH)
True
- Gemma মডেল চেকপয়েন্ট থেকে স্বয়ংক্রিয়ভাবে সঠিক কনফিগারেশন লোড করতে,
gemma.transformer.TransformerConfig
ব্যবহার করুন।cache_size
আর্গুমেন্ট হল জেমাTransformer
ক্যাশে সময়ের ধাপের সংখ্যা। এর পরে,gemma.transformer.Transformer
(যাflax.linen.Module
থেকে উত্তরাধিকারসূত্রে পাওয়া যায়) দিয়েtransformer
হিসাবে জেমা মডেলটিকে ইনস্ট্যান্টিয়েট করুন।
from gemma import transformer as transformer_lib
transformer_config = transformer_lib.TransformerConfig.from_params(
params=params,
cache_size=1024
)
transformer = transformer_lib.Transformer(transformer_config)
- জেমা মডেলের চেকপয়েন্ট/ওজন এবং টোকেনাইজারের উপরে
gemma.sampler.Sampler
দিয়ে একটিsampler
তৈরি করুন:
from gemma import sampler as sampler_lib
sampler = sampler_lib.Sampler(
transformer=transformer,
vocab=vocab,
params=params['transformer'],
)
-
input_batch
এ একটি প্রম্পট লিখুন এবং অনুমান সম্পাদন করুন। আপনিtotal_generation_steps
(একটি প্রতিক্রিয়া তৈরি করার সময় সঞ্চালিত পদক্ষেপের সংখ্যা - এই উদাহরণ হোস্ট মেমরি সংরক্ষণের জন্য100
ব্যবহার করে) পরিবর্তন করতে পারেন।
prompt = [
"\n# What is the meaning of life?",
]
reply = sampler(input_strings=prompt,
total_generation_steps=100,
)
for input_string, out_string in zip(prompt, reply.text):
print(f"Prompt:\n{input_string}\nOutput:\n{out_string}")
Prompt: # What is the meaning of life? Output: The question of what the meaning of life is one that has occupied the minds of philosophers, theologians, and individuals for centuries. There is no single, universally accepted answer, but there are many different perspectives on this complex and multifaceted question. **Some common perspectives on the meaning of life include:** * **Biological perspective:** From a biological standpoint, the meaning of life is to survive and reproduce. * **Existential perspective:** Existentialists believe that life is not inherently meaningful and that
- (ঐচ্ছিক) আপনি যদি নোটবুকটি সম্পূর্ণ করে থাকেন এবং অন্য প্রম্পট চেষ্টা করতে চান তবে মেমরি খালি করতে এই সেলটি চালান৷ তারপরে, আপনি ধাপ 3 এ আবার
sampler
ইনস্ট্যান্টিয়েট করতে পারেন এবং ধাপ 4 এ প্রম্পটটি কাস্টমাইজ এবং চালাতে পারেন।
del sampler
আরও জানুন
- আপনি GitHub-এ Google DeepMind
gemma
লাইব্রেরি সম্পর্কে আরও জানতে পারেন, যেটিতে আপনি এই টিউটোরিয়ালটিতে ব্যবহার করেছেন এমন মডিউলগুলির ডকস্ট্রিং রয়েছে, যেমনgemma.params
,gemma.transformer
, এবংgemma.sampler
। - নিম্নলিখিত লাইব্রেরিগুলির নিজস্ব ডকুমেন্টেশন সাইট রয়েছে: কোর JAX , Flax , এবং Orbax ৷
-
sentencepiece
টোকেনাইজার/ডিটোকেনাইজার ডকুমেন্টেশনের জন্য, Google-এরsentencepiece
GitHub রেপো দেখুন। -
kagglehub
ডকুমেন্টেশনের জন্য, Kaggle এরkagglehub
GitHub রেপোতেREADME.md
দেখুন। - Google ক্লাউড ভার্টেক্স এআই-এর সাথে জেমা মডেলগুলি কীভাবে ব্যবহার করবেন তা শিখুন।