LiteRT CLI 101: আপনার Edge AI ওয়ার্কফ্লো স্ট্রিমলাইন করুন

১. 🏁 ভূমিকা ও 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 মডেল র‍্যাপার ➔ ট্রেসিং কনভার্সন ➔ মডেল কোয়ান্টাইজেশন ➔ ডেস্কটপ ইনফারেন্স ➔ পারফর্ম্যান্স বেঞ্চমার্ক।

LiteRT CLI 101 ওয়ার্কফ্লো

📝 স্টেজ ১: 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