এই ডকুমেন্টে বর্ণনা করা হয়েছে কিভাবে আপনি নিজে নিজে LiterT অ্যান্ড্রয়েড লাইব্রেরি তৈরি করবেন। সাধারণত, আপনার স্থানীয়ভাবে LiterT অ্যান্ড্রয়েড লাইব্রেরি তৈরি করার প্রয়োজন হয় না।
রাতের স্ন্যাপশট ব্যবহার করুন
নাইটলি স্ন্যাপশট ব্যবহার করতে, আপনার রুট গ্র্যাডেল বিল্ড কনফিগারেশনে নিম্নলিখিত রেপো যোগ করুন।
allprojects {
repositories { // should be already there
mavenCentral() // should be already there
maven { // add this repo to use snapshots
name 'ossrh-snapshot'
url 'https://oss.sonatype.org/content/repositories/snapshots'
}
}
}
আপনার build.gradle-এ নির্ভরতাগুলিতে রাতের স্ন্যাপশট যোগ করুন (অথবা প্রয়োজন অনুসারে সম্পাদনা করুন)
...
dependencies {
...
implementation 'org.tensorflow:tensorflow-lite:0.0.0-nightly-SNAPSHOT'
implementation 'com.google.ai.edge.litert:litert-gpu:0.0.0-nightly-SNAPSHOT'
implementation 'com.google.ai.edge.litert:litert-support:0.0.0-nightly-SNAPSHOT'
...
}
...
স্থানীয়ভাবে LiterRT তৈরি করুন
কিছু ক্ষেত্রে, আপনি LiteRT এর একটি স্থানীয় বিল্ড ব্যবহার করতে চাইতে পারেন। উদাহরণস্বরূপ, আপনি হয়তো একটি কাস্টম বাইনারি তৈরি করছেন যাতে TensorFlow থেকে নির্বাচিত ক্রিয়াকলাপ অন্তর্ভুক্ত থাকে, অথবা আপনি LiteRT তে স্থানীয় পরিবর্তন করতে চাইতে পারেন।
ডকার ব্যবহার করে বিল্ড পরিবেশ সেট আপ করুন
- ডকার ফাইলটি ডাউনলোড করুন। ডকার ফাইলটি ডাউনলোড করে আপনি সম্মত হচ্ছেন যে নিম্নলিখিত পরিষেবার শর্তাবলী আপনার ব্যবহারের উপর নির্ভর করে:
"গ্রহণ করুন" এ ক্লিক করে, আপনি এতদ্বারা সম্মত হচ্ছেন যে অ্যান্ড্রয়েড স্টুডিও এবং অ্যান্ড্রয়েড নেটিভ ডেভেলপমেন্ট কিটের সমস্ত ব্যবহার https://developer.android.com/studio/terms এ উপলব্ধ অ্যান্ড্রয়েড সফটওয়্যার ডেভেলপমেন্ট কিট লাইসেন্স চুক্তি দ্বারা নিয়ন্ত্রিত হবে (এই URLটি সময়ে সময়ে Google দ্বারা আপডেট বা পরিবর্তন করা যেতে পারে)।
ফাইলটি ডাউনলোড করার জন্য আপনাকে পরিষেবার শর্তাবলী স্বীকার করতে হবে।- আপনি ঐচ্ছিকভাবে Android SDK অথবা NDK ভার্সন পরিবর্তন করতে পারেন। ডাউনলোড করা ডকার ফাইলটি একটি খালি ফোল্ডারে রাখুন এবং নিম্নলিখিতটি চালিয়ে আপনার ডকার ইমেজ তৈরি করুন:
docker build . -t tflite-builder -f tflite-android.Dockerfile
- আপনার বর্তমান ফোল্ডারটি কন্টেইনারের ভিতরে /host_dir এ মাউন্ট করে ডকার কন্টেইনারটি ইন্টারেক্টিভভাবে শুরু করুন (মনে রাখবেন যে /tensorflow_src হল কন্টেইনারের ভিতরে TensorFlow সংগ্রহস্থল):
docker run -it -v $PWD:/host_dir tflite-builder bash
যদি আপনি উইন্ডোজে PowerShell ব্যবহার করেন, তাহলে "$PWD" কে "pwd" দিয়ে প্রতিস্থাপন করুন।
যদি আপনি হোস্টে টেনসরফ্লো রিপোজিটরি ব্যবহার করতে চান, তাহলে সেই হোস্ট ডিরেক্টরিটি (-v hostDir:/host_dir) মাউন্ট করুন।
- একবার আপনি কন্টেইনারের ভিতরে চলে গেলে, অতিরিক্ত অ্যান্ড্রয়েড টুল এবং লাইব্রেরি ডাউনলোড করার জন্য আপনি নিম্নলিখিতটি চালাতে পারেন (মনে রাখবেন যে আপনাকে লাইসেন্স গ্রহণ করতে হতে পারে):
sdkmanager \
"build-tools;${ANDROID_BUILD_TOOLS_VERSION}" \
"platform-tools" \
"platforms;android-${ANDROID_API_LEVEL}"
এখন আপনার বিল্ড সেটিংস কনফিগার করার জন্য WORKSPACE এবং .bazelrc কনফিগার করুন বিভাগে যাওয়া উচিত।
লাইব্রেরি তৈরি শেষ করার পর, আপনি সেগুলিকে কন্টেইনারের ভিতরে /host_dir-এ কপি করতে পারেন যাতে আপনি হোস্টে সেগুলি অ্যাক্সেস করতে পারেন।
ডকার ছাড়াই বিল্ড পরিবেশ সেট আপ করুন
Bazel এবং Android এর পূর্বশর্ত ইনস্টল করুন
Bazel হল TensorFlow-এর প্রাথমিক বিল্ড সিস্টেম। এটি দিয়ে বিল্ড করতে, আপনার সিস্টেমে এটি এবং Android NDK এবং SDK ইনস্টল থাকা আবশ্যক।
- Bazel বিল্ড সিস্টেমের সর্বশেষ সংস্করণটি ইনস্টল করুন।
- নেটিভ (C/C++) LiterRT কোড তৈরি করতে Android NDK প্রয়োজন। বর্তমান প্রস্তাবিত সংস্করণটি হল 25b, যা এখানে পাওয়া যেতে পারে।
- অ্যান্ড্রয়েড এসডিকে এবং বিল্ড টুলগুলি এখান থেকে পাওয়া যেতে পারে, অথবা বিকল্পভাবে অ্যান্ড্রয়েড স্টুডিওর অংশ হিসেবে পাওয়া যেতে পারে। বিল্ড টুলস API >= 23 হল LiterRT তৈরির জন্য প্রস্তাবিত সংস্করণ।
WORKSPACE এবং .bazelrc কনফিগার করুন
এটি একটি এককালীন কনফিগারেশন ধাপ যা LiteRT লাইব্রেরি তৈরি করতে প্রয়োজন। রুট TensorFlow চেকআউট ডিরেক্টরিতে ./configure স্ক্রিপ্টটি চালান এবং স্ক্রিপ্টটি যখন ./WORKSPACE for Android বিল্ডগুলিকে ইন্টারেক্টিভভাবে কনফিগার করতে বলে তখন "হ্যাঁ" উত্তর দিন। স্ক্রিপ্টটি নিম্নলিখিত পরিবেশ ভেরিয়েবল ব্যবহার করে সেটিংস কনফিগার করার চেষ্টা করবে:
-
ANDROID_SDK_HOME -
ANDROID_SDK_API_LEVEL -
ANDROID_NDK_HOME -
ANDROID_NDK_API_LEVEL
যদি এই ভেরিয়েবলগুলি সেট না করা থাকে, তাহলে স্ক্রিপ্ট প্রম্পটে এগুলি ইন্টারেক্টিভভাবে প্রদান করতে হবে। সফল কনফিগারেশনের ফলে রুট ফোল্ডারের .tf_configure.bazelrc ফাইলে নিম্নলিখিতগুলির মতো এন্ট্রি পাওয়া যাবে:
build --action_env ANDROID_NDK_HOME="/usr/local/android/android-ndk-r25b"
build --action_env ANDROID_NDK_API_LEVEL="21"
build --action_env ANDROID_BUILD_TOOLS_VERSION="30.0.3"
build --action_env ANDROID_SDK_API_LEVEL="30"
build --action_env ANDROID_SDK_HOME="/usr/local/android/android-sdk-linux"
তৈরি এবং ইনস্টল করুন
একবার Bazel সঠিকভাবে কনফিগার হয়ে গেলে, আপনি রুট চেকআউট ডিরেক্টরি থেকে LiterRT AAR তৈরি করতে পারেন নিম্নরূপ:
bazel build -c opt --cxxopt=--std=c++17 --config=android_arm64 \
--fat_apk_cpu=x86,x86_64,arm64-v8a,armeabi-v7a \
--define=android_dexmerger_tool=d8_dexmerger \
--define=android_incremental_dexing_tool=d8_dexbuilder \
//tensorflow/lite/java:tensorflow-lite
এটি bazel-bin/tensorflow/lite/java/ তে একটি AAR ফাইল তৈরি করবে। মনে রাখবেন যে এটি বেশ কয়েকটি ভিন্ন আর্কিটেকচার সহ একটি "ফ্যাট" AAR তৈরি করে; যদি আপনার সবগুলির প্রয়োজন না হয়, তাহলে আপনার স্থাপনার পরিবেশের জন্য উপযুক্ত সাবসেটটি ব্যবহার করুন।
আপনি শুধুমাত্র কয়েকটি মডেলকে লক্ষ্য করে ছোট AAR ফাইল তৈরি করতে পারেন, যেমন:
bash tensorflow/lite/tools/build_aar.sh \
--input_models=model1,model2 \
--target_archs=x86,x86_64,arm64-v8a,armeabi-v7a
উপরের স্ক্রিপ্টটি tensorflow-lite.aar ফাইল তৈরি করবে এবং ঐচ্ছিকভাবে tensorflow-lite-select-tf-ops.aar ফাইল তৈরি করবে যদি কোনও মডেল Tensorflow ops ব্যবহার করে। আরও বিস্তারিত জানার জন্য, অনুগ্রহ করে Reduce LiterRT বাইনারি আকার বিভাগটি দেখুন।
প্রকল্পে সরাসরি AAR যোগ করুন
আপনার প্রোজেক্টের libs নামক একটি ডিরেক্টরিতে tensorflow-lite.aar ফাইলটি সরান। নতুন ডিরেক্টরিটি উল্লেখ করতে আপনার অ্যাপের build.gradle ফাইলটি পরিবর্তন করুন এবং বিদ্যমান LiteRT নির্ভরতাটিকে নতুন স্থানীয় লাইব্রেরি দিয়ে প্রতিস্থাপন করুন, যেমন:
allprojects {
repositories {
mavenCentral()
maven { // Only for snapshot artifacts
name 'ossrh-snapshot'
url 'https://oss.sonatype.org/content/repositories/snapshots'
}
flatDir {
dirs 'libs'
}
}
}
dependencies {
compile(name:'tensorflow-lite', ext:'aar')
}
স্থানীয় Maven সংগ্রহস্থলে AAR ইনস্টল করুন
আপনার রুট চেকআউট ডিরেক্টরি থেকে নিম্নলিখিত কমান্ডটি কার্যকর করুন:
mvn install:install-file \
-Dfile=bazel-bin/tensorflow/lite/java/tensorflow-lite.aar \
-DgroupId=org.tensorflow \
-DartifactId=tensorflow-lite -Dversion=0.1.100 -Dpackaging=aar
আপনার অ্যাপের build.gradle এ, নিশ্চিত করুন যে আপনার mavenLocal() নির্ভরতা আছে এবং স্ট্যান্ডার্ড LiterRT নির্ভরতাটি এমন একটি দিয়ে প্রতিস্থাপন করুন যা নির্বাচিত TensorFlow অপশনের জন্য সমর্থন করে:
allprojects {
repositories {
mavenCentral()
maven { // Only for snapshot artifacts
name 'ossrh-snapshot'
url 'https://oss.sonatype.org/content/repositories/snapshots'
}
mavenLocal()
}
}
dependencies {
implementation 'org.tensorflow:tensorflow-lite:0.1.100'
}
মনে রাখবেন যে এখানে 0.1.100 সংস্করণটি সম্পূর্ণরূপে পরীক্ষা/উন্নয়নের জন্য। স্থানীয় AAR ইনস্টল করার মাধ্যমে, আপনি আপনার অ্যাপ কোডে স্ট্যান্ডার্ড LiterRT জাভা ইনফারেন্স API গুলি ব্যবহার করতে পারেন।