টেনসরফ্লো লাইট গুগল প্লে সার্ভিসে (বিটা)

TensorFlow Lite 17 ফেব্রুয়ারি, 2022 থেকে প্লে পরিষেবার বর্তমান সংস্করণে চলমান সমস্ত অ্যান্ড্রয়েড ডিভাইসে সর্বজনীন বিটা হিসাবে Google Play পরিষেবা API-তে উপলব্ধ। এই API আপনাকে আপনার অ্যাপে TensorFlow Lite লাইব্রেরিগুলিকে স্থিরভাবে বান্ডিল না করেই মেশিন লার্নিং মডেলগুলি চালাতে দেয়, আপনাকে অনুমতি দেয়:

  • আপনার অ্যাপের আকার কমিয়ে দিন
  • TensorFlow Lite-এর সাম্প্রতিক, স্থিতিশীল সংস্করণ থেকে উন্নত কর্মক্ষমতা লাভ করুন

এই পৃষ্ঠাটি আপনার Android অ্যাপে Google Play পরিষেবা API-এ নতুন TensorFlow Lite কীভাবে ব্যবহার করবেন তার একটি সংক্ষিপ্ত বিবরণ প্রদান করে।

Google Play পরিষেবাগুলি সম্পর্কে আরও তথ্যের জন্য, Google Play পরিষেবাগুলির ওয়েবসাইট দেখুন৷

আপনার অ্যাপে TensorFlow Lite যোগ করুন

আপনি আপনার অ্যাপ মডিউল নির্ভরতাতে কিছু পরিবর্তন করে, নতুন API শুরু করে এবং আপনার ইন্টারপ্রেটার অবজেক্ট হিসাবে একটি নির্দিষ্ট ক্লাস ব্যবহার করে Google Play পরিষেবা API-তে TensorFlow Lite ব্যবহার করতে পারেন। নিম্নলিখিত নির্দেশাবলী আপনার অ্যাপ কোড কিভাবে সংশোধন করতে হয় তার আরো বিশদ বিবরণ প্রদান করে।

1. প্রকল্প নির্ভরতা যোগ করুন

TensorFlow Lite-এর জন্য Play Services API অ্যাক্সেস করতে আপনার অ্যাপ প্রজেক্ট কোডে নিম্নলিখিত নির্ভরতা যোগ করুন:

dependencies {
...
    // Tensorflow Lite dependencies for Google Play services
    implementation 'com.google.android.gms:play-services-tflite-java:16.0.0-beta02'
    // Optional: include Tensorflow Lite Support Library
    implementation 'com.google.android.gms:play-services-tflite-support:16.0.0-beta02'
...
}

2. TensorFlow Lite-এর সূচনা যোগ করুন

TensorFlow Lite API ব্যবহার করার আগে Google Play পরিষেবা API-এর TensorFlow Lite কম্পোনেন্ট চালু করুন:

কোটলিন

val initializeTask: Task<Void> by lazy { TfLite.initialize(this) }

জাভা

Task<Void> initializeTask = TfLite.initialize(context);

3. একটি দোভাষী তৈরি করুন এবং রানটাইম বিকল্প সেট করুন

InterpreterApi.create() InterpreterApi.Options.setRuntime() কল করে Google Play পরিষেবার রানটাইম ব্যবহার করতে কনফিগার করুন, যেমনটি নিম্নলিখিত উদাহরণ কোডে দেখানো হয়েছে:

কোটলিন

import org.tensorflow.lite.InterpreterApi
import org.tensorflow.lite.InterpreterApi.Options.TfLiteRuntime
...
private lateinit var interpreter: InterpreterApi
...
initializeTask.addOnSuccessListener {
  val interpreterOption =
    InterpreterApi.Options().setRuntime(TfLiteRuntime.FROM_SYSTEM_ONLY)
  interpreter = InterpreterApi.create(
    modelBuffer,
    interpreterOption
  )}
  .addOnFailureListener { e ->
    Log.e("Interpreter", "Cannot initialize interpreter", e)
  }

জাভা

import org.tensorflow.lite.InterpreterApi
import org.tensorflow.lite.InterpreterApi.Options.TfLiteRuntime
...
private InterpreterApi interpreter;
...
initializeTask.addOnSuccessListener(a -> {
    interpreter = InterpreterApi.create(modelBuffer,
      new InterpreterApi.Options().setRuntime(TfLiteRuntime.FROM_SYSTEM_ONLY));
  })
  .addOnFailureListener(e -> {
    Log.e("Interpreter", String.format("Cannot initialize interpreter: %s",
          e.getMessage()));
  });

আপনার উপরের বাস্তবায়ন ব্যবহার করা উচিত কারণ এটি অ্যান্ড্রয়েড ব্যবহারকারী ইন্টারফেস থ্রেড ব্লক করা এড়ায়। আপনি যদি আরও ঘনিষ্ঠভাবে থ্রেড এক্সিকিউশন পরিচালনা করতে চান, আপনি দোভাষী তৈরিতে একটি Tasks.await() কল যোগ করতে পারেন:

কোটলিন

import androidx.lifecycle.lifecycleScope
...
lifecycleScope.launchWhenStarted { // uses coroutine
  initializeTask.await()
}

জাভা

@BackgroundThread
InterpreterApi initializeInterpreter() {
    Tasks.await(initializeTask);
    return InterpreterApi.create(...);
}

4. অনুমান চালান

আপনার তৈরি করা interpreter অবজেক্ট ব্যবহার করে, একটি অনুমান তৈরি করতে run() পদ্ধতিতে কল করুন।

কোটলিন

interpreter.run(inputBuffer, outputBuffer)

জাভা

interpreter.run(inputBuffer, outputBuffer);

Google Play পরিষেবাগুলিতে TensorFlow Lite

Google Play পরিষেবা API-এ টেনসরফ্লো লাইট আপনাকে প্লে পরিষেবাগুলিতে একটি নতুন পদ্ধতি ব্যবহার করে শুরু করার পরে আপনার অ্যাপে প্রকৃত টেনসরফ্লো লাইট জাভা API অ্যাক্সেস করতে দেয়। এই পদ্ধতিটি আপনাকে বিদ্যমান অ্যাপগুলির জন্য কোড পরিবর্তনগুলি ন্যূনতম রাখতে রাখে এবং নতুন বাস্তবায়নকে সহজ করে। এই বৈশিষ্ট্যের API সম্পর্কে আরও তথ্যের জন্য, TensorFlow Lite API রেফারেন্স দেখুন

Standalone TensorFlow Lite থেকে স্থানান্তর করা হচ্ছে

আপনি যদি আপনার অ্যাপটিকে স্বতন্ত্র TensorFlow Lite থেকে Play পরিষেবা API-তে স্থানান্তর করার পরিকল্পনা করছেন, তাহলে আপনার অ্যাপ প্রকল্প কোড আপডেট করার জন্য নিম্নলিখিত অতিরিক্ত নির্দেশিকা পর্যালোচনা করুন:

  1. আপনার ব্যবহারের ক্ষেত্রে সমর্থিত তা নিশ্চিত করতে এই পৃষ্ঠার সীমাবদ্ধতা বিভাগটি পর্যালোচনা করুন।
  2. আপনার কোড আপডেট করার আগে, আপনার মডেলগুলির জন্য কর্মক্ষমতা এবং নির্ভুলতা পরীক্ষা করুন, বিশেষ করে যদি আপনি সংস্করণ 2.1 এর আগে TensorFlow Lite-এর সংস্করণগুলি ব্যবহার করছেন, তাই নতুন বাস্তবায়নের সাথে তুলনা করার জন্য আপনার কাছে একটি বেসলাইন রয়েছে।
  3. আপনি যদি TensorFlow Lite-এর জন্য Play পরিষেবা API ব্যবহার করার জন্য আপনার সমস্ত কোড স্থানান্তরিত করে থাকেন, তাহলে আপনার build.gradle ফাইল থেকে বিদ্যমান TensorFlow Lite রানটাইম লাইব্রেরি নির্ভরতাগুলি ( org.tensorflow: tensorflow-lite :* সাথে এন্ট্রিগুলি) সরিয়ে ফেলতে হবে যাতে আপনি আপনার অ্যাপের আকার কমাতে পারে।
  4. আপনার কোডে new Interpreter অবজেক্ট তৈরির সমস্ত ঘটনা চিহ্নিত করুন এবং এটিকে সংশোধন করুন যাতে এটি InterpreterApi.create() কল ব্যবহার করে। এই নতুন APIটি অ্যাসিঙ্ক্রোনাস, যার মানে বেশিরভাগ ক্ষেত্রে এটি একটি ড্রপ-ইন প্রতিস্থাপন নয়, এবং কলটি সম্পূর্ণ হওয়ার জন্য আপনাকে অবশ্যই একজন শ্রোতা নিবন্ধন করতে হবে৷ ধাপ 3 কোডে কোড স্নিপেট পড়ুন।
  5. import org.tensorflow.lite.InterpreterApi; এবং import org.tensorflow.lite.InterpreterApi.Options.TfLiteRuntime; org.tensorflow.lite.Interpreter বা org.tensorflow.lite.InterpreterApi ক্লাস ব্যবহার করে যেকোন সোর্স ফাইলে।
  6. InterpreterApi.create() -এ যেকোনও কলের ফলে শুধুমাত্র একটি আর্গুমেন্ট থাকলে, আর্গুমেন্ট তালিকায় new InterpreterApi.Options() যোগ করুন।
  7. InterpreterApi.create() এ যেকোনো কলের শেষ আর্গুমেন্টে .setRuntime(TfLiteRuntime.FROM_SYSTEM_ONLY) করুন।
  8. org.tensorflow.lite.Interpreter ক্লাসের অন্যান্য সমস্ত ঘটনাকে org.tensorflow.lite.InterpreterApi দিয়ে প্রতিস্থাপন করুন।

আপনি যদি স্বতন্ত্র TensorFlow Lite এবং Play পরিষেবা API পাশাপাশি ব্যবহার করতে চান, তাহলে আপনাকে অবশ্যই TensorFlow Lite 2.9 (বা পরবর্তী) ব্যবহার করতে হবে। TensorFlow Lite 2.8 এবং পূর্ববর্তী সংস্করণগুলি Play service API সংস্করণের সাথে সামঞ্জস্যপূর্ণ নয়৷

উদাহরণ অ্যাপ

আপনি উদাহরণ অ্যাপে Google Play পরিষেবাগুলিতে TensorFlow Lite-এর একটি উদাহরণ বাস্তবায়ন পর্যালোচনা এবং পরীক্ষা করতে পারেন।

পরীক্ষামূলক

Google Play পরিষেবাগুলিতে TensorFlow Lite প্রয়োগ করার পরে, আপনার অ্যাপ্লিকেশন পরীক্ষা করা এবং আপনার অ্যাপের মেশিন লার্নিং মডেল ফাংশনগুলি অনুশীলন করা নিশ্চিত করুন৷ আপনি যদি ত্রুটি বা সমস্যার সম্মুখীন হন তবে আপনি সমাধান করতে অক্ষম হন, দয়া করে নীচের সমর্থন এবং প্রতিক্রিয়া বিভাগে বর্ণিত চ্যানেলগুলি ব্যবহার করে তাদের প্রতিবেদন করুন৷

লোডিং ব্যতিক্রম: কোন গ্রহণযোগ্য মডিউল নেই

বিটা লঞ্চের সময় একটি উন্নয়ন পরিবেশের মাধ্যমে আপনার অ্যাপের পরীক্ষা করার সময়, আপনার অ্যাপটি যখন TensorFlow Lite ক্লাস ( TfLite.intialize(context) ) শুরু করার চেষ্টা করে তখন আপনি একটি ব্যতিক্রম পেতে পারেন :

com.google.android.gms.dynamite.DynamiteModule$LoadingException:
  No acceptable module com.google.android.gms.tflite_dynamite found.
  Local version is 0 and remote version is 0.

এই ত্রুটির মানে হল যে Google Play পরিষেবা API-এ TensorFlow Lite এখনও আপনার টেস্ট ডিভাইসে উপলভ্য নয়। আপনি আপনার ডিভাইসে পরীক্ষা করার জন্য যে ব্যবহারকারীর অ্যাকাউন্ট ব্যবহার করছেন তার সাথে এই Google গ্রুপ tflite-play-services-beta-access যোগদান করে আপনি এই ব্যতিক্রমটি সমাধান করতে পারেন। একবার আপনি বিটা অ্যাক্সেস গ্রুপে যুক্ত হয়ে গেলে, এই ব্যতিক্রমটি সমাধান করা উচিত।

এই গোষ্ঠীতে যোগদানের পর অন্তত একটি ব্যবসায়িক দিন অনুমতি দিন যাতে অ্যাক্সেস মঞ্জুর হয় এবং ত্রুটি পরিষ্কার হয়। আপনি যদি এই ত্রুটিটি অনুভব করতে থাকেন তবে নীচের সমর্থন এবং প্রতিক্রিয়া বিভাগে বর্ণিত চ্যানেলগুলি ব্যবহার করে রিপোর্ট করুন৷

সীমাবদ্ধতা

Google Play পরিষেবাগুলিতে TensorFlow Lite বর্তমানে সর্বজনীন বিটাতে রয়েছে এবং নিম্নলিখিত সীমাবদ্ধতা রয়েছে:

  • শুধুমাত্র NNAPI প্রতিনিধি বর্তমানে Google Play পরিষেবা দ্বারা সমর্থিত৷ GPU এবং Flex সহ অন্যান্য TensorFlow Lite প্রতিনিধি বর্তমানে সমর্থিত নয়।
  • স্থানীয় API- এর মাধ্যমে TensorFlow Lite-এ অ্যাক্সেস সমর্থিত নয়। Google Play পরিষেবার মাধ্যমে শুধুমাত্র TensorFlow Lite Java API পাওয়া যায়।
  • কাস্টম অপ্স সহ পরীক্ষামূলক বা অপ্রচলিত TensorFlow Lite API সমর্থিত নয়।

সমর্থন এবং প্রতিক্রিয়া

আপনি টেনসরফ্লো ইস্যু ট্র্যাকারের মাধ্যমে এই বিটা রিলিজ বৈশিষ্ট্যটির জন্য প্রতিক্রিয়া প্রদান করতে এবং সমর্থন পেতে পারেন। অনুগ্রহ করে Google Play পরিষেবাতে TensorFlow Lite-এর জন্য সমস্যা টেমপ্লেট ব্যবহার করে সমস্যা এবং সহায়তার অনুরোধ জানান।

শর্তাবলী এবং গোপনীয়তা নীতি

Google Play পরিষেবাগুলিতে TensorFlow Lite-এর ব্যবহার Google API-এর পরিষেবার শর্তাবলীর অধীন৷ মনে রাখবেন যে Google Play পরিষেবাগুলিতে TensorFlow Lite বিটাতে রয়েছে এবং, এর কার্যকারিতা এবং সেইসাথে সংশ্লিষ্ট API অগ্রিম বিজ্ঞপ্তি ছাড়াই পরিবর্তিত হতে পারে।

আপনি যখন Google Play পরিষেবার API-এ TensorFlow Lite ব্যবহার করেন, তখন ইনপুট ডেটা, যেমন ছবি, ভিডিও, টেক্সট প্রক্রিয়াকরণ সম্পূর্ণরূপে ডিভাইসে হয় এবং Google Play পরিষেবাগুলিতে TensorFlow Lite সেই ডেটা Google সার্ভারে পাঠায় না। ফলস্বরূপ, আপনি ডেটা প্রক্রিয়াকরণের জন্য আমাদের APIগুলি ব্যবহার করতে পারেন যা ডিভাইসটি ছেড়ে যাওয়া উচিত নয়৷

টেন্সরফ্লো লাইট গুগল প্লে সার্ভিস এপিআই সময়ে সময়ে Google সার্ভারের সাথে যোগাযোগ করতে পারে যাতে বাগ ফিক্স, আপডেট করা মডেল এবং হার্ডওয়্যার এক্সিলারেটরের সামঞ্জস্যপূর্ণ তথ্য পাওয়ার জন্য। Google Play পরিষেবার API-এ টেনসরফ্লো লাইট আপনার অ্যাপের API-এর পারফরম্যান্স এবং ব্যবহার সম্পর্কে মেট্রিক্স Google-কে পাঠায়। Google এই মেট্রিক্স ডেটা ব্যবহার করে কর্মক্ষমতা পরিমাপ, ডিবাগ, রক্ষণাবেক্ষণ এবং APIগুলি উন্নত করতে এবং অপব্যবহার বা অপব্যবহার শনাক্ত করতে, যেমন আমাদের গোপনীয়তা নীতিতে আরও বর্ণিত হয়েছে৷

প্রযোজ্য আইন অনুসারে Google Play পরিষেবার মেট্রিক্স ডেটাতে Google-এর টেনসরফ্লো লাইটের প্রক্রিয়াকরণ সম্পর্কে আপনার অ্যাপের ব্যবহারকারীদের জানানোর জন্য আপনি দায়ী।

আমরা যে ডেটা সংগ্রহ করি তার মধ্যে নিম্নলিখিতগুলি অন্তর্ভুক্ত রয়েছে:

  • ডিভাইস তথ্য (যেমন প্রস্তুতকারক, মডেল, OS সংস্করণ এবং বিল্ড) এবং উপলব্ধ ML হার্ডওয়্যার এক্সিলারেটর (GPU এবং DSP)। ডায়াগনস্টিকস এবং ব্যবহার বিশ্লেষণের জন্য ব্যবহৃত হয়।
  • ডিভাইস শনাক্তকারী ডায়াগনস্টিকস এবং ব্যবহার বিশ্লেষণের জন্য ব্যবহৃত হয়।
  • অ্যাপের তথ্য (প্যাকেজের নাম, অ্যাপ সংস্করণ)। ডায়াগনস্টিকস এবং ব্যবহার বিশ্লেষণের জন্য ব্যবহৃত হয়।
  • API কনফিগারেশন (যেমন কোন প্রতিনিধি ব্যবহার করা হচ্ছে)। ডায়াগনস্টিকস এবং ব্যবহার বিশ্লেষণের জন্য ব্যবহৃত হয়।
  • ঘটনার ধরন (যেমন দোভাষী সৃষ্টি, অনুমান)। ডায়াগনস্টিকস এবং ব্যবহার বিশ্লেষণের জন্য ব্যবহৃত হয়।
  • ত্রুটি কোড. ডায়াগনস্টিকস জন্য ব্যবহৃত.
  • কর্মক্ষমতা বৈশিষ্ট্যের মান. ডায়াগনস্টিকস জন্য ব্যবহৃত.

পরবর্তী পদক্ষেপ

TensorFlow Lite-এর সাথে আপনার মোবাইল অ্যাপ্লিকেশনে মেশিন লার্নিং বাস্তবায়ন সম্পর্কে আরও তথ্যের জন্য, TensorFlow Lite বিকাশকারী গাইড দেখুন। আপনি TensorFlow Hub- এ চিত্র শ্রেণীবিভাগ, অবজেক্ট সনাক্তকরণ এবং অন্যান্য অ্যাপ্লিকেশনের জন্য অতিরিক্ত TensorFlow Lite মডেলগুলি খুঁজে পেতে পারেন৷