ai.google.dev-এ দেখুন | Google Colab-এ চালান | GitHub-এ উৎস দেখুন |
CodeGemma হল হালকা ওজনের, অত্যাধুনিক ওপেন মডেলের একটি পরিবার যা একই গবেষণা এবং প্রযুক্তি থেকে তৈরি করা হয় যা জেমিনি মডেল তৈরি করতে ব্যবহৃত হয়।
কোডজেমা মডেলগুলিকে প্রাথমিকভাবে কোডের 500 বিলিয়নেরও বেশি টোকেনগুলিতে প্রশিক্ষণ দেওয়া হয়, জেমা মডেল পরিবারের মতো একই স্থাপত্যগুলি ব্যবহার করে৷ ফলস্বরূপ, CodeGemma মডেলগুলি স্কেলে দৃঢ় বোঝাপড়া এবং যুক্তির দক্ষতা বজায় রেখে সমাপ্তি এবং প্রজন্ম উভয় কাজেই অত্যাধুনিক কোড কার্যকারিতা অর্জন করে।
কোডজেমার 3টি রূপ রয়েছে:
- একটি 7B কোড পূর্বপ্রশিক্ষিত মডেল
- একটি 7B নির্দেশ-সুরিত কোড মডেল
- একটি 2B মডেল, বিশেষভাবে কোড ইনফিলিং এবং ওপেন-এন্ডেড জেনারেশনের জন্য প্রশিক্ষিত।
এই গাইড আপনাকে কোড কমপ্লিশন টাস্কের জন্য KerasNLP-এর সাথে CodeGemma 2B মডেল ব্যবহার করে নিয়ে যাবে।
সেটআপ
CodeGemma অ্যাক্সেস পান
এই টিউটোরিয়ালটি সম্পূর্ণ করতে, আপনাকে প্রথমে Gemma সেটআপে সেটআপ নির্দেশাবলী সম্পূর্ণ করতে হবে। জেমা সেটআপ নির্দেশাবলী আপনাকে দেখায় যে কীভাবে নিম্নলিখিতগুলি করতে হবে:
- kaggle.com- এ Gemma-এ অ্যাক্সেস পান।
- Gemma 2B মডেল চালানোর জন্য পর্যাপ্ত সম্পদ সহ একটি Colab রানটাইম বেছে নিন।
- একটি Kaggle ব্যবহারকারীর নাম এবং API কী তৈরি এবং কনফিগার করুন।
আপনি জেমা সেটআপ সম্পূর্ণ করার পরে, পরবর্তী বিভাগে যান, যেখানে আপনি আপনার Colab পরিবেশের জন্য পরিবেশের ভেরিয়েবল সেট করবেন।
রানটাইম নির্বাচন করুন
এই টিউটোরিয়ালটি সম্পূর্ণ করার জন্য, CodeGemma 2B মডেল চালানোর জন্য আপনার যথেষ্ট সম্পদ সহ একটি Colab রানটাইম থাকতে হবে। এই ক্ষেত্রে, আপনি একটি T4 GPU ব্যবহার করতে পারেন:
- Colab উইন্ডোর উপরের ডানদিকে, ▾ ( অতিরিক্ত সংযোগ বিকল্প ) নির্বাচন করুন।
- রানটাইম পরিবর্তন নির্বাচন করুন।
- হার্ডওয়্যার এক্সিলারেটরের অধীনে, T4 GPU নির্বাচন করুন।
আপনার API কী কনফিগার করুন
Gemma ব্যবহার করতে, আপনাকে অবশ্যই আপনার Kaggle ব্যবহারকারীর নাম এবং একটি Kaggle API কী প্রদান করতে হবে।
একটি Kaggle API কী তৈরি করতে, আপনার Kaggle ব্যবহারকারী প্রোফাইলের অ্যাকাউন্ট ট্যাবে যান এবং নতুন টোকেন তৈরি করুন নির্বাচন করুন। এটি আপনার API শংসাপত্র ধারণকারী একটি kaggle.json
ফাইলের ডাউনলোডকে ট্রিগার করবে৷
Colab-এ, বাম ফলকে সিক্রেটস (🔑) নির্বাচন করুন এবং আপনার Kaggle ব্যবহারকারীর নাম এবং Kaggle API কী যোগ করুন। KAGGLE_USERNAME
নামে আপনার ব্যবহারকারীর নাম এবং KAGGLE_KEY
নামের অধীনে আপনার API কী সংরক্ষণ করুন।
পরিবেশের ভেরিয়েবল সেট করুন
KAGGLE_USERNAME
এবং KAGGLE_KEY
এর জন্য পরিবেশ ভেরিয়েবল সেট করুন।
import os
from google.colab import userdata
os.environ["KAGGLE_USERNAME"] = userdata.get('KAGGLE_USERNAME')
os.environ["KAGGLE_KEY"] = userdata.get('KAGGLE_KEY')
নির্ভরতা ইনস্টল করুন
pip install -q -U keras-nlp
একটি ব্যাকএন্ড নির্বাচন করুন
কেরাস হল একটি উচ্চ-স্তরের, মাল্টি-ফ্রেমওয়ার্ক ডিপ লার্নিং API যা সরলতা এবং ব্যবহারের সহজতার জন্য ডিজাইন করা হয়েছে। কেরাস 3 ব্যবহার করে, আপনি তিনটি ব্যাকএন্ডের একটিতে ওয়ার্কফ্লো চালাতে পারেন: টেনসরফ্লো, জেএএক্স, বা পাইটর্চ।
এই টিউটোরিয়ালের জন্য, TensorFlow-এর জন্য ব্যাকএন্ড কনফিগার করুন।
os.environ["KERAS_BACKEND"] = "tensorflow" # Or "jax" or "torch".
প্যাকেজ আমদানি করুন
কেরাস এবং কেরাসএনএলপি আমদানি করুন।
import keras_nlp
import keras
# Run at half precision.
keras.config.set_floatx("bfloat16")
লোড মডেল
KerasNLP অনেক জনপ্রিয় মডেল আর্কিটেকচারের বাস্তবায়ন প্রদান করে। এই টিউটোরিয়ালে, আপনি GemmaCausalLM
ব্যবহার করে একটি মডেল তৈরি করবেন, কার্যকারণ ভাষার মডেলিংয়ের জন্য এন্ড-টু-এন্ড জেমা মডেল। একটি কার্যকারণ ভাষা মডেল পূর্ববর্তী টোকেনগুলির উপর ভিত্তি করে পরবর্তী টোকেনের পূর্বাভাস দেয়।
from_preset
পদ্ধতি ব্যবহার করে মডেল তৈরি করুন:
gemma_lm = keras_nlp.models.GemmaCausalLM.from_preset("code_gemma_2b_en")
gemma_lm.summary()
Downloading from https://www.kaggle.com/api/v1/models/keras/codegemma/keras/code_gemma_2b_en/1/download/config.json... 100%|██████████| 554/554 [00:00<00:00, 1.41MB/s] Downloading from https://www.kaggle.com/api/v1/models/keras/codegemma/keras/code_gemma_2b_en/1/download/model.weights.h5... 100%|██████████| 4.67G/4.67G [05:06<00:00, 16.4MB/s] Downloading from https://www.kaggle.com/api/v1/models/keras/codegemma/keras/code_gemma_2b_en/1/download/tokenizer.json... 100%|██████████| 401/401 [00:00<00:00, 382kB/s] Downloading from https://www.kaggle.com/api/v1/models/keras/codegemma/keras/code_gemma_2b_en/1/download/assets/tokenizer/vocabulary.spm... 100%|██████████| 4.04M/4.04M [00:01<00:00, 2.41MB/s]
from_preset
পদ্ধতিটি একটি প্রিসেট আর্কিটেকচার এবং ওজন থেকে মডেলটিকে ইনস্ট্যান্টিয়েট করে। উপরের কোডে, স্ট্রিং code_gemma_2b_en
পূর্বনির্ধারিত আর্কিটেকচার নির্দিষ্ট করে — 2 বিলিয়ন প্যারামিটার সহ একটি CodeGemma মডেল।
ফিল-ইন-দ্য-মিডল কোড সমাপ্তি
এই উদাহরণটি পার্শ্ববর্তী প্রেক্ষাপটের উপর ভিত্তি করে কোড সম্পূর্ণ করতে CodeGemma-এর ফিল-ইন-দ্য-মিডল (FIM) ক্ষমতা ব্যবহার করে। এটি কোড সন্নিবেশ করার জন্য কোড এডিটর অ্যাপ্লিকেশনগুলিতে বিশেষভাবে উপযোগী যেখানে পাঠ্য কার্সার তার চারপাশের কোডের উপর ভিত্তি করে (কারসারের আগে এবং পরে)।
CodeGemma আপনাকে 4টি ব্যবহারকারী-সংজ্ঞায়িত টোকেন ব্যবহার করতে দেয় - 3টি FIM এর জন্য এবং একটি <|file_separator|>
টোকেন মাল্টি-ফাইল প্রসঙ্গ সমর্থনের জন্য। ধ্রুবক সংজ্ঞায়িত করতে এইগুলি ব্যবহার করুন।
BEFORE_CURSOR = "<|fim_prefix|>"
AFTER_CURSOR = "<|fim_suffix|>"
AT_CURSOR = "<|fim_middle|>"
FILE_SEPARATOR = "<|file_separator|>"
মডেলের জন্য স্টপ টোকেন সংজ্ঞায়িত করুন।
END_TOKEN = gemma_lm.preprocessor.tokenizer.end_token
stop_tokens = (BEFORE_CURSOR, AFTER_CURSOR, AT_CURSOR, FILE_SEPARATOR, END_TOKEN)
stop_token_ids = tuple(gemma_lm.preprocessor.tokenizer.token_to_id(x) for x in stop_tokens)
কোড সমাপ্তির জন্য প্রম্পট ফর্ম্যাট করুন। মনে রাখবেন যে:
- কোনো FIM টোকেন এবং প্রিফিক্স এবং প্রত্যয়গুলির মধ্যে কোনও হোয়াইটস্পেস থাকা উচিত নয়৷
- FIM মধ্যম টোকেনটি পূরণ করা চালিয়ে যাওয়ার জন্য মডেলটিকে প্রাইম করার শেষে থাকা উচিত
- ফাইলটিতে বর্তমানে কার্সারটি কোথায় রয়েছে বা আপনি মডেলটিকে কতটা প্রসঙ্গ দিতে চান তার উপর নির্ভর করে উপসর্গ বা প্রত্যয়টি খালি হতে পারে
প্রম্পট ফর্ম্যাট করতে একটি সহায়ক ফাংশন ব্যবহার করুন।
def format_completion_prompt(before, after):
return f"{BEFORE_CURSOR}{before}{AFTER_CURSOR}{after}{AT_CURSOR}"
before = "import "
after = """if __name__ == "__main__":\n sys.exit(0)"""
prompt = format_completion_prompt(before, after)
print(prompt)
<|fim_prefix|>import <|fim_suffix|>if __name__ == "__main__": sys.exit(0)<|fim_middle|>
প্রম্পট চালান। এটি প্রতিক্রিয়া টোকেন স্ট্রিম করার সুপারিশ করা হয়. ফলাফল কোড সমাপ্তি পেতে ব্যবহারকারী-সংজ্ঞায়িত বা টার্ন/সেনেটেন্স টোকেনের শেষের মুখোমুখি হওয়ার পরে স্ট্রিমিং বন্ধ করুন।
gemma_lm.generate(prompt, stop_token_ids=stop_token_ids, max_length=128)
'<|fim_prefix|>import <|fim_suffix|>if __name__ == "__main__":\n sys.exit(0)<|fim_middle|>sys\n<|file_separator|>'
মডেলটি প্রস্তাবিত কোড সমাপ্তি হিসাবে sys
প্রদান করে।
সারসংক্ষেপ
এই টিউটোরিয়ালটি আপনাকে আশেপাশের প্রেক্ষাপটের উপর ভিত্তি করে কোড ইনফিল করতে CodeGemma ব্যবহার করে নিয়ে গেছে। এরপরে, আপনি কিভাবে CodeGemma ব্যবহার করতে পারেন তার আরো উদাহরণের জন্য CodeGemma এবং KerasNLP নোটবুকের সাথে AI অ্যাসিস্টেড প্রোগ্রামিং দেখুন।
এছাড়াও কোডজেমা মডেলের প্রযুক্তিগত বৈশিষ্ট্যের জন্য কোডজেমা মডেল কার্ডটি দেখুন।