আপনার TFLite-চালিত Android অ্যাপে Firebase যোগ করুন

1। সংক্ষিপ্ত বিবরণ

cd824ecfd05a2822.png

Firebase ML আপনাকে আপনার মডেল ওভার-দ্য-এয়ার স্থাপন করতে সক্ষম করে। এটি আপনাকে অ্যাপের আকার ছোট রাখতে এবং প্রয়োজনের সময় শুধুমাত্র এমএল মডেল ডাউনলোড করতে, একাধিক মডেলের সাথে পরীক্ষা করতে বা সম্পূর্ণ অ্যাপটি পুনঃপ্রকাশ না করেই আপনার এমএল মডেল আপডেট করতে দেয়।

এই কোডল্যাবে আপনি একটি স্ট্যাটিক TFLite মডেল ব্যবহার করে একটি Android অ্যাপকে ফায়ারবেস থেকে গতিশীলভাবে পরিবেশিত একটি মডেল ব্যবহার করে একটি অ্যাপে রূপান্তর করবেন।

আপনি কি শিখবেন

  • TFLite মডেলগুলি Firebase ML-এ স্থাপন করুন এবং আপনার অ্যাপ থেকে সেগুলি অ্যাক্সেস করুন৷
  • Firebase অ্যানালিটিক্সের মাধ্যমে মডেলের যথার্থতা পরিমাপ করতে ব্যবহারকারীর প্রতিক্রিয়া ট্র্যাক করুন
  • Firebase পারফরম্যান্সের মাধ্যমে প্রোফাইল মডেল পারফরম্যান্স
  • রিমোট কনফিগারেশনের মাধ্যমে একাধিক স্থাপন করা মডেলের মধ্যে কোনটি লোড করা হয়েছে তা নির্বাচন করুন
  • Firebase A/B পরীক্ষার মাধ্যমে বিভিন্ন মডেলের সাথে পরীক্ষা করুন

আপনি কি প্রয়োজন হবে

  • সর্বশেষ অ্যান্ড্রয়েড স্টুডিও সংস্করণ।
  • কোডের উদাহরণ.
  • Android 5.0+ এবং Google Play পরিষেবা 9.8 বা তার পরবর্তী সংস্করণের একটি পরীক্ষামূলক ডিভাইস বা Google Play পরিষেবাগুলির 9.8 বা তার পরে একটি এমুলেটর
  • যদি একটি ডিভাইস ব্যবহার করে, একটি সংযোগ তারের.

আপনি কিভাবে এই টিউটোরিয়াল ব্যবহার করবেন?

শুধুমাত্র মাধ্যমে এটি পড়ুন এটি পড়ুন এবং ব্যায়াম সম্পূর্ণ করুন

অ্যান্ড্রয়েড অ্যাপ তৈরি করার বিষয়ে আপনার অভিজ্ঞতাকে কীভাবে মূল্যায়ন করবেন?

নবজাতক মধ্যবর্তী দক্ষ

2. নমুনা কোড পান

কমান্ড লাইন থেকে GitHub সংগ্রহস্থল ক্লোন করুন।

$ git clone https://github.com/FirebaseExtended/codelab-digitclassifier-android.git

আপনার যদি গিট ইনস্টল না থাকে তবে আপনি নমুনা প্রকল্পটি এর GitHub পৃষ্ঠা থেকে বা এই লিঙ্কে ক্লিক করে ডাউনলোড করতে পারেন।

3. স্টার্টার অ্যাপ আমদানি করুন

অ্যান্ড্রয়েড স্টুডিও থেকে, codelab-digitclassifier-android ডিরেক্টরি নির্বাচন করুন ( android_studio_folder.png ) নমুনা কোড ডাউনলোড থেকে ( ফাইল > খুলুন > .../codelab-digitclassifier-android/start)।

আপনার এখন অ্যান্ড্রয়েড স্টুডিওতে স্টার্ট প্রজেক্ট খোলা থাকা উচিত।

4. স্টার্টার অ্যাপ চালান

এখন আপনি অ্যান্ড্রয়েড স্টুডিওতে প্রকল্পটি আমদানি করেছেন, আপনি প্রথমবারের জন্য অ্যাপটি চালানোর জন্য প্রস্তুত৷ আপনার অ্যান্ড্রয়েড ডিভাইস সংযোগ করুন, এবং রান ক্লিক করুন ( execute.png অ্যান্ড্রয়েড স্টুডিও টুলবারে।

অ্যাপটি আপনার ডিভাইসে চালু করা উচিত। এই মুহুর্তে, আপনি যদি একটি অঙ্ক আঁকার চেষ্টা করেন, অ্যাপটি এটি সনাক্ত করতে সক্ষম হবে।

6e36e1b947b395f2.png

5. ফায়ারবেস কনসোল প্রকল্প তৈরি করুন

প্রকল্পে Firebase যোগ করুন

  1. ফায়ারবেস কনসোলে যান।
  2. প্রকল্প যোগ করুন নির্বাচন করুন।
  3. একটি প্রকল্পের নাম নির্বাচন করুন বা লিখুন।
  4. Firebase কনসোলে অবশিষ্ট সেটআপ পদক্ষেপগুলি অনুসরণ করুন, তারপরে প্রজেক্ট তৈরি করুন (বা যদি আপনি একটি বিদ্যমান Google প্রকল্প ব্যবহার করেন তবে Firebase যোগ করুন) ক্লিক করুন।

6. Firebase যোগ করুন

  1. আপনার নতুন প্রকল্পের ওভারভিউ স্ক্রীন থেকে, সেটআপ ওয়ার্কফ্লো চালু করতে Android আইকনে ক্লিক করুন।
  2. কোডল্যাবের প্যাকেজের নাম লিখুন: org.tensorflow.lite.examples.digitclassifier

আপনার অ্যাপে google-services.json ফাইল যোগ করুন

প্যাকেজের নাম নিবন্ধন করার পরে এবং পরবর্তী নির্বাচন করার পরে, আপনার Firebase অ্যান্ড্রয়েড কনফিগার ফাইলটি পেতে ডাউনলোড google-services.json ক্লিক করুন তারপর আপনার প্রকল্পের app ডিরেক্টরিতে google-services.json ফাইলটি অনুলিপি করুন। ফাইলটি ডাউনলোড হওয়ার পরে আপনি কনসোলে দেখানো পরবর্তী পদক্ষেপগুলি এড়িয়ে যেতে পারেন (সেগুলি ইতিমধ্যেই আপনার জন্য বিল্ড-অ্যান্ড্রয়েড-স্টার্ট প্রকল্পে করা হয়েছে)।

আপনার অ্যাপে google-services প্লাগইন যোগ করুন

Firebase ব্যবহার করার জন্য আপনার অ্যাপ্লিকেশন কনফিগার করতে google-services প্লাগইনটি google-services.json ফাইল ব্যবহার করে। আপনার প্রকল্পের app ডিরেক্টরিতে build.gradle.kts ফাইলের শীর্ষে plugins ব্লকে নিম্নলিখিত লাইনটি যুক্ত করুন:

app/build.gradle.kts

id("com.google.gms.google-services")

তারপর প্রজেক্টে আপনার build.gradle.kts ফাইলের plugins ব্লকে নিম্নলিখিত লাইন যোগ করুন:

project/build.gradle.kts

id("com.google.gms.google-services") version "4.3.15" apply false

গ্রেডল ফাইলের সাথে আপনার প্রকল্প সিঙ্ক করুন

আপনার অ্যাপে সমস্ত নির্ভরতা উপলব্ধ রয়েছে তা নিশ্চিত করার জন্য, আপনাকে এই মুহুর্তে গ্রেডল ফাইলগুলির সাথে আপনার প্রকল্প সিঙ্ক করা উচিত। অ্যান্ড্রয়েড স্টুডিও টুলবার থেকে ফাইল > গ্রেডল ফাইলের সাথে সিঙ্ক প্রজেক্ট নির্বাচন করুন।

7. Firebase দিয়ে অ্যাপটি চালান

এখন আপনি আপনার JSON ফাইলের সাথে google-services প্লাগইন কনফিগার করেছেন, আপনি Firebase এর সাথে অ্যাপটি চালানোর জন্য প্রস্তুত। আপনার অ্যান্ড্রয়েড ডিভাইস সংযোগ করুন, এবং রান ক্লিক করুন ( execute.png অ্যান্ড্রয়েড স্টুডিও টুলবারে।

অ্যাপটি আপনার ডিভাইসে চালু করা উচিত। এই মুহুর্তে, আপনার অ্যাপটি এখনও সফলভাবে তৈরি করা উচিত।

8. Firebase ML-এ একটি মডেল স্থাপন করুন

Firebase ML-এ একটি মডেল স্থাপন করা দুটি প্রধান কারণের জন্য দরকারী:

  1. আমরা অ্যাপের ইন্সটল সাইজ ছোট রাখতে পারি এবং প্রয়োজন হলে শুধুমাত্র মডেলটি ডাউনলোড করতে পারি
  2. মডেলটি নিয়মিত আপডেট করা যেতে পারে এবং সম্পূর্ণ অ্যাপের থেকে আলাদা রিলিজ চক্রের সাথে

আমরা আমাদের অ্যাপে স্ট্যাটিক মডেলটিকে Firebase থেকে একটি গতিশীলভাবে ডাউনলোড করা মডেল দিয়ে প্রতিস্থাপন করার আগে, আমাদের এটি Firebase ML-এ স্থাপন করতে হবে। ফায়ারবেস অ্যাডমিন SDK ব্যবহার করে মডেলটি কনসোলের মাধ্যমে বা প্রোগ্রাম্যাটিকভাবে স্থাপন করা যেতে পারে। এই ধাপে আমরা কনসোলের মাধ্যমে স্থাপন করব।

জিনিসগুলি সহজ রাখতে, আমরা টেনসরফ্লো লাইট মডেলটি ব্যবহার করব যা ইতিমধ্যেই আমাদের অ্যাপে রয়েছে৷ প্রথমে, ফায়ারবেস কনসোল খুলুন এবং বাম নেভিগেশন প্যানেলে মেশিন লার্নিং-এ ক্লিক করুন। আপনি যদি এটি প্রথমবার খুলছেন তবে 'শুরু করুন' এ ক্লিক করুন। তারপর "কাস্টম" এ নেভিগেট করুন এবং "কাস্টম মডেল যোগ করুন" বোতামে ক্লিক করুন।

অনুরোধ করা হলে, মডেলটিকে mnist_v1 এর মতো একটি বর্ণনামূলক নাম দিন এবং start/app/src/main/assets/mnist.tflite এর অধীনে কোডল্যাব প্রকল্প ডিরেক্টরি থেকে ফাইলটি আপলোড করুন। তারপর আপনি Android প্রকল্প থেকে এই TF Lite মডেল ফাইল মুছে ফেলতে পারেন.

3c3c50e6ef12b3b.png

9. Firebase ML থেকে মডেল ডাউনলোড করুন

আপনার অ্যাপে Firebase থেকে রিমোট মডেল কখন ডাউনলোড করতে হবে তা বেছে নেওয়া কঠিন হতে পারে কারণ TFLite মডেলগুলি তুলনামূলকভাবে বড় হতে পারে। আদর্শভাবে আমরা অ্যাপটি চালু হওয়ার সাথে সাথে মডেলটি লোড করা এড়াতে চাই, যেহেতু আমাদের মডেলটি শুধুমাত্র একটি বৈশিষ্ট্যের জন্য ব্যবহার করা হয় এবং ব্যবহারকারী কখনই সেই বৈশিষ্ট্যটি ব্যবহার না করে, তাহলে আমরা বিনা কারণেই উল্লেখযোগ্য পরিমাণ ডেটা ডাউনলোড করব। আমরা ডাউনলোডের বিকল্পগুলিও সেট করতে পারি যেমন wifi এর সাথে সংযুক্ত থাকাকালীন শুধুমাত্র মডেলগুলি আনা। আপনি যদি নিশ্চিত করতে চান যে মডেলটি এমনকি নেটওয়ার্ক সংযোগ ছাড়াই উপলব্ধ, তবে এটিকে ব্যাকআপ হিসাবে অ্যাপ ছাড়াই বান্ডিল করাও গুরুত্বপূর্ণ৷

সরলতার স্বার্থে, আমরা ডিফল্ট বান্ডিল করা মডেলটি সরিয়ে দেব এবং অ্যাপটি শুরু হলে সর্বদা Firebase থেকে একটি মডেল ডাউনলোড করব। এইভাবে অঙ্ক শনাক্তকরণ চালানোর সময় আপনি নিশ্চিত হতে পারেন যে অনুমানটি Firebase থেকে প্রদত্ত মডেলের সাথে চলছে।

অ্যাপ/build.gradle.kts ফাইলে, Firebase মেশিন লার্নিং নির্ভরতা যোগ করুন

app/build.gradle.kts

implementation("com.google.firebase:firebase-ml-modeldownloader:24.1.2")

তারপরে ফায়ারবেস থেকে মডেলটি ডাউনলোড করতে যুক্তি যোগ করুন।

আমরা digitClassifier.initialize(loadModelFile()) downloadModel("mnist_v1") দিয়ে প্রতিস্থাপন করব এবং এই পদ্ধতিটি বাস্তবায়ন করব।

MainActivity.kt

  private fun downloadModel(modelName: String): Task<CustomModel> {
    val conditions = CustomModelDownloadConditions.Builder()
    .requireWifi()
    .build()
    return FirebaseModelDownloader.getInstance()
        .getModel(modelName, DownloadType.LOCAL_MODEL, conditions)
        .addOnCompleteListener {
          val model = it.result
          if (model == null) {
            showToast("Failed to get model file.")
          } else {
            showToast("Downloaded remote model: $modelName")
            digitClassifier.initialize(model)
          }
        }
      .addOnFailureListener {
        showToast("Model download failed for $modelName, please check your connection.")
      }
  }

আপনার অ্যাপ পুনরায় চালান এবং ডিজিট ক্লাসিফায়ারে একটি অঙ্ক আঁকুন। একবার ডাউনলোড শেষ হয়ে গেলে, আপনি একটি টোস্ট বার্তা দেখতে পাবেন যে দূরবর্তী মডেলটি ডাউনলোড করা হয়েছে এবং একটি লগ নির্দেশ করে যে আপনার নতুন মডেল ব্যবহার করা হচ্ছে।

10. মডেল নির্ভুলতা পরিমাপ করতে ব্যবহারকারীর প্রতিক্রিয়া এবং রূপান্তর ট্র্যাক করুন

Firebase-এর জন্য Google Analytics আপনার অ্যাপ্লিকেশনের মাধ্যমে ব্যবহারকারীরা কীভাবে চলে, কোথায় তারা সফল হয় এবং কোথায় তারা আটকে যায় এবং ফিরে যায় তা বোঝার একটি উপায় প্রদান করে। এটি আপনার অ্যাপ্লিকেশনের সর্বাধিক ব্যবহৃত অংশগুলি বুঝতেও ব্যবহার করা যেতে পারে।

আমরা মডেল ভবিষ্যদ্বাণীতে ব্যবহারকারীর প্রতিক্রিয়া ট্র্যাক করে মডেলের যথার্থতা পরিমাপ করব। যদি একজন ব্যবহারকারী "হ্যাঁ" ক্লিক করেন তবে এটি নির্দেশ করবে যে ভবিষ্যদ্বাণীটি সঠিক ছিল৷

আমাদের মডেলের যথার্থতা ট্র্যাক করতে আমরা একটি অ্যানালিটিক্স ইভেন্ট লগ করতে পারি। প্রথমত, প্রোজেক্টে ব্যবহার করার আগে আমাদের নির্ভরতার সাথে Analytics যোগ করতে হবে:

Firebase Analytics নির্ভরতা যোগ করুন

app/build.gradle.kts

implementation(platform("com.google.firebase:firebase-bom:32.0.0"))
implementation("com.google.firebase:firebase-analytics-ktx")

লগ ইভেন্ট

তারপর onCreate ফাংশনে আমরা অনক্লিক শ্রোতাকে correct_inference ইভেন্ট ফায়ারবেসে লগ করতে সেট করব।

MainActivity.kt (onCreate)

// Setup YES button
yesButton?.setOnClickListener {
  Firebase.analytics.logEvent("correct_inference", null)
}

অ্যাপটি আবার চালান এবং একটি অঙ্ক আঁকুন। অনুমানটি সঠিক ছিল এমন প্রতিক্রিয়া পাঠাতে "হ্যাঁ" বোতামটি কয়েকবার টিপুন।

ডিবাগ বিশ্লেষণ

সাধারণত, আপনার অ্যাপ দ্বারা লগ করা ইভেন্টগুলি প্রায় এক ঘন্টার মধ্যে একসাথে ব্যাচ করা হয় এবং একসাথে আপলোড করা হয়। এই পদ্ধতিটি শেষ ব্যবহারকারীদের ডিভাইসে ব্যাটারি সংরক্ষণ করে এবং নেটওয়ার্ক ডেটা ব্যবহার হ্রাস করে। যাইহোক, আপনার অ্যানালিটিক্স ইমপ্লিমেন্টেশন যাচাই করার উদ্দেশ্যে (এবং, ডিবাগভিউ রিপোর্টে আপনার অ্যানালিটিক্স দেখার জন্য), আপনি ন্যূনতম বিলম্বের সাথে ইভেন্টগুলি আপলোড করতে আপনার ডেভেলপমেন্ট ডিভাইসে ডিবাগ মোড চালু করতে পারেন।

একটি অ্যান্ড্রয়েড ডিভাইসে অ্যানালিটিক্স ডিবাগ মোড সক্ষম করতে, নিম্নলিখিত কমান্ডগুলি চালান:

adb shell setprop debug.firebase.analytics.app org.tensorflow.lite.examples.digitclassifier

অ্যাপটি আবার চালান এবং একটি অঙ্ক আঁকুন। অনুমানটি সঠিক ছিল এমন প্রতিক্রিয়া পাঠাতে "হ্যাঁ" বোতামটি কয়েকবার টিপুন। এখন আপনি Firebase কনসোলে ডিবাগ ভিউ এর মাধ্যমে কাছাকাছি রিয়েল টাইমে লগ ইভেন্টগুলি দেখতে পারেন। বাম নেভিগেশন বার থেকে Analytics > DebugView-এ ক্লিক করুন।

5276199a086721fd.png

11. মডেলের কর্মক্ষমতা বিশ্লেষণ করুন

ফায়ারবেস পারফরম্যান্স মনিটরিং হল এমন একটি পরিষেবা যা আপনাকে আপনার iOS, Android এবং ওয়েব অ্যাপের পারফরম্যান্স বৈশিষ্ট্য সম্পর্কে অন্তর্দৃষ্টি পেতে সাহায্য করে।

আপনি আপনার অ্যাপ থেকে পারফরম্যান্স ডেটা সংগ্রহ করতে পারফরম্যান্স মনিটরিং SDK ব্যবহার করেন, তারপর Firebase কনসোলে সেই ডেটা পর্যালোচনা ও বিশ্লেষণ করুন। পারফরম্যান্স মনিটরিং আপনাকে বুঝতে সাহায্য করে কোথায় এবং কখন আপনার অ্যাপের কর্মক্ষমতা উন্নত করা যেতে পারে যাতে আপনি সেই তথ্য ব্যবহার করে পারফরম্যান্স সংক্রান্ত সমস্যাগুলি সমাধান করতে পারেন৷

এখানে আমরা অনুমান এবং ডাউনলোডের চারপাশে পারফ ট্রেস যোগ করি

এটি গুরুত্বপূর্ণ কারণ গভীর-শিক্ষায় ব্যবহৃত বৃহত্তর মডেলগুলির আরও নির্ভুল হওয়ার সম্ভাবনা রয়েছে, তবে তারা প্রতিক্রিয়া ফেরাতে আরও বেশি সময় নিতে পারে। আমাদের পরীক্ষায় আমরা সঠিকতা এবং গতির মধ্যে সঠিক ভারসাম্য খুঁজে বের করার চেষ্টা করছি।

Firebase কর্মক্ষমতা নির্ভরতা যোগ করুন

project/build.gradle.kts

plugins {
  // ...

  // Add the dependency for the Performance Monitoring plugin
  id("com.google.firebase.firebase-perf") version "1.4.2" apply false
}

app/build.gradle.kts

plugins {
  // ...

  // Add the Performance Monitoring plugin
  id("com.google.firebase.firebase-perf")
}

// ...

dependencies {
  // ...

  // Add the dependency for the Performance Monitoring library
  implementation("com.google.firebase:firebase-perf")
}

কাস্টম ট্রেস যোগ করুন

setupDigitClassifier() ফাংশনে একটি নতুন ডাউনলোডট্রেস তৈরি করুন এবং মডেলটি ডাউনলোড করার আগে এটি শুরু করুন। তারপর ট্রেস বন্ধ করে একটি সফল শ্রোতা যোগ করুন।

classifyDrawing() ফাংশনে একটি নতুন classifyTrace তৈরি করুন এবং শ্রেণীবিভাগের ঠিক আগে এটি শুরু করুন। তারপর onsuccess শ্রোতা মধ্যে ট্রেস বন্ধ.

MainActivity.kt

class MainActivity : AppCompatActivity() {
  // ...
  
  private val firebasePerformance = FirebasePerformance.getInstance()
  
  // ...

  private fun setupDigitClassifier() {
    // Add these lines to create and start the trace
    val downloadTrace = firebasePerformance.newTrace("download_model")
    downloadTrace.start()
    downloadModel("mnist_v1")
      // Add these lines to stop the trace on success
      .addOnSuccessListener {
        downloadTrace.stop()
      }
  }

// ...

  private fun classifyDrawing() {
    val bitmap = drawView?.getBitmap()

    if ((bitmap != null) && (digitClassifier.isInitialized)) {
      // Add these lines to create and start the trace
      val classifyTrace = firebasePerformance.newTrace("classify")
      classifyTrace.start()
      digitClassifier
        .classifyAsync(bitmap)
        .addOnSuccessListener { resultText -> 
          // Add this line to stop the trace on success
          classifyTrace.stop()
          predictedTextView?.text = resultText
        }
        .addOnFailureListener { e ->
          predictedTextView?.text = getString(
            R.string.tfe_dc_classification_error_message,
            e.localizedMessage
          )
          Log.e(TAG, "Error classifying drawing.", e)
        }
    }
  }

কর্মক্ষমতা ইভেন্টের জন্য লগ বার্তা দেখুন

  1. আপনার অ্যাপের AndroidManifest.xml ফাইলে একটি <meta-data> উপাদান যোগ করে বিল্ড টাইমে পারফরম্যান্স মনিটরিংয়ের জন্য ডিবাগ লগিং সক্ষম করুন, যেমন:

AndroidManifest.xml

<application>
    <meta-data
      android:name="firebase_performance_logcat_enabled"
      android:value="true" />
</application>
  1. কোনো ত্রুটি বার্তা জন্য আপনার লগ বার্তা পরীক্ষা করুন.
  2. পারফরম্যান্স মনিটরিং এর লগ মেসেজগুলিকে FirebasePerformance দিয়ে ট্যাগ করে। লগক্যাট ফিল্টারিং ব্যবহার করে, আপনি বিশেষভাবে নিম্নলিখিত কমান্ডটি চালিয়ে সময়কাল ট্রেস এবং HTTP/S নেটওয়ার্ক অনুরোধ লগিং দেখতে পারেন:
adb logcat -s FirebasePerformance
  1. নিম্নলিখিত ধরনের লগগুলির জন্য পরীক্ষা করুন যা নির্দেশ করে যে পারফরম্যান্স মনিটরিং পারফরম্যান্স ইভেন্টগুলি লগিং করছে:
  • Logging TraceMetric
  • Logging NetworkRequestMetric

12. Firebase ML-এ একটি দ্বিতীয় মডেল স্থাপন করুন৷

আপনার মডেলের একটি নতুন সংস্করণ নিয়ে আসার সময়, যেমন একটি ভাল মডেল আর্কিটেকচার সহ বা একটি বড় বা আপডেট ডেটাসেটে প্রশিক্ষিত, আমরা আমাদের বর্তমান মডেলটিকে নতুন সংস্করণ দিয়ে প্রতিস্থাপন করতে প্রলুব্ধ বোধ করতে পারি। যাইহোক, পরীক্ষায় ভাল পারফরম্যান্স করা একটি মডেল অগত্যা উত্পাদনে সমানভাবে ভাল পারফর্ম করে না। অতএব, আসুন আমাদের আসল মডেল এবং নতুনটির তুলনা করতে উৎপাদনে A/B পরীক্ষা করি।

Firebase মডেল ব্যবস্থাপনা API সক্ষম করুন

এই ধাপে, আমরা পাইথন কোড ব্যবহার করে আমাদের টেনসরফ্লো লাইট মডেলের একটি নতুন সংস্করণ স্থাপন করতে Firebase মডেল ম্যানেজমেন্ট এপিআই সক্ষম করব।

আপনার ML মডেলগুলি সংরক্ষণ করার জন্য একটি বালতি তৈরি করুন৷

আপনার ফায়ারবেস কনসোলে, স্টোরেজে যান এবং শুরু করুন ক্লিক করুন। fbbea78f0eb3dc9f.png

আপনার বালতি সেট আপ পেতে ডায়ালগ অনুসরণ করুন.

19517c0d6d2aa14d.png

Firebase ML API সক্ষম করুন৷

Google ক্লাউড কনসোলে Firebase ML API পৃষ্ঠাতে যান এবং Enable এ ক্লিক করুন।

2414fd5cced6c984.png জিজ্ঞাসা করা হলে ডিজিট ক্লাসিফায়ার অ্যাপটি নির্বাচন করুন।

একটি নতুন মডেলকে প্রশিক্ষণ দিন এবং Firebase ML-এ প্রকাশ করুন৷

এখন আমরা একটি বৃহত্তর ডেটাসেট ব্যবহার করে মডেলটির একটি নতুন সংস্করণকে প্রশিক্ষণ দেব এবং তারপরে আমরা Firebase অ্যাডমিন SDK ব্যবহার করে প্রশিক্ষণ নোটবুক থেকে সরাসরি এটিকে প্রোগ্রাম্যাটিকভাবে স্থাপন করব।

পরিষেবা অ্যাকাউন্টের জন্য ব্যক্তিগত কী ডাউনলোড করুন

আমরা Firebase অ্যাডমিন SDK ব্যবহার করার আগে, আমাদের একটি পরিষেবা অ্যাকাউন্ট তৈরি করতে হবে। এই লিঙ্কে ক্লিক করে Firebase কনসোলের পরিষেবা অ্যাকাউন্ট প্যানেল খুলুন এবং Firebase অ্যাডমিন SDK-এর জন্য একটি নতুন পরিষেবা অ্যাকাউন্ট তৈরি করতে বোতামে ক্লিক করুন। প্রম্পট করা হলে, জেনারেট নিউ প্রাইভেট কী বোতামে ক্লিক করুন। আমরা কোলাব নোটবুক থেকে আমাদের অনুরোধগুলি প্রমাণ করার জন্য পরিষেবা অ্যাকাউন্ট কী ব্যবহার করব।

c3b95de1e5508516.png

এখন আমরা নতুন মডেলকে প্রশিক্ষণ ও স্থাপন করতে পারি।

  1. এই কোলাব নোটবুকটি খুলুন এবং আপনার নিজের ড্রাইভের অধীনে এটির একটি অনুলিপি তৈরি করুন।
  2. এর বাম দিকে প্লে বোতামে ক্লিক করে প্রথম সেলটি চালান "একটি উন্নত টেনসরফ্লো লাইট মডেলকে প্রশিক্ষণ দিন"। এটি একটি নতুন মডেলকে প্রশিক্ষণ দেবে এবং কিছু সময় লাগতে পারে৷
  3. দ্বিতীয় সেলটি চালানোর ফলে একটি ফাইল আপলোড প্রম্পট তৈরি হবে। আপনার পরিষেবা অ্যাকাউন্ট তৈরি করার সময় Firebase কনসোল থেকে ডাউনলোড করা json ফাইলটি আপলোড করুন।

71e847c6a85423b3.png

  1. শেষ দুটি কোষ চালান।

কোলাব নোটবুক চালানোর পরে, আপনি Firebase কনসোলে একটি দ্বিতীয় মডেল দেখতে পাবেন। নিশ্চিত করুন যে দ্বিতীয় মডেলটির নাম mnist_v2

c316683bb4d75d57.png

13. দূরবর্তী কনফিগারেশনের মাধ্যমে একটি মডেল নির্বাচন করুন

এখন যেহেতু আমাদের দুটি পৃথক মডেল আছে, আমরা রানটাইমে কোন মডেলটি ডাউনলোড করতে হবে তা নির্বাচন করার জন্য একটি প্যারামিটার যোগ করব। ক্লায়েন্ট প্রাপ্ত প্যারামিটারের মান নির্ধারণ করবে ক্লায়েন্ট কোন মডেলটি ডাউনলোড করবে।

Firebase কনসোলে কনফিগার করার নিয়ম যোগ করুন

প্রথমে, ফায়ারবেস কনসোল খুলুন এবং বাম নেভি মেনুতে রিমোট কনফিগার বোতামে ক্লিক করুন। তারপর, "প্যারামিটার যোগ করুন" বোতামে ক্লিক করুন।

নতুন প্যারামিটার model_name নাম দিন এবং এটিকে "mnist_v1" এর একটি ডিফল্ট মান দিন। রিমোট কনফিগারেশন প্যারামিটারে মডেলের নাম রেখে, আমরা পরীক্ষা করতে চাই এমন প্রতিটি মডেলের জন্য একটি নতুন প্যারামিটার যোগ না করে একাধিক মডেল পরীক্ষা করতে পারি। আপডেটগুলি প্রয়োগ করতে পরিবর্তনগুলি প্রকাশ করুন ক্লিক করুন৷

2949cb95c7214ca4.png

Firebase RemoteConfig নির্ভরতা যোগ করুন

app/build.gradle.kts

implementation("com.google.firebase:firebase-config-ktx")

Firebase রিমোট কনফিগার কনফিগার করুন

MainActivity.kt

  private fun configureRemoteConfig() {
    remoteConfig = Firebase.remoteConfig
    val configSettings = remoteConfigSettings {
      minimumFetchIntervalInSeconds = 3600
    }
    remoteConfig.setConfigSettingsAsync(configSettings)
  }

অনুরোধ করুন এবং কনফিগারেশন ব্যবহার করুন

কনফিগারেশনের জন্য একটি আনার অনুরোধ তৈরি করুন এবং কনফিগার পরামিতিগুলি বাছাই করতে এবং ব্যবহার করার জন্য একটি সম্পূর্ণ হ্যান্ডলার যোগ করুন।

MainActivity.kt

 private fun setupDigitClassifier() {
    configureRemoteConfig()
    remoteConfig.fetchAndActivate()
      .addOnCompleteListener { task ->
        if (task.isSuccessful) {
          val modelName = remoteConfig.getString("model_name")
          val downloadTrace = firebasePerformance.newTrace("download_model")
          downloadTrace.start()
          downloadModel(modelName)
            .addOnSuccessListener {
              downloadTrace.stop()
            }
        } else {
          showToast("Failed to fetch model name.")
        }
      }
  }

রিমোট কনফিগারেশন পরীক্ষা করুন

  1. ক্লিক করুন 98205811bbed9d74.png রান বোতাম।
  2. আপনি mnist_v1 মডেলটি ডাউনলোড করা টোস্ট বার্তাটি দেখতে পাচ্ছেন কিনা তা পরীক্ষা করুন৷
  3. Firebase কনসোলে ফিরে যান, mnist_v2 তে ডিফল্ট মান পরিবর্তন করুন এবং আপডেটগুলি প্রয়োগ করতে পরিবর্তনগুলি প্রকাশ করুন নির্বাচন করুন৷
  4. অ্যাপটি পুনরায় চালু করুন এবং টোস্ট বার্তাটি দেখতে পরীক্ষা করুন যে mnist_v2 মডেলটি এবার ডাউনলোড হয়েছে।

14. A/B টেস্ট মডেলের কার্যকারিতা

ফায়ারবেস A/B টেস্টিং আপনাকে পণ্য ও বিপণন পরীক্ষা চালানো, বিশ্লেষণ এবং স্কেল করা সহজ করে আপনার অ্যাপের অভিজ্ঞতা অপ্টিমাইজ করতে সাহায্য করে। অবশেষে, আমাদের দুটি মডেলের মধ্যে কোনটি ভালো পারফর্ম করছে তা দেখতে আমরা Firebase-এর বিল্ট-ইন A/B টেস্টিং আচরণ ব্যবহার করতে পারি।

Analytics -> Firebase কনসোলে ইভেন্টগুলিতে যান। correct_inference ইভেন্টটি দেখালে, এটিকে একটি "রূপান্তর ইভেন্ট" হিসাবে চিহ্নিত করুন, যদি না হয়, আপনি Analytics -> রূপান্তর ইভেন্টে যেতে পারেন এবং "একটি নতুন রূপান্তর ইভেন্ট তৈরি করুন" এ ক্লিক করুন এবং correct_inference.

এখন "Firebase কনসোলে রিমোট কনফিগারেশনে যান, আমরা এইমাত্র যোগ করা "model_name" প্যারামিটারের আরও বিকল্প মেনু থেকে "A/B পরীক্ষা" বোতামটি নির্বাচন করুন।

fad5ea36969d2aeb.png

নিম্নলিখিত মেনুতে, ডিফল্ট নাম গ্রহণ করুন।

d7c006669ace6e40.png

ড্রপডাউনে আপনার অ্যাপ নির্বাচন করুন এবং 50% সক্রিয় ব্যবহারকারীদের লক্ষ্য নির্ধারণের মানদণ্ড পরিবর্তন করুন।

cb72dcc7d2666bd3.png

আপনি যদি correct_inference ইভেন্টটিকে আগে একটি রূপান্তর হিসাবে সেট করতে সক্ষম হন, তাহলে এই ইভেন্টটিকে ট্র্যাক করতে প্রাথমিক মেট্রিক হিসাবে ব্যবহার করুন। অন্যথায়, আপনি যদি অ্যানালিটিক্সে ইভেন্ট দেখানোর জন্য অপেক্ষা করতে না চান, তাহলে আপনি correct_inference manually যোগ করতে পারেন।

1ac9c94fb3159271.png

অবশেষে, ভেরিয়েন্ট স্ক্রিনে, mnist_v1 ব্যবহার করার জন্য আপনার কন্ট্রোল গ্রুপ ভেরিয়েন্ট এবং mnist_v2 ব্যবহার করার জন্য আপনার ভেরিয়েন্ট A গ্রুপ সেট করুন।

e4510434f8da31b6.png

নীচে ডান কোণায় পর্যালোচনা বোতামে ক্লিক করুন.

অভিনন্দন, আপনি আপনার দুটি পৃথক মডেলের জন্য সফলভাবে একটি A/B পরীক্ষা তৈরি করেছেন! A/B পরীক্ষাটি বর্তমানে একটি খসড়া অবস্থায় রয়েছে এবং "পরীক্ষা শুরু করুন" বোতামে ক্লিক করে যেকোনো সময় শুরু করা যেতে পারে।

A/B টেস্টিং এর ঘনিষ্ঠভাবে দেখার জন্য, A/B টেস্টিং ডকুমেন্টেশন দেখুন।

15. অভিনন্দন!

এই কোডল্যাবে, আপনি শিখেছেন কীভাবে আপনার অ্যাপে একটি স্ট্যাটিকালি-বান্ডেল করা tflite সম্পদকে Firebase থেকে একটি গতিশীলভাবে লোড করা TFLite মডেল দিয়ে প্রতিস্থাপন করতে হয়। TFLite এবং Firebase সম্পর্কে আরও জানতে, অন্যান্য TFLite নমুনা এবং Firebase শুরু করার নির্দেশিকাগুলি দেখুন।

আমরা কভার করেছি কি

  • টেনসরফ্লো লাইট
  • ফায়ারবেস এমএল
  • ফায়ারবেস বিশ্লেষণ
  • ফায়ারবেস পারফরম্যান্স মনিটরিং
  • ফায়ারবেস রিমোট কনফিগারেশন
  • ফায়ারবেস এ/বি টেস্টিং

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

  • আপনার অ্যাপে Firebase ML স্থাপনা প্রয়োগ করুন।

আরও জানুন

একটি প্রশ্ন আছে?

রিপোর্ট সমস্যা