LiterRT কম্পাইলড মডেল API কোটলিনে উপলব্ধ, যা অ্যান্ড্রয়েড ডেভেলপারদের উচ্চ-স্তরের API-এর সাথে একটি নিরবচ্ছিন্ন, অ্যাক্সিলারেটর-প্রথম অভিজ্ঞতা প্রদান করে।
কোটলিনে LiterRT অ্যাপ্লিকেশনের উদাহরণের জন্য, কোটলিনের সাথে চিত্র বিভাজন ডেমো দেখুন।
শুরু করুন
আপনার অ্যান্ড্রয়েড অ্যাপ্লিকেশনে LiterRT কম্পাইলড মডেল API যোগ করতে নিম্নলিখিত ধাপগুলি অনুসরণ করুন।
Maven প্যাকেজ যোগ করুন
আপনার অ্যাপ্লিকেশনে কম্পাইলড মডেল এপিআই-এর সাথে LiterRT নির্ভরতা যোগ করুন:
dependencies {
...
implementation `com.google.ai.edge.litert:litert:2.0.0-alpha`
}
কম্পাইল করা মডেল তৈরি করুন
CompiledModel API ব্যবহার করে, একটি মডেল এবং আপনার পছন্দের হার্ডওয়্যার অ্যাক্সিলারেশন দিয়ে রানটাইম শুরু করুন:
val model =
CompiledModel.create(
context.assets,
"mymodel.tflite",
CompiledModel.Options(Accelerator.CPU),
env,
)
ইনপুট এবং আউটপুট বাফার তৈরি করুন
মডেলটিতে অনুমানের জন্য যে ইনপুট ডেটা ফিড করবেন এবং ইনফারেন্স চালানোর পরে মডেলটি যে আউটপুট ডেটা তৈরি করবে তা ধরে রাখার জন্য প্রয়োজনীয় ডেটা স্ট্রাকচার (বাফার) তৈরি করুন।
val inputBuffers = model.createInputBuffers()
val outputBuffers = model.createOutputBuffers()
যদি আপনি CPU মেমোরি ব্যবহার করেন, তাহলে প্রথম ইনপুট বাফারে সরাসরি ডেটা লিখে ইনপুটগুলি পূরণ করুন।
inputBuffers[0].writeFloat(FloatArray(data_size) { data_value /* your data */ })
মডেলটি ডাকুন
ইনপুট এবং আউটপুট বাফার প্রদান করে, কম্পাইলড মডেলটি চালান।
model.run(inputBuffers, outputBuffers)
আউটপুট পুনরুদ্ধার করুন
মেমরি থেকে সরাসরি মডেল আউটপুট পড়ে আউটপুট পুনরুদ্ধার করুন।
val outputFloatArray = outputBuffers[0].readFloat()
মূল ধারণা এবং উপাদান
LiteRT Kotlin Compiled Model API-এর মূল ধারণা এবং উপাদান সম্পর্কে তথ্যের জন্য নিম্নলিখিত বিভাগগুলি দেখুন।
মৌলিক অনুমান (CPU)
LiteRT Next-এর সাহায্যে অনুমানের একটি সংক্ষিপ্ত, সরলীকৃত বাস্তবায়ন নিচে দেওয়া হল।
// Load model and initialize runtime
val model =
CompiledModel.create(
context.assets,
"mymodel.tflite"
)
// Preallocate input/output buffers
val inputBuffers = model.createInputBuffers()
val outputBuffers = model.createOutputBuffers()
// Fill the first input
inputBuffers[0].writeFloat(FloatArray(data_size) { data_value /* your data */ })
// Invoke
model.run(inputBuffers, outputBuffers)
// Read the output
val outputFloatArray = outputBuffers[0].readFloat()
// Clean up buffers and model
inputBuffers.forEach { it.close() }
outputBuffers.forEach { it.close() }
model.close()
কম্পাইলড মডেল (কম্পাইলডমডেল)
কম্পাইলড মডেল এপিআই ( CompiledModel ) একটি মডেল লোড করা, হার্ডওয়্যার অ্যাক্সিলারেশন প্রয়োগ করা, রানটাইম ইনস্ট্যান্টিয়েট করা, ইনপুট এবং আউটপুট বাফার তৈরি করা এবং ইনফারেন্স চালানোর জন্য দায়ী।
নিম্নলিখিত সরলীকৃত কোড স্নিপেটটি দেখায় যে কীভাবে কম্পাইলড মডেল API একটি LiterRT মডেল ( .tflite ) নেয় এবং একটি কম্পাইলড মডেল তৈরি করে যা ইনফারেন্স চালানোর জন্য প্রস্তুত।
val model =
CompiledModel.create(
context.assets,
"mymodel.tflite"
)
নিম্নলিখিত সরলীকৃত কোড স্নিপেটটি দেখায় যে কীভাবে CompiledModel API একটি ইনপুট এবং একটি আউটপুট বাফার নেয় এবং সংকলিত মডেলের সাথে অনুমান চালায়।
// Preallocate input/output buffers
val inputBuffers = model.createInputBuffers()
val outputBuffers = model.createOutputBuffers()
// Fill the first input
inputBuffers[0].writeFloat(FloatArray(data_size) { data_value /* your data */ })
// Invoke
model.run(inputBuffers, outputBuffers)
// Read the output
val outputFloatArray = outputBuffers[0].readFloat()
// Clean up buffers and model
inputBuffers.forEach { it.close() }
outputBuffers.forEach { it.close() }
model.close()
CompiledModel API কীভাবে বাস্তবায়িত হয় তার আরও সম্পূর্ণ ধারণার জন্য, Model.kt- এ সোর্স কোডটি দেখুন।
টেনসর বাফার (টেনসরবাফার)
LiterRT I/O বাফার ইন্টারঅপারেবিলিটির জন্য অন্তর্নির্মিত সমর্থন প্রদান করে, যা CompiledModel এর ভিতরে এবং বাইরে ডেটা প্রবাহ পরিচালনা করার জন্য Tensor Buffer API ( TensorBuffer ) ব্যবহার করে। Tensor Buffer API ( Write<T>() ) লেখা এবং পড়ার ( Read<T>() ) এবং বাফার লক করার ক্ষমতা প্রদান করে।
টেনসর বাফার এপিআই কীভাবে বাস্তবায়িত হয় তার আরও সম্পূর্ণ ধারণার জন্য, TensorBuffer.kt- এ সোর্স কোডটি দেখুন।