ইন্টারপ্রেটার API সহ GPU ত্বরণ প্রতিনিধি

আপনার মেশিন লার্নিং (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 সংস্করণ ক্যাটালগ সহ)

  1. আপনার প্রকল্পের 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" }
...
  1. অ্যাপের 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 প্রতিনিধি ওভারভিউ দেখুন।