| | গুগল কোলাবে চালান | | | GitHub-এ উৎস দেখুন |
জেমা মডেলগুলিকে প্রম্পট করার জন্য ছবি ব্যবহার করা আপনার জগৎকে বোঝার এবং ভিজ্যুয়াল ডেটার সাহায্যে সমস্যা সমাধানের জন্য সম্পূর্ণ নতুন সম্ভাবনার দ্বার উন্মোচন করে। 4B এবং তার বেশি আকারের জেমা 3 দিয়ে শুরু করে, আপনি আরও সমৃদ্ধ প্রেক্ষাপট তৈরি করতে এবং আরও জটিল কাজ সমাধানের জন্য আপনার প্রম্পটের অংশ হিসাবে চিত্র ডেটা ব্যবহার করতে পারেন।
এই টিউটোরিয়ালটি আপনাকে দেখাবে কিভাবে JAX-এর জন্য Gemma লাইব্রেরি ব্যবহার করে ছবি সহ Gemma-কে প্রম্পট করতে হয়। Gemma লাইব্রেরি হল JAX- এর এক্সটেনশন হিসেবে তৈরি একটি পাইথন প্যাকেজ, যা আপনাকে নাটকীয়ভাবে কম কোড ব্যবহার করে JAX ফ্রেমওয়ার্কের কর্মক্ষমতা সুবিধাগুলি ব্যবহার করতে দেয়।
সেটআপ
এই টিউটোরিয়ালটি সম্পূর্ণ করার জন্য, আপনাকে প্রথমে Gemma setup এ সেটআপ নির্দেশাবলী সম্পূর্ণ করতে হবে। Gemma সেটআপ নির্দেশাবলী আপনাকে নিম্নলিখিতগুলি কীভাবে করতে হবে তা দেখায়:
- kaggle.com- এ Gemma-এর অ্যাক্সেস পান।
- জেমা মডেল চালানোর জন্য পর্যাপ্ত রিসোর্স সহ একটি Colab রানটাইম নির্বাচন করুন।
- একটি Kaggle ব্যবহারকারীর নাম এবং API কী তৈরি এবং কনফিগার করুন।
জেমা সেটআপ সম্পন্ন করার পর, পরবর্তী বিভাগে যান, যেখানে আপনি আপনার কোল্যাব পরিবেশের জন্য পরিবেশ ভেরিয়েবল সেট করবেন।
লাইব্রেরি ইনস্টল করুন
জেমা লাইব্রেরি ইনস্টল করুন।
pip install -q gemmaপরিবেশের ভেরিয়েবল সেট করুন
আপনার Kaggle অ্যাকাউন্ট দিয়ে লগইন করুন।
# This will prompt you to enter your Kaggle API token
import kagglehub
kagglehub.login()
VBox(children=(HTML(value='<center> <img\nsrc=https://www.kaggle.com/static/images/site-logo.png\nalt=\'Kaggle… Kaggle credentials set. Warning: Looks like you're using an outdated `kagglehub` version (installed: 0.3.13), please consider upgrading to the latest version (0.4.1). Kaggle credentials successfully validated.
JAX পরিবেশকে সম্পূর্ণ GPU মেমরি স্পেস ব্যবহার করার জন্য সেট করুন।
import os
os.environ["XLA_PYTHON_CLIENT_MEM_FRACTION"]="1.00"
প্যাকেজ আমদানি করুন
জেমা লাইব্রেরি এবং অতিরিক্ত সহায়তা লাইব্রেরি আমদানি করুন।
# Common imports
import os
import jax
import jax.numpy as jnp
import tensorflow_datasets as tfds
# Gemma imports
from gemma import gm
একটি মডেল কনফিগার করুন
ব্যবহারের জন্য একটি Gemma মডেল নির্বাচন করুন এবং কনফিগার করুন, যার মধ্যে একটি টোকেনাইজার, মডেল আর্কিটেকচার এবং চেকপয়েন্ট অন্তর্ভুক্ত। Gemma libary Google এর সমস্ত অফিসিয়াল মডেল রিলিজ সমর্থন করে। আপনার প্রম্পটের অংশ হিসেবে ছবিগুলি প্রক্রিয়া করতে সক্ষম হওয়ার জন্য আপনাকে Gemma3Tokenizer এবং একটি Gemma 3 বা তার পরবর্তী মডেল ব্যবহার করতে হবে।
মডেলটি কনফিগার করতে, নিম্নলিখিত কোডটি চালান:
tokenizer = gm.text.Gemma3Tokenizer()
model = gm.nn.Gemma3_4B()
params = gm.ckpts.load_params(gm.ckpts.CheckpointPath.GEMMA3_4B_IT)
WARNING:absl:Provided metadata contains unknown key custom. Adding it to custom_metadata.
টেক্সট দিয়ে টেক্সট তৈরি করুন
টেক্সট দিয়ে প্রম্পট করে শুরু করুন। জেমা লাইব্রেরি সহজ প্রম্পটিংয়ের জন্য একটি স্যাম্পলার ফাংশন প্রদান করে।
sampler = gm.text.Sampler(
model=model,
params=params,
tokenizer=tokenizer,
)
sampler.sample('Roses are red.', max_new_tokens=30)
'\nViolets are blue.\nI love you,\nAnd I want you too.\n\n---\n\nThis is a classic, simple, and'
প্রম্পট পরিবর্তন করুন এবং বিভিন্ন আউটপুট তৈরি করতে টোকেনের সর্বোচ্চ সংখ্যা পরিবর্তন করুন।
ছবি সহ টেক্সট তৈরি করুন
একবার আপনার টেক্সট প্রম্পট কাজ করলে, আপনি আপনার প্রম্পটে ছবি যোগ করতে পারেন। নিশ্চিত করুন যে আপনি একটি Gemma 3 বা তার পরবর্তী মডেল কনফিগার করেছেন যা 4B বা তার বেশি, এবং Gemma3Tokenizer কনফিগার করেছেন।
একটি ছবি লোড করুন
একটি ডেটা সোর্স অথবা স্থানীয় ফাইল থেকে একটি ছবি লোড করুন। নিম্নলিখিত কোডটি দেখায় কিভাবে একটি টেনসরফ্লো ডেটাসোর্স থেকে একটি ছবি লোড করতে হয়:
ds = tfds.data_source('oxford_flowers102', split='train')
image = ds[0]['image']
# display the image
image
WARNING:absl:Variant folder /root/tensorflow_datasets/oxford_flowers102/2.1.1 has no dataset_info.json Downloading and preparing dataset Unknown size (download: Unknown size, generated: Unknown size, total: Unknown size) to /root/tensorflow_datasets/oxford_flowers102/2.1.1... Dl Completed...: 0 url [00:00, ? url/s] Dl Size...: 0 MiB [00:00, ? MiB/s] Extraction completed...: 0 file [00:00, ? file/s] Generating splits...: 0%| | 0/3 [00:00<?, ? splits/s] Generating train examples...: 0 examples [00:00, ? examples/s] Shuffling /root/tensorflow_datasets/oxford_flowers102/incomplete.2TXIHE_2.1.1/oxford_flowers102-train.array_re… Generating test examples...: 0 examples [00:00, ? examples/s] Shuffling /root/tensorflow_datasets/oxford_flowers102/incomplete.2TXIHE_2.1.1/oxford_flowers102-test.array_rec… Generating validation examples...: 0 examples [00:00, ? examples/s] Shuffling /root/tensorflow_datasets/oxford_flowers102/incomplete.2TXIHE_2.1.1/oxford_flowers102-validation.arr… Dataset oxford_flowers102 downloaded and prepared to /root/tensorflow_datasets/oxford_flowers102/2.1.1. Subsequent calls will reuse this data.

ছবির তথ্য সহ প্রম্পট প্রস্তুত করুন
যখন আপনি ইমেজ ডেটা দিয়ে প্রম্পট করেন, তখন আপনি একটি নির্দিষ্ট ট্যাগ <start_of_image> যোগ করেন, যাতে আপনার প্রম্পট লেখার সাথে ইমেজটি অন্তর্ভুক্ত করা যায়। তারপর আপনি মডেলের সাথে এটি চালানোর জন্য প্রস্তুত করার জন্য tokenizer অবজেক্ট ব্যবহার করে ইমেজ ডেটা সহ প্রম্পটটি এনকোড করেন।
prompt = """<start_of_turn>user
Describe the contents of this image.
<start_of_image>
<end_of_turn>
<start_of_turn>model
"""
যদি আপনি একাধিক ছবি দিয়ে প্রম্পট করতে চান, তাহলে আপনার প্রম্পটে অন্তর্ভুক্ত প্রতিটি ছবির জন্য একটি <start_of_image> ট্যাগ অন্তর্ভুক্ত করতে হবে।
ছবির ডেটা সহ প্রম্পটটি চালান
আপনার ইমেজ ডেটা এবং ইমেজ ট্যাগ সহ প্রম্পট প্রস্তুত করার পরে, আপনি প্রম্পটটি চালাতে এবং আউটপুট তৈরি করতে পারেন। নিম্নলিখিত কোডটি দেখায় কিভাবে Sampler ফাংশন ব্যবহার করে প্রম্পটটি চালাতে হয়:
sampler = gm.text.Sampler(
model=model,
params=params,
tokenizer=tokenizer,
)
out = sampler.sample(prompt, images=image, max_new_tokens=500)
print(out)
/usr/local/lib/python3.12/dist-packages/jax/_src/ops/scatter.py:108: FutureWarning: scatter inputs have incompatible types: cannot safely cast value from dtype=float32 to dtype=bfloat16 with jax_numpy_dtype_promotion='standard'. In future JAX releases this will result in an error. warnings.warn( Here's a description of the image's contents: **Subject:** The image features a close-up shot of a water lily in full bloom. **Details:** * **Flower:** The lily is predominantly white with a delicate pink hue at the base of the petals. It has a striking, star-like shape with pointed petals that curve upwards. * **Center:** The flower's center is a vibrant yellow, with prominent stamens extending outwards. There are a few water droplets clinging to the petals. * **Stem and Pads:** The lily is resting on a dark, textured stem and broad, paddle-shaped pads that are characteristic of water lilies. * **Background:** The background is completely black, creating a dramatic contrast and isolating the flower, making it the clear focal point. **Overall Impression:** The image has a serene and elegant feel, emphasizing the beauty and detail of the water lily. The dark background and lighting create a sense of depth and highlight the flower's form.<end_of_turn>
বিকল্পভাবে, আপনি gm.text.ChatSampler() ফাংশন ব্যবহার করে <start_of_turn> ট্যাগ ছাড়াই একটি প্রতিক্রিয়া তৈরি করতে পারেন। আরও বিস্তারিত জানার জন্য, JAX ডকুমেন্টেশনের জন্য Gemma লাইব্রেরি দেখুন।
পরবর্তী পদক্ষেপ
জেমা লাইব্রেরি আরও অনেক অতিরিক্ত কার্যকারিতা প্রদান করে। আরও তথ্যের জন্য এই অতিরিক্ত সংস্থানগুলি দেখুন:
JAX-এর জন্য Gemma লাইব্রেরি LoRA, Sharding, Quantization এবং আরও অনেক কিছু সহ অতিরিক্ত কার্যকারিতা প্রদান করে। আরও বিস্তারিত জানার জন্য, Gemma লাইব্রেরি ডকুমেন্টেশন দেখুন। যদি আপনার কোন প্রতিক্রিয়া থাকে, অথবা Gemma লাইব্রেরি ব্যবহারে সমস্যা হয়, তাহলে রিপোজিটরি ইস্যু ইন্টারফেসের মাধ্যমে জমা দিন।
গুগল কোলাবে চালান
GitHub-এ উৎস দেখুন