১. 🏁 ভূমিকা ও CLI ওভারভিউ
LiteRT CLI 101 প্র্যাক্টিক্যাল কোডল্যাবে স্বাগতম! এই গাইডটি আপনাকে ধাপে ধাপে শূন্য এনভায়রনমেন্ট সেট-আপ থেকে অপ্টিমাইজ করা এজ ইন্টেলিজেন্স ডেপ্লয় করা পর্যন্ত নিয়ে যাওয়ার জন্য ডিজাইন করা হয়েছে।
🌟 ব্যাকগ্রাউন্ড
Edge AI-এর জন্য জটিল নিউরাল মডেল সরাসরি মোবাইল ফোন, হালকা ও ছোট ডিভাইস এবং এম্বেড করা হার্ডওয়্যারে আনতে হয়।
- LiteRT (আগে TensorFlow Lite / TFLite নামে পরিচিত ছিল) হল Google-এর অন-ডিভাইস ফ্রেমওয়ার্ক যা প্রান্তিক প্ল্যাটফর্মে হাই-পারফর্ম্যান্স ML ও GenAI ডিপ্লয় করার জন্য তৈরি করা হয়েছে। এটি কার্যকর কনভার্সন, রানটাইম ও অপ্টিমাইজেশনের মাধ্যমে কাজ করে।
- LiteRT CLI, Google AI Edge স্ট্যাককে একটি স্ট্যান্ডঅ্যালোন শেল কমান্ডে (
litert) ইন্টিগ্রেট করে, যাতে LiteRT-সম্পর্কিত ডেভেলপমেন্ট ওয়ার্কফ্লোকে স্ট্রিমলাইন করা যায়। এর মধ্যে রয়েছে বিভিন্ন প্ল্যাটফর্ম (ডেস্কটপ, মোবাইল বা ক্লাউড) জুড়ে বিভিন্ন হার্ডওয়্যারে (CPU / GPU / NPU) LiteRT (TFLite) মডেল কনভার্ট, কোয়ান্টাইজ, কম্পাইল, রান, বেঞ্চমার্ক এবং ভিজ্যুয়ালাইজ করা।
২. 🔄 বেসিক ওয়ার্কফ্লো: কনভার্সন, কোয়ান্টাইজ ও রান
এই বিভাগে, LiteRT CLI-এর সাহায্যে সম্পূর্ণ Edge AI মডেলিং লাইফসাইকেল এক্সিকিউট করা যাক: PyTorch মডেল র্যাপার ➔ ট্রেসিং কনভার্সন ➔ মডেল কোয়ান্টাইজেশন ➔ ডেস্কটপ ইনফারেন্স ➔ পারফর্ম্যান্স বেঞ্চমার্ক।
📝 স্টেজ ১: PyTorch মডেল র্যাপার স্ক্রিপ্ট তৈরি করা
আপনার বর্তমান ডিরেক্টরিতে resnet18.py তৈরি করুন। এটি ডায়নামিক ট্রেসিং হুক প্রকাশ করে যাতে গ্রাফ বিল্ডার আকার ক্যাপচার করতে পারে:
import torch
import torchvision
def get_model(batch_size: int = 1) -> torch.nn.Module:
model = torchvision.models.resnet18(
weights=torchvision.models.ResNet18_Weights.IMAGENET1K_V1
)
model.eval()
return model
def get_args(batch_size: int = 1) -> tuple[torch.Tensor, ...]:
return (torch.randn(batch_size, 3, 224, 224),)
🔄 ধাপ ২: LiteRT Torch ব্যবহার করে PyTorch মডেলকে LiteRT-তে কনভার্ট করা
স্ট্যান্ডার্ড Float32 .tflite টার্গেট মডেল তৈরি করতে LiteRT Torch কনভার্টার চালু করুন:
# Convert PyTorch source to LiteRT
litert convert resnet18.py --output resnet18
# Verify target was exported
ls -lh resnet18/resnet18.tflite
📉 ৩য় পর্যায়: INT8-এ ওয়েট কোয়ান্টাইজ করা
সাইজ ~৪ গুণ কমাতে ডায়নামিক ও শুধু-ওজন রেসিপি কার্ড প্রয়োগ করুন:
# 1. Dynamic Range Quantization (Dynamic activations + static INT8 weights)
litert quantize resnet18/resnet18.tflite \
--recipe dynamic_wi8_afp32 \
--output resnet18/resnet18_int8_dynamic.tflite
# 2. Weight-Only Quantization (Float32 activations + static INT8 weights)
litert quantize resnet18/resnet18.tflite \
--recipe weight_only_wi8_afp32 \
--output resnet18/resnet18_int8_weight_only.tflite
🚀 ধাপ ৪: লোকাল ডিভাইসে ইনফারেন্স রান করা
পারফর্ম্যান্স ব্লক যাচাই করতে ডামি ইনপুট প্যারামিটার সহ টেস্ট অপারেশন এক্সিকিউট করুন:
# Run original Float32 model inference
litert run resnet18/resnet18.tflite --desktop --cpu
# Run optimized Dynamic INT8 model inference
litert run resnet18/resnet18_int8_dynamic.tflite --cpu --iterations 1
📊 পর্যায় ৫: মডেলের পারফর্ম্যান্সের বেঞ্চমার্ক টেস্ট করা
গড় লেটেন্সি, ইনিশিয়ালাইজেশন খরচ, CPU এক্সিকিউশন থ্রুপুট ও ডায়নামিক অ্যাক্টিভ মেমরি ফুটপ্রিন্ট সহ হাই-প্রিসিশন মেট্রিক পরিমাপ করুন:
# Benchmark original Float32 model
litert benchmark resnet18/resnet18.tflite --desktop --cpu
# Benchmark optimized Dynamic range INT8 model
litert benchmark resnet18/resnet18_int8_dynamic.tflite --desktop --cpu
৩. 🔌 লোকাল এনভায়রনমেন্ট সেট-আপ ও যাচাইকরণ
আপনার ওয়ার্কস্টেশনে (macOS বা Linux) একটি আইসোলেটেড, ক্লিন স্যান্ডবক্স তৈরি করা যাক
🔌 বিকল্প ক: অতি দ্রুত সেট-আপ (uv)
uv ব্যবহার করে কয়েক সেকেন্ডের মধ্যে লাইব্রেরি আইসোলেট করে, এনভায়রনমেন্ট ক্যাশে কনফ্লিক্ট মুছে দেয়।
# Create active workspace sandbox
uv venv --clear --python=3.13 --seed
source .venv/bin/activate
# Install litert-cli from pypi
uv pip install litert-cli-nightly
🐍 বিকল্প খ: স্ট্যান্ডার্ড সেট-আপ (PIP)
uv না থাকলে, স্ট্যান্ডার্ড Python ভার্চুয়াল এনভায়রনমেন্ট কনফিগারেশন ব্যবহার করুন:
# Create active workspace sandbox
python3 -m venv .venv
source .venv/bin/activate
# Install litert-cli from pypi
pip install --upgrade pip setuptools wheel
pip install litert-cli-nightly
🛠️ বিকল্প গ: এডিট করা যায় এমন লোকাল সেট-আপ
আপনি যদি সরাসরি রিপোজিটরি সোর্স ডিরেক্টরি ক্লোনের মধ্যে ডেভেলপ বা টেস্ট করেন:
# Create active workspace sandbox
uv venv --clear --python=3.13 --seed
source .venv/bin/activate
# Install from local directory root
uv pip install -e .
🔍 যাচাইকরণ সেট-আপ করা
আপনার পাথ সঠিকভাবে litert কমান্ড রুট করে কিনা তা যাচাই করুন:
litert --help
💡 সেন্ট্রাল মডেল রেফারেন্স ক্যাটালগ (model-ref)
স্ক্রিপ্ট ও ডেভেলপমেন্ট মজবুত রাখতে, LiteRT CLI একটি কেন্দ্রীভূত মডেল ক্যাটালগ প্রয়োগ করে:
- ফর্ম্যাট: ডাউনলোড বা ইমপোর্ট করা মডেলের জন্য একটি অনন্য নাম (উপনাম) অ্যাসাইন করুন, যেমন
mobilenet। - ভেরিয়েন্ট: অপ্টিমাইজ করা ভেরিয়েন্ট উল্লেখ করতে টার্গেট কোলন ব্যবহার করুন, যেমন
mobilenet:int8বাmobilenet:gpu। - সহজ: সব CLI কমান্ড এই পাথলেস
উপনাম সরাসরি গ্রহণ করে, যা ফ্লাইতে ফিজিক্যাল ফাইল স্টোরেজ অটোমেটিক সমাধান করে!
৪. 📲 ডিভাইস ডেপ্লয়মেন্ট ও প্রোফাইলিং
হাই-প্রিসিশন লোকাল বেঞ্চমার্ক রান করা, আসল USB হার্ডওয়্যার টার্গেটে ডেপ্লয় করা, হার্ডওয়্যার ডেলিগেট প্রয়োগ করা, Ahead-of-Time কম্পাইল করা এবং ক্লাউড বেঞ্চমার্কিংয়ের মাধ্যমে অপ্টিমাইজেশন আরও উন্নত করতে দিন।
📊 স্থানীয় প্রোফাইলিং মেট্রিক
আপনার ডেস্কটপ হোস্টে EfficientNet-B1 এবং প্রোফাইল পারফর্ম্যান্স পরিসংখ্যান ডাউনলোড করুন:
# Download and register model alias in central catalog
litert download litert-community/efficientnet_b1 --file "*.tflite" --output efficientnet
litert import efficientnet/efficientnet_b1.tflite --model-ref efficientnet_b1
# Run high-precision benchmark on desktop CPU
litert benchmark efficientnet_b1 --desktop --cpu
বেঞ্চমার্ক লগে মূল পারফর্ম্যান্স হেডারগুলি লক্ষ্য করুন:
Model initialization: স্ট্রাকচারাল নেটওয়ার্ক বুট করার সময়।Warmup (avg): কম্পাইলেশন ওভারহেড টাইমিং।Inference (avg): প্রসেসিংয়ের সময়।Overall footprint: এক্সিকিউশনের সময় সর্বাধিক RAM ব্যবহার করা হয়েছে।
📲 টার্গেট A: মোবাইল CPU (USB কানেক্ট)
USB ডিবাগিং চালু করা আছে এমন একটি Android ডিভাইস কানেক্ট করুন এবং ডিপ্লয় করুন:
# 1. Confirm device connection
adb devices
# 2. Push and execute model on mobile CPU
litert run efficientnet_b1 --android --cpu
CLI অটোমেটিক মডেলটিকে টার্গেট ডিভাইসে পুশ করে, ইনফারেন্স লুপ এক্সিকিউট করে এবং আউটপুট পাইপ করে দেয়!
🎮 টার্গেট খ: মোবাইল GPU
OpenCL বা WebGPU ব্যবহার করে GPU-তে ডাইনামিকভাবে ভারী ওয়ার্কলোড অফলোড করুন:
# Benchmark model performance on mobile GPU
litert benchmark efficientnet_b1 --android --gpu
# Run inference with GPU acceleration and CPU fallback
litert run efficientnet_b1 --android --accelerator gpu,cpu
⚙️ Target C: JIT Android NPU
আধুনিক চিপসেটে সরাসরি NPU-তে এক্সিকিউশন প্যারামিটার অফলোড করুন:
# Run with on-device JIT NPU acceleration
litert run efficientnet_b1 --android --accelerator npu,cpu
- সতর্কতা: অন-ডিভাইস রানটাইমের মধ্যে ডায়নামিক গ্রাফ তৈরি করার সময় JIT ওয়ার্ম-আপের কারণে ইনিশিয়ালাইজেশনে উল্লেখযোগ্য বিলম্ব হয়।
🚀 টার্গেট D: AOT কম্পাইল করা NPU
রানটাইম JIT ওভারহেড বাইপাস করতে এবং সর্বাধিক অ্যাক্সিলারেশন পেতে অফলাইনে প্রি-কম্পাইল করুন:
# 1. Offline compile for Qualcomm SM8750 NPU (Linux host)
litert compile efficientnet/efficientnet_b1.tflite --target sm8750
# 2. Execute compiled AOT binary with zero JIT warmup latency
litert run efficientnet_b1_Qualcomm_SM8750.tflite --android --npu
☁️ ক্লাউড প্রোফাইলিং (Google AI Edge Portal)
Google Cloud-এর ডিভাইস ফার্মে রিমোট হার্ডওয়্যার প্রোফাইলে টেস্ট পুশ করুন।
# Log in to your Google Cloud project
gcloud auth login
# Push benchmark metrics to Pixel 7 CPU
litert benchmark efficientnet_b1 --gcp --device "pixel 7" --cpu --gcp-project "your-project-id"
# Push benchmark metrics to Snapdragon GPU targets
litert benchmark efficientnet_b1 --gcp --devices "pixel 7, sm-s931u1" --gpu --gcp-project "your-project-id"
৫. 🧠 উন্নত বিষয়: LLM ও স্পিচ রিকগনিশন
লার্জ ল্যাঙ্গুয়েজ মডেল (LLM) ও অটোমেটিক স্পিচ রিকগনিশন (ASR) মডেল কনভার্ট ও রান করানোর মাধ্যমে উন্নত মডেল এক্সপ্লোর করা যাক।
💬 জেনারেটিভ AI (LLM)
Edge LLM-এর মেমরি সীমিত। আমরা Weight-Only INT4/INT8 কোয়ান্টাইজেশন প্রয়োগ করে এই সমস্যার সমাধান করি, Float32-তে এক্সিকিউশন চ্যানেল রাখার সময় ওয়েট কম্প্রেস করি:
# 1. Automated download & conversion from Hugging Face
litert convert Qwen/Qwen1.5-0.5B-Chat --output models/qwen
# 2. Quantize model weights to INT4
litert convert Qwen/Qwen1.5-0.5B-Chat \
--quantize-recipe weight_only_wi4_afp32 \
--output models/qwen_w4
# 3. Generation once
litert lm run models/qwen/model.litertlm --prompt "Introduce San Francisco."
# 4. Interactive chat
litert lm run models/qwen/model.litertlm
🎙️ স্পিচ প্রসেসিং (ASR)
Whisper বা Parakeet-এর মতো ASR মডেলে এনকোডার ও ডিকোডার, দুটি মডিউলই থাকে। আমরা সিগনেচার কী ব্যবহার করে নির্দিষ্ট মডিউলের জন্য বেঞ্চমার্ক করতে পারি:
# 1. Download prepackaged Whisper-Tiny
litert download litert-community/whisper-tiny --file "whisper_tiny_30s_f32.tflite" --output "models/whisper_tiny"
# 2. Profile audio encoding
litert benchmark models/whisper_tiny/whisper_tiny_30s_f32.tflite --android --gpu --signature-key "encode"
# 3. Profile text token decoding loop
litert benchmark models/whisper_tiny/whisper_tiny_30s_f32.tflite --android --cpu --signature-key "decode"
৬. 🤖 এজেন্টিক কোডিংয়ে ব্যবহার করুন
LiteRT CLI হল এজেন্ট-ফ্রেন্ডলি এবং আপনি সরাসরি কোডিং এজেন্টের সাথে এটি ইন্টিগ্রেট করতে পারবেন।
এখানে কিছু উদাহরণ রয়েছে৷ আপনার কোডিং এজেন্টে (যেমন Google Antigravity) LiteRT CLI স্কিল SKILL.md যোগ করুন এবং নিচে দেওয়া প্রম্পটের মতো প্রম্পট ব্যবহার করে দেখুন।
৭. 🚀 অভিনন্দন ও পরবর্তী ধাপ
🎉 অসাধারণ! আপনি LiteRT CLI 101 কোডল্যাব সম্পূর্ণ করেছেন!
এজ ML ডেভেলপমেন্টে দক্ষতা অর্জন করার জন্য আপনার কাছে এখন প্রয়োজনীয় দক্ষতা রয়েছে:
- PyTorch মডেলকে LiteRT মডেলে কনভার্ট করুন।
- INT4/INT8-এ মডেল ওয়েট কোয়ান্টাইজ করুন।
- মোবাইল CPU/GPU/NPU-তে মডেল রান করা।
- NPU-এর জন্য কম্পাইল করুন।
- ডেস্কটপ, মোবাইল ও ক্লাউডে বেঞ্চমার্ক।
- LLM মডেল কনভার্ট ও রান করা।
- এজেন্টিক কোডিংয়ে ব্যবহার করুন।
🔗 রিসোর্স
- LiteRT CLI: https://github.com/google-ai-edge/LiteRT-CLI
- LiteRT: https://ai.google.dev/edge/litert
- উদাহরণ: https://github.com/google-ai-edge/LiteRT-CLI/tree/main/examples