LiterRT-LM হল একটি ক্রস-প্ল্যাটফর্ম লাইব্রেরি যা মোবাইল ফোন থেকে শুরু করে এমবেডেড সিস্টেম পর্যন্ত বিস্তৃত ডিভাইসে দক্ষতার সাথে ভাষা মডেল পাইপলাইন চালানোর জন্য ডিজাইন করা হয়েছে। এটি ডেভেলপারদের অত্যাধুনিক ভাষা মডেল ওয়ার্কফ্লো তৈরি এবং স্থাপন করার জন্য সরঞ্জাম সরবরাহ করে, এখন নিরবচ্ছিন্ন NPU ইন্টিগ্রেশন সহ।
CPU এবং GPU তে LLM চালান
ক্রস-প্ল্যাটফর্ম ডেভেলপমেন্ট এবং CPU/GPU হার্ডওয়্যার অ্যাক্সিলারেশন সম্পর্কে বিস্তারিত নির্দেশাবলীর জন্য LiteRT-LM GitHub রেপো দেখুন।
NPU তে LLM চালান
নিউরাল প্রসেসিং ইউনিট (NPU) গভীর শিক্ষার কাজের চাপের জন্য অপ্টিমাইজ করা বিশেষ হার্ডওয়্যার ব্লক অফার করে। এগুলি ক্রমবর্ধমানভাবে আধুনিক সিস্টেম অন আ চিপ (SoCs) তে পাওয়া যাচ্ছে, বিশেষ করে মোবাইল ডিভাইসে। তাদের উচ্চ-কার্যক্ষমতা এগুলিকে LLM ইনফারেন্স চালানোর জন্য উপযুক্ত করে তোলে।
এনপিইউ বিক্রেতারা
LiteRT-LM নিম্নলিখিত বিক্রেতাদের সাথে NPU ত্বরণ ব্যবহার করে LLM চালানো সমর্থন করে। আপনি কোন বিক্রেতা চেষ্টা করতে চান তার উপর নির্ভর করে নির্দেশাবলী নির্বাচন করুন:
দ্রুত শুরু
শুরু করার জন্য, প্রথমে পরিবেশ এবং সংগ্রহস্থল সেট আপ করার জন্য পূর্বশর্ত নির্দেশাবলী অনুসরণ করুন।
এছাড়াও, আপনার অ্যান্ড্রয়েড ডিভাইসের সাথে ইন্টারঅ্যাক্ট করতে সক্ষম হতে, নিশ্চিত করুন যে আপনি সঠিকভাবে অ্যান্ড্রয়েড ডিবাগ ব্রিজ ইনস্টল করেছেন এবং একটি সংযুক্ত ডিভাইস আছে যা adb ব্যবহার করে অ্যাক্সেস করা যেতে পারে।
আরও বিস্তারিত নির্দেশাবলীর জন্য, LiteRT-LM সংগ্রহস্থলের Quick Start বিভাগটি দেখুন এবং litert_lm_main কমান্ড লাইন ডেমো সম্পর্কে আরও তথ্য খুঁজুন।
কোয়ালকম এআই ইঞ্জিন ডাইরেক্ট
Qualcomm NPU তে LLM চালানোর ধাপগুলি নিম্নরূপ:
ধাপ ১:
LiterRT-LM রানটাইমটি .litertlm মডেলটি ডাউনলোড করুন.litertlm ফর্ম্যাটের মডেলগুলির সাথে কাজ করার জন্য ডিজাইন করা হয়েছে। আপনি নিম্নলিখিত টেবিলে সামঞ্জস্যপূর্ণ মডেলগুলি খুঁজে পেতে এবং ডাউনলোড করতে পারেন।
| মডেল | SoC সম্পর্কে | পরিমাণ নির্ধারণ | প্রসঙ্গ আকার | মডেলের আকার (এমবি) | ডাউনলোড লিংক |
|---|---|---|---|---|---|
| জেমা৩-১বি | এসএম৮৭৫০ | প্রতি চ্যানেলে ৪-বিট | ১২৮০ | ৬৫৮ | ডাউনলোড করুন |
| জেমা৩-১বি | এসএম৮৬৫০ | প্রতি চ্যানেলে ৪-বিট | ১২৮০ | ৬৫৮ | ডাউনলোড করুন |
| জেমা৩-১বি | এসএম৮৫৫০ | প্রতি চ্যানেলে ৪-বিট | ১২৮০ | ৬৫৭ | ডাউনলোড করুন |
আপনার SoC এর সাথে সামঞ্জস্যপূর্ণ মডেলটি ডাউনলোড করতে হবে। নীচে একটি উদাহরণ কমান্ড দেওয়া হল যা আপনাকে Hugging Face লিঙ্ক পেতে সাহায্য করবে যা আপনার ফোনের SoC এর জন্য সঠিক মডেলটি ডাউনলোড করতে পারবে (মনে রাখবেন যে ফাইলটি ডাউনলোড করার অনুমতি পেতে আপনাকে লগইন করতে হবে এবং ফর্মটি স্বীকার করতে হবে)। আপনার নিশ্চিত করা উচিত যে adb ব্যবহার করে অ্যাক্সেস করা যেতে পারে এমন একটি সংযুক্ত ডিভাইস আছে।
SOC_MODEL=$(adb shell getprop ro.soc.model | tr '[:upper:]' '[:lower:]')
echo "https://huggingface.co/litert-community/Gemma3-1B-IT/blob/main/Gemma3-1B-IT_q4_ekv1280_${SOC_MODEL}.litertlm"
$SOC_MODEL সাপোর্ট টেবিলে তালিকাভুক্ত আছে কিনা তা যাচাই করুন। জেনারেট করা লিঙ্কটি অসমর্থিত মডেলগুলির জন্য কাজ করবে না। NPU-এর জন্য নতুন সাপোর্ট নিয়মিত যোগ করা হচ্ছে তাই আপনার ডিভাইসটি সাপোর্টেড কিনা তা দেখতে পরে আবার চেক করুন।
ধাপ ২: QAIRT লাইব্রেরিগুলি ডাউনলোড এবং এক্সট্রাক্ট করুন
Qualcomm NPU ব্যবহার করে মডেলটি চালানোর জন্য, ডিভাইসে সংযুক্ত রানটাইম লাইব্রেরি প্রয়োজন। লিঙ্ক থেকে QAIRT SDK ডাউনলোড করে ফাইলটি এক্সট্র্যাক্ট করা যেতে পারে। QAIRT_ROOT ভেরিয়েবলটি সেট করুন (পরবর্তী ধাপগুলিতে এটি ব্যবহার করা হবে) আনজিপ করা ফোল্ডারে নির্দেশ করুন যেখানে সংস্করণ নম্বর রয়েছে, উদাহরণস্বরূপ:
unzip <your_file.zip> -d ~/
QAIRT_ROOT=~/qairt/2.42.0.251225
ধাপ ৩: LiterRT-LM রানটাইম / লাইব্রেরি তৈরি করুন
অ্যান্ড্রয়েডের জন্য বাইনারি তৈরি করতে, https://developer.android.com/ndk/downloads#stable-downloads থেকে NDK r28b বা তার পরবর্তী সংস্করণ ইনস্টল করতে হবে। নির্দিষ্ট পদক্ষেপগুলি হল:
- https://developer.android.com/ndk/downloads#stable-downloads থেকে
zipফাইলটি ডাউনলোড করুন। -
zipফাইলটি আপনার পছন্দের স্থানে এক্সট্র্যাক্ট করুন (যেমন/path/to/AndroidNDK/) -
ANDROID_NDK_HOMENDK ডিরেক্টরিতে নির্দেশ করুন। এটি এরকম কিছু হওয়া উচিত:
export ANDROID_NDK_HOME=/path/to/AndroidNDK/
টিপস: নিশ্চিত করুন যে আপনার ANDROID_NDK_HOME সেই ডিরেক্টরির দিকে নির্দেশ করে যেখানে README.md আছে।
সেট আপের সাথে, litert_lm_main বাইনারি তৈরি করার চেষ্টা করুন:
bazel build --config=android_arm64 //runtime/engine:litert_lm_main
অতিরিক্তভাবে, LiteRT-LM রানটাইম NPU-এর সাথে ইন্টারঅ্যাক্ট করার জন্য আমাদের ডিসপ্যাচ API লাইব্রেরি তৈরি করা উচিত:
bazel build --config=android_arm64 \
@litert//litert/vendors/qualcomm/dispatch:dispatch_api_so
macOS-এ বিকাশ করুন
Xcode কমান্ড লাইন টুলগুলির মধ্যে রয়েছে clang। আগে ইনস্টল না করা থাকলে xcode-select --install চালান।
অ্যান্ড্রয়েডের জন্য বাইনারি তৈরি করতে, https://developer.android.com/ndk/downloads#stable-downloads থেকে NDK r28b বা তার পরবর্তী সংস্করণ ইনস্টল করতে হবে। নির্দিষ্ট পদক্ষেপগুলি হল:
- https://developer.android.com/ndk/downloads#stable-downloads থেকে
.dmgফাইলটি ডাউনলোড করুন। -
.dmgফাইলটি খুলুন এবংAndroidNDK*ফাইলটি আপনার পছন্দের স্থানে সরান (যেমন/path/to/AndroidNDK/) -
ANDROID_NDK_HOMENDK ডিরেক্টরিতে নির্দেশ করুন। এটি এরকম কিছু হওয়া উচিত:
export ANDROID_NDK_HOME=/path/to/AndroidNDK/AndroidNDK*.app/Contents/NDK/
টিপস: নিশ্চিত করুন যে আপনার ANDROID_NDK_HOME সেই ডিরেক্টরির দিকে নির্দেশ করে যেখানে README.md আছে।
সেট আপের সাথে, litert_lm_main বাইনারি তৈরি করার চেষ্টা করুন:
bazel build --config=android_arm64 //runtime/engine:litert_lm_main
অতিরিক্তভাবে, LiteRT-LM রানটাইম NPU-এর সাথে ইন্টারঅ্যাক্ট করার জন্য আমাদের ডিসপ্যাচ API লাইব্রেরি তৈরি করা উচিত:
bazel build --config=android_arm64 \
@litert//litert/vendors/qualcomm/dispatch:dispatch_api_so
ধাপ ৪: ডিভাইসে মডেলটি চালান
বাইনারিটি সফলভাবে তৈরি হওয়ার পর, আমরা এখন ডিভাইসে মডেলটি চালানোর চেষ্টা করতে পারি। নিশ্চিত করুন যে আপনার DEVICE_FOLDER এ লেখার অ্যাক্সেস আছে:
আপনার অ্যান্ড্রয়েড ডিভাইসে বাইনারি চালানোর জন্য, আমাদের কয়েকটি সম্পদ / বাইনারি পুশ করতে হবে। প্রথমে আপনার DEVICE_FOLDER সেট করুন, নিশ্চিত করুন যে আপনার এতে লেখার অ্যাক্সেস আছে (সাধারণত আপনি /data/local/tmp/ অধীনে জিনিসগুলি রাখতে পারেন):
export DEVICE_FOLDER=/data/local/tmp/
adb shell mkdir -p $DEVICE_FOLDER
export MODEL_PATH=<path to your downloaded .litertlm >
.litertlm ফাইলটি পুশ করুন। পরামর্শ: আপনাকে কেবল একবারই ঐ সম্পদগুলি পুশ করতে হবে।
adb push $MODEL_PATH $DEVICE_FOLDER/model.litertlm
QAIRT লাইব্রেরিগুলি পুশ করুন। আপনি এগুলি ধাপ 2 এর আনজিপ করা ফোল্ডারে খুঁজে পেতে পারেন $QAIRT_ROOT/lib/aarch64-android/ । মনে রাখবেন যে QAIRT_ROOT সংস্করণ নম্বর থাকা উচিত, যেমন 2.42.0.251225 ।
adb push $QAIRT_ROOT/lib/aarch64-android/libQnnHtp*Stub.so $DEVICE_FOLDER
adb push $QAIRT_ROOT/lib/aarch64-android/libQnnHtp.so $DEVICE_FOLDER
adb push $QAIRT_ROOT/lib/aarch64-android/libQnnSystem.so $DEVICE_FOLDER
adb push $QAIRT_ROOT/lib/aarch64-android/libQnnHtpPrepare.so $DEVICE_FOLDER
adb push $QAIRT_ROOT/lib/hexagon-*/unsigned/libQnnHtp*Skel.so $DEVICE_FOLDER
ধাপ ৩-এ সংকলিত ডিসপ্যাচ API এবং প্রধান বাইনারি পুশ করুন।
adb push bazel-bin/external/litert/litert/vendors/qualcomm/*/*.so \
$DEVICE_FOLDER
adb push prebuilt/android_arm64/*.so $DEVICE_FOLDER
adb push bazel-bin/runtime/engine/litert_lm_main $DEVICE_FOLDER
এখন, আপনি বাইনারিটি কার্যকর করতে পারেন।
adb shell LD_LIBRARY_PATH=$DEVICE_FOLDER ADSP_LIBRARY_PATH=$DEVICE_FOLDER \
$DEVICE_FOLDER/litert_lm_main \
--backend=npu \
--model_path=$DEVICE_FOLDER/model.litertlm
মিডিয়াটেক নিউরোপাইলট
মিডিয়াটেক এনপিইউতে এলএলএম চালানোর ধাপগুলি নিম্নরূপ:
ধাপ ১:
LiterRT-LM রানটাইমটি .litertlm মডেলটি ডাউনলোড করুন.litertlm ফর্ম্যাটের মডেলগুলির সাথে কাজ করার জন্য ডিজাইন করা হয়েছে। আপনি নিম্নলিখিত টেবিলে সামঞ্জস্যপূর্ণ মডেলগুলি খুঁজে পেতে এবং ডাউনলোড করতে পারেন।
| মডেল | SoC সম্পর্কে | পরিমাণ নির্ধারণ | প্রসঙ্গ আকার | মডেলের আকার (এমবি) | ডাউনলোড লিংক |
|---|---|---|---|---|---|
| জেমা৩-১বি | MT6989 সম্পর্কে | প্রতি চ্যানেলে ৪-বিট | ১২৮০ | ৯৮৫ | ডাউনলোড করুন |
| জেমা৩-১বি | MT6991 সম্পর্কে | প্রতি চ্যানেলে ৪-বিট | ১২৮০ | ৯৮৬ | ডাউনলোড করুন |
আপনার SoC এর সাথে সামঞ্জস্যপূর্ণ মডেলটি ডাউনলোড করতে হবে। নীচে একটি উদাহরণ কমান্ড দেওয়া হল যা আপনাকে Hugging Face লিঙ্ক পেতে সাহায্য করবে যা আপনার ফোনের SoC এর জন্য সঠিক মডেলটি ডাউনলোড করতে পারবে (মনে রাখবেন যে ফাইলটি ডাউনলোড করার অনুমতি পেতে আপনাকে লগইন করতে হবে এবং ফর্মটি স্বীকার করতে হবে)। আপনার নিশ্চিত করা উচিত যে adb ব্যবহার করে অ্যাক্সেস করা যেতে পারে এমন একটি সংযুক্ত ডিভাইস আছে।
SOC_MODEL=$(adb shell getprop ro.soc.model | tr '[:upper:]' '[:lower:]')
echo "https://huggingface.co/litert-community/Gemma3-1B-IT/blob/main/Gemma3-1B-IT_q4_ekv1280_${SOC_MODEL}.litertlm"
$SOC_MODEL সাপোর্ট টেবিলে তালিকাভুক্ত আছে কিনা তা যাচাই করুন। জেনারেট করা লিঙ্কটি অসমর্থিত মডেলগুলির জন্য কাজ করবে না। NPU-এর জন্য নতুন সাপোর্ট নিয়মিত যোগ করা হচ্ছে তাই আপনার ডিভাইসটি সাপোর্টেড কিনা তা দেখতে পরে আবার চেক করুন।
ধাপ ২: LiterRT-LM রানটাইম / লাইব্রেরি তৈরি করুন
অ্যান্ড্রয়েডের জন্য বাইনারি তৈরি করতে, https://developer.android.com/ndk/downloads#stable-downloads থেকে NDK r28b বা তার পরবর্তী সংস্করণ ইনস্টল করতে হবে। নির্দিষ্ট পদক্ষেপগুলি হল:
- https://developer.android.com/ndk/downloads#stable-downloads থেকে
zipফাইলটি ডাউনলোড করুন। -
zipফাইলটি আপনার পছন্দের স্থানে এক্সট্র্যাক্ট করুন (যেমন/path/to/AndroidNDK/) -
ANDROID_NDK_HOMENDK ডিরেক্টরিতে নির্দেশ করুন। এটি এরকম কিছু হওয়া উচিত:
export ANDROID_NDK_HOME=/path/to/AndroidNDK/
টিপস: নিশ্চিত করুন যে আপনার ANDROID_NDK_HOME সেই ডিরেক্টরির দিকে নির্দেশ করে যেখানে README.md আছে।
সেট আপের সাথে, litert_lm_main বাইনারি তৈরি করার চেষ্টা করুন:
bazel build --config=android_arm64 //runtime/engine:litert_lm_main
অতিরিক্তভাবে, LiteRT-LM রানটাইম NPU-এর সাথে ইন্টারঅ্যাক্ট করার জন্য আমাদের ডিসপ্যাচ API লাইব্রেরি তৈরি করা উচিত:
bazel build --config=android_arm64 \
@litert//litert/vendors/mediatek/dispatch:dispatch_api_so
macOS-এ বিকাশ করুন
Xcode কমান্ড লাইন টুলগুলির মধ্যে রয়েছে clang। আগে ইনস্টল না করা থাকলে xcode-select --install চালান।
অ্যান্ড্রয়েডের জন্য বাইনারি তৈরি করতে, https://developer.android.com/ndk/downloads#stable-downloads থেকে NDK r28b বা তার পরবর্তী সংস্করণ ইনস্টল করতে হবে। নির্দিষ্ট পদক্ষেপগুলি হল:
- https://developer.android.com/ndk/downloads#stable-downloads থেকে
.dmgফাইলটি ডাউনলোড করুন। -
.dmgফাইলটি খুলুন এবংAndroidNDK*ফাইলটি আপনার পছন্দের স্থানে সরান (যেমন/path/to/AndroidNDK/) -
ANDROID_NDK_HOMENDK ডিরেক্টরিতে নির্দেশ করুন। এটি এরকম কিছু হওয়া উচিত:
export ANDROID_NDK_HOME=/path/to/AndroidNDK/AndroidNDK*.app/Contents/NDK/
টিপস: নিশ্চিত করুন যে আপনার ANDROID_NDK_HOME সেই ডিরেক্টরির দিকে নির্দেশ করে যেখানে README.md আছে।
সেট আপের সাথে, litert_lm_main বাইনারি তৈরি করার চেষ্টা করুন:
bazel build --config=android_arm64 //runtime/engine:litert_lm_main
অতিরিক্তভাবে, LiteRT-LM রানটাইম NPU-এর সাথে ইন্টারঅ্যাক্ট করার জন্য আমাদের ডিসপ্যাচ API লাইব্রেরি তৈরি করা উচিত:
bazel build --config=android_arm64 \
@litert//litert/vendors/mediatek/dispatch:dispatch_api_so
ধাপ ৩: ডিভাইসে মডেলটি চালান
বাইনারিটি সফলভাবে তৈরি হওয়ার পর, আমরা এখন ডিভাইসে মডেলটি চালানোর চেষ্টা করতে পারি। নিশ্চিত করুন যে আপনার DEVICE_FOLDER এ লেখার অ্যাক্সেস আছে:
আপনার অ্যান্ড্রয়েড ডিভাইসে বাইনারি চালানোর জন্য, আমাদের কয়েকটি সম্পদ / বাইনারি পুশ করতে হবে। প্রথমে আপনার DEVICE_FOLDER সেট করুন, নিশ্চিত করুন যে আপনার এতে লেখার অ্যাক্সেস আছে (সাধারণত আপনি /data/local/tmp/ অধীনে জিনিসগুলি রাখতে পারেন):
export DEVICE_FOLDER=/data/local/tmp/
adb shell mkdir -p $DEVICE_FOLDER
export MODEL_PATH=<path to your downloaded .litertlm >
.litertlm ফাইলটি পুশ করুন। পরামর্শ: আপনাকে কেবল একবারই ঐ সম্পদগুলি পুশ করতে হবে।
adb push $MODEL_PATH $DEVICE_FOLDER/model.litertlm
ধাপ ২-এ সংকলিত ডিসপ্যাচ API এবং প্রধান বাইনারি পুশ করুন।
adb push bazel-bin/external/litert/litert/vendors/mediatek/*/*.so \
$DEVICE_FOLDER
adb push prebuilt/android_arm64/*.so $DEVICE_FOLDER
adb push bazel-bin/runtime/engine/litert_lm_main $DEVICE_FOLDER
এখন, আপনি বাইনারিটি কার্যকর করতে পারেন।
adb shell LD_LIBRARY_PATH=$DEVICE_FOLDER \
$DEVICE_FOLDER/litert_lm_main \
--backend=npu \
--model_path=$DEVICE_FOLDER/model.litertlm