LiteRT CLI 101: আপনার এজ এআই ওয়ার্কফ্লোকে সুবিন্যস্ত করুন

১. 🏁 ভূমিকা ও সিএলআই সংক্ষিপ্ত বিবরণ

LiteRT CLI 101 হ্যান্ডস-অন কোডল্যাবে আপনাকে স্বাগতম! এই গাইডটি আপনাকে শূন্য থেকে এনভায়রনমেন্ট সেটআপ করা থেকে শুরু করে অপ্টিমাইজড এজ ইন্টেলিজেন্স ডেপ্লয় করা পর্যন্ত ধাপে ধাপে নিয়ে যাওয়ার জন্য ডিজাইন করা হয়েছে।

🌟 পটভূমি

এজ এআই-এর জন্য জটিল নিউরাল মডেলগুলোকে সরাসরি মোবাইল ফোন, পরিধানযোগ্য ডিভাইস এবং এমবেডেড হার্ডওয়্যারে নিয়ে আসা প্রয়োজন।

  • LiteRT (পূর্বে TensorFlow Lite / TFLite নামে পরিচিত) হলো গুগলের একটি অন-ডিভাইস ফ্রেমওয়ার্ক, যা দক্ষ রূপান্তর, রানটাইম এবং অপ্টিমাইজেশনের মাধ্যমে এজ প্ল্যাটফর্মে উচ্চ-পারফরম্যান্সের এমএল ও জেনএআই স্থাপন করে।
  • LiteRT CLI, Google AI Edge স্ট্যাকগুলিকে একটি স্বতন্ত্র শেল কমান্ড ( litert )-এর মধ্যে একীভূত করে, যা বিভিন্ন প্ল্যাটফর্ম (ডেস্কটপ, মোবাইল বা ক্লাউড) জুড়ে নানা হার্ডওয়্যারে (CPU / GPU / NPU) LiteRT (TFLite) মডেলের রূপান্তর, কোয়ান্টাইজিং, কম্পাইলিং, রান করা, বেঞ্চমার্কিং এবং ভিজ্যুয়ালাইজেশন সহ LiteRT-সম্পর্কিত ডেভেলপমেন্ট ওয়ার্কফ্লোকে সুবিন্যস্ত করে।

২. 🔄 মৌলিক কার্যপ্রবাহ: রূপান্তর, পরিমাণ নির্ধারণ ও চালনা

এই অংশে, চলুন LiteRT CLI ব্যবহার করে একটি সম্পূর্ণ এজ এআই মডেলিং লাইফসাইকেল সম্পাদন করি: পাইটর্চ মডেল র‍্যাপার ➔ ট্রেসিং রূপান্তর ➔ মডেল কোয়ান্টাইজেশন ➔ ডেস্কটপ ইনফারেন্স ➔ পারফরম্যান্স বেঞ্চমার্ক।

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

📝 পর্যায় ১: একটি পাইটর্চ মডেল র‍্যাপার স্ক্রিপ্ট প্রস্তুত করুন

আপনার বর্তমান ডিরেক্টরিতে 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),)

🔄 পর্যায় 2: LiteRT টর্চ ব্যবহার করে একটি 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

📊 পর্যায় ৫: মডেলের কর্মক্ষমতা বেঞ্চমার্ক করা

গড় লেটেন্সি, ইনিশিয়ালাইজেশন কস্ট, সিপিইউ এক্সিকিউশন থ্রুপুট এবং ডাইনামিক অ্যাক্টিভ মেমরি ফুটপ্রিন্ট সহ উচ্চ-নির্ভুল মেট্রিকগুলো পরিমাপ করুন:

# 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) একটি বিচ্ছিন্ন ও পরিষ্কার স্যান্ডবক্স তৈরি করি।

🔌 বিকল্প A: অতি দ্রুত সেটআপ (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

🐍 বিকল্প B: সাধারণ সেটআপ (পিআইপি)

যদি uv উপস্থিত না থাকে, তাহলে স্ট্যান্ডার্ড পাইথন ভার্চুয়াল এনভায়রনমেন্ট কনফিগারেশন ব্যবহার করুন:

# 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

🛠️ বিকল্প C: সম্পাদনাযোগ্য স্থানীয় সেটআপ

আপনি যদি সরাসরি রিপোজিটরি সোর্স ডিরেক্টরির ভিতরে ডেভেলপ বা টেস্টিং করেন, তাহলে ক্লোন করুন:

# 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 কমান্ড এই পাথলেস গ্রহণ করে সরাসরি অ্যালিয়াস তৈরি করে, তাৎক্ষণিকভাবে ফিজিক্যাল ফাইল স্টোরেজ স্বয়ংক্রিয়ভাবে সমাধান করে!

৪. 📲 ডিভাইস স্থাপন ও প্রোফাইলিং

আসুন উচ্চ-নির্ভুল স্থানীয় বেঞ্চমার্ক চালানো, বাস্তব ইউএসবি হার্ডওয়্যার টার্গেটে ডেপ্লয় করা, হার্ডওয়্যার ডেলিগেট প্রয়োগ করা, অ্যাহেড-অফ-টাইম কম্পাইল করা এবং ক্লাউড বেঞ্চমার্কিংয়ের মাধ্যমে অপ্টিমাইজেশনকে আরও এগিয়ে নিয়ে যাই।

লক্ষ্য স্থাপন এবং ত্বরণ বিকল্প

📊 স্থানীয় প্রোফাইলিং মেট্রিক্স

আপনার ডেস্কটপ হোস্টে 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 : কার্য সম্পাদনের সময় ব্যবহৃত সর্বোচ্চ র‍্যাম।

📲 টার্গেট এ: মোবাইল সিপিইউ (ইউএসবি সংযোগ)

ইউএসবি ডিবাগিং সক্ষম করা একটি অ্যান্ড্রয়েড ডিভাইস সংযুক্ত করুন এবং স্থাপন করুন:

# 1. Confirm device connection
adb devices

# 2. Push and execute model on mobile CPU
litert run efficientnet_b1 --android --cpu

CLI স্বয়ংক্রিয়ভাবে মডেলটিকে টার্গেট ডিভাইসে পাঠায়, ইনফারেন্স লুপটি চালায় এবং আউটপুটগুলো ফেরত পাঠায়!

🎮 লক্ষ্য বি: মোবাইল জিপিইউ

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

⚙️ টার্গেট সি: জেআইটি অ্যান্ড্রয়েড এনপিইউ

আধুনিক চিপসেটগুলিতে এক্সিকিউশন প্যারামিটারগুলি সরাসরি এনপিইউ-তে অফলোড করুন:

# 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

☁️ ক্লাউড প্রোফাইলিং (গুগল এআই এজ পোর্টাল)

গুগল ক্লাউডের ডিভাইস ফার্মে থাকা রিমোট হার্ডওয়্যার প্রোফাইলগুলিতে টেস্টগুলো পুশ করুন।

# 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) এবং অটোমেটিক স্পিচ রিকগনিশন (ASR) মডেলগুলোকে রূপান্তর করে ও চালিয়ে উন্নত মডেলগুলো অন্বেষণ করি।

💬 জেনারেটিভ এআই (এলএলএম)

এজ এলএলএম (Edge LLM) মেমরি-বাউন্ডেড। আমরা ওয়েট-অনলি 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 মডেলগুলিতে এনকোডার এবং ডিকোডার উভয় মডিউলই থাকে। আমরা Signature Keys ব্যবহার করে নির্দিষ্ট মডিউলগুলির বেঞ্চমার্ক করতে পারি:

# 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 এজেন্ট-বান্ধব , এবং আপনি এটিকে সরাসরি কোডিং এজেন্টের সাথে একীভূত করতে পারেন।

এখানে কিছু উদাহরণ দেওয়া হলো। আপনার কোডিং এজেন্টে (যেমন গুগল অ্যান্টিগ্র্যাভিটি ) LiteRT CLI স্কিল SKILL.md যোগ করুন এবং নীচের মতো প্রম্পটগুলি চেষ্টা করুন।

৭. 🚀 অভিনন্দন ও পরবর্তী পদক্ষেপ

🎉 চমৎকার! আপনি LiteRT CLI 101 কোডল্যাবটি সম্পন্ন করেছেন!

এজ এমএল ডেভেলপমেন্টে দক্ষতা অর্জনের জন্য প্রয়োজনীয় যোগ্যতা এখন আপনার রয়েছে:

  • PyTorch মডেলগুলোকে LiteRT মডেলে রূপান্তর করুন।
  • মডেলের ওয়েটগুলোকে INT4/INT8-এ কোয়ান্টাইজ করুন।
  • মোবাইল সিপিইউ/জিপিইউ/এনপিইউ-তে মডেলগুলো চালান।
  • 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