আপনার মেশিন লার্নিং (ML) মডেলগুলি চালানোর জন্য গ্রাফিক্স প্রসেসিং ইউনিট (GPUs) ব্যবহার করা আপনার ML-সক্ষম অ্যাপ্লিকেশনগুলির কর্মক্ষমতা এবং ব্যবহারকারীর অভিজ্ঞতাকে নাটকীয়ভাবে উন্নত করতে পারে। অ্যান্ড্রয়েড ডিভাইসে, আপনি একটি প্রতিনিধি এবং নিম্নলিখিত APIগুলির মধ্যে একটি সক্ষম করতে পারেন:
- ইন্টারপ্রেটার API - এই গাইড
- নেটিভ (C/C++) API - গাইড
এই পৃষ্ঠাটি বর্ণনা করে যে কিভাবে ইন্টারপ্রেটার API ব্যবহার করে Android অ্যাপে LiteRT মডেলের জন্য GPU ত্বরণ সক্ষম করা যায়। সেরা অনুশীলন এবং উন্নত কৌশল সহ LiteRT-এর জন্য GPU প্রতিনিধি ব্যবহার সম্পর্কে আরও তথ্যের জন্য, GPU প্রতিনিধি পৃষ্ঠাটি দেখুন।
Google Play পরিষেবাগুলির সাথে LiteRT সহ GPU ব্যবহার করুন৷
LiteRT ইন্টারপ্রেটার API একটি মেশিন লার্নিং অ্যাপ্লিকেশন তৈরির জন্য সাধারণ উদ্দেশ্য API-এর একটি সেট প্রদান করে। Google Play পরিষেবাগুলির সাথে LiteRT-এর সাথে এই APIগুলির সাথে GPU অ্যাক্সিলারেটর প্রতিনিধি কীভাবে ব্যবহার করবেন তা এই বিভাগে বর্ণনা করে৷
Google Play পরিষেবাগুলির সাথে LiteRT হল Android এ LiteRT ব্যবহার করার প্রস্তাবিত পথ৷ যদি আপনার অ্যাপ্লিকেশানটি এমন ডিভাইসগুলিকে লক্ষ্য করে যা Google Play চালাচ্ছে না, তাহলে ইন্টারপ্রেটার API এবং স্বতন্ত্র LiteRT বিভাগ সহ GPU দেখুন৷
প্রকল্প নির্ভরতা যোগ করুন (.toml সংস্করণ ক্যাটালগ সহ)
- আপনার প্রকল্পের
libs.versions.toml
ফাইল আপডেট করুন
[libraries]
...
tflite-gpu = { module = "com.google.ai.edge.litert:litert-gpu", version = "2.X.Y" }
tflite-gpu-api = { module = "com.google.ai.edge.litert:litert-gpu-api", version = "2.X.Y" }
...
- অ্যাপের
build.gradle.kts
এ প্রকল্প নির্ভরতা যোগ করুন
dependencies {
...
implementation(libraries.tflite.gpu)
implementation(libraries.tflite.gpu.api)
...
}
প্রকল্প নির্ভরতা যোগ করুন
GPU প্রতিনিধিতে অ্যাক্সেস সক্ষম করতে, আপনার অ্যাপের build.gradle
ফাইলে com.google.android.gms:play-services-tflite-gpu
যোগ করুন:
dependencies {
...
implementation 'com.google.android.gms:play-services-tflite-java:16.0.1'
implementation 'com.google.android.gms:play-services-tflite-gpu:16.1.0'
}
GPU ত্বরণ সক্ষম করুন
তারপর GPU সমর্থন সহ Google Play পরিষেবাগুলির সাথে LiteRT শুরু করুন:
val useGpuTask = TfLiteGpu.isGpuDelegateAvailable(context)
val interpreterTask = useGpuTask.continueWith { useGpuTask ->
TfLite.initialize(context,
TfLiteInitializationOptions.builder()
.setEnableGpuDelegateSupport(useGpuTask.result)
.build())
}
Task<boolean> useGpuTask = TfLiteGpu.isGpuDelegateAvailable(context);
Task<Options> interpreterOptionsTask = useGpuTask.continueWith({ task ->
TfLite.initialize(context,
TfLiteInitializationOptions.builder()
.setEnableGpuDelegateSupport(true)
.build());
});
আপনি অবশেষে InterpreterApi.Options
এর মাধ্যমে একটি GpuDelegateFactory
পাস করে ইন্টারপ্রেটারকে আরম্ভ করতে পারেন:
val options = InterpreterApi.Options()
.setRuntime(TfLiteRuntime.FROM_SYSTEM_ONLY)
.addDelegateFactory(GpuDelegateFactory())
val interpreter = InterpreterApi(model, options)
// Run inference
writeToInput(input)
interpreter.run(input, output)
readFromOutput(output)
Options options = InterpreterApi.Options()
.setRuntime(TfLiteRuntime.FROM_SYSTEM_ONLY)
.addDelegateFactory(new GpuDelegateFactory());
Interpreter interpreter = new InterpreterApi(model, options);
// Run inference
writeToInput(input);
interpreter.run(input, output);
readFromOutput(output);
জিপিইউ প্রতিনিধি অ্যান্ড্রয়েড স্টুডিওতে এমএল মডেল বাইন্ডিংয়ের সাথেও ব্যবহার করা যেতে পারে। আরও তথ্যের জন্য, মেটাডেটা ব্যবহার করে মডেল ইন্টারফেস তৈরি করুন দেখুন।
স্বতন্ত্র LiteRT সহ GPU ব্যবহার করুন
যদি আপনার অ্যাপ্লিকেশনটি এমন ডিভাইসগুলিকে লক্ষ্য করে যা Google Play চালাচ্ছে না, তাহলে আপনার অ্যাপ্লিকেশনে GPU প্রতিনিধিকে বান্ডেল করা এবং LiteRT-এর স্বতন্ত্র সংস্করণের সাথে এটি ব্যবহার করা সম্ভব।
প্রকল্প নির্ভরতা যোগ করুন
GPU প্রতিনিধিতে অ্যাক্সেস সক্ষম করতে, আপনার অ্যাপের build.gradle
ফাইলে com.google.ai.edge.litert:litert-gpu-delegate-plugin
যোগ করুন:
dependencies {
...
implementation 'com.google.ai.edge.litert:litert'
implementation 'com.google.ai.edge.litert:litert-gpu'
implementation 'com.google.ai.edge.litert:litert-gpu-api'
}
GPU ত্বরণ সক্ষম করুন
তারপর TfLiteDelegate
দিয়ে GPU-তে LiteRT চালান। জাভাতে, আপনি Interpreter.Options
এর মাধ্যমে GpuDelegate
নির্দিষ্ট করতে পারেন।
import org.tensorflow.lite.Interpreter
import org.tensorflow.lite.gpu.CompatibilityList
import org.tensorflow.lite.gpu.GpuDelegate
val compatList = CompatibilityList()
val options = Interpreter.Options().apply{
if(compatList.isDelegateSupportedOnThisDevice){
// if the device has a supported GPU, add the GPU delegate
val delegateOptions = compatList.bestOptionsForThisDevice
this.addDelegate(GpuDelegate(delegateOptions))
} else {
// if the GPU is not supported, run on 4 threads
this.setNumThreads(4)
}
}
val interpreter = Interpreter(model, options)
// Run inference
writeToInput(input)
interpreter.run(input, output)
readFromOutput(output)
import org.tensorflow.lite.Interpreter;
import org.tensorflow.lite.gpu.CompatibilityList;
import org.tensorflow.lite.gpu.GpuDelegate;
// Initialize interpreter with GPU delegate
Interpreter.Options options = new Interpreter.Options();
CompatibilityList compatList = CompatibilityList();
if(compatList.isDelegateSupportedOnThisDevice()){
// if the device has a supported GPU, add the GPU delegate
GpuDelegate.Options delegateOptions = compatList.getBestOptionsForThisDevice();
GpuDelegate gpuDelegate = new GpuDelegate(delegateOptions);
options.addDelegate(gpuDelegate);
} else {
// if the GPU is not supported, run on 4 threads
options.setNumThreads(4);
}
Interpreter interpreter = new Interpreter(model, options);
// Run inference
writeToInput(input);
interpreter.run(input, output);
readFromOutput(output);
কোয়ান্টাইজড মডেল
অ্যান্ড্রয়েড জিপিইউ প্রতিনিধি লাইব্রেরিগুলি ডিফল্টরূপে কোয়ান্টাইজড মডেলগুলিকে সমর্থন করে। জিপিইউ প্রতিনিধির সাথে কোয়ান্টাইজড মডেল ব্যবহার করার জন্য আপনাকে কোনো কোড পরিবর্তন করতে হবে না। নিম্নলিখিত বিভাগটি ব্যাখ্যা করে কিভাবে পরীক্ষা বা পরীক্ষামূলক উদ্দেশ্যে কোয়ান্টাইজড সমর্থন অক্ষম করা যায়।
কোয়ান্টাইজড মডেল সমর্থন অক্ষম করুন
নিম্নোক্ত কোডটি দেখায় কিভাবে কোয়ান্টাইজড মডেলের জন্য সমর্থন অক্ষম করা যায়।
GpuDelegate delegate = new GpuDelegate(new GpuDelegate.Options().setQuantizedModelsAllowed(false));
Interpreter.Options options = (new Interpreter.Options()).addDelegate(delegate);
GPU ত্বরণ সহ কোয়ান্টাইজড মডেল চালানোর বিষয়ে আরও তথ্যের জন্য, GPU প্রতিনিধি ওভারভিউ দেখুন।