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

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

cd824ecfd05a2822.png

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

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

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

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

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

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

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

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

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

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

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

কোড এবং প্রাক-প্রশিক্ষিত মডেল ডাউনলোড করুন

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

একটি জিপ সংরক্ষণাগার ডাউনলোড করুন যাতে এই কোডল্যাবের সোর্স কোড এবং একটি প্রাক-প্রশিক্ষিত মডেল রয়েছে৷ আপনার স্থানীয় মেশিনে সংরক্ষণাগার বের করুন.

জিপ ডাউনলোড করুন

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

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

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

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

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

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

6e36e1b947b395f2.png

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

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

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

6. Firebase যোগ করুন

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

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

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

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

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

app/build.gradle

apply plugin: 'com.google.gms.google-services'

তারপর নিম্নলিখিত লাইন যোগ dependencies প্রকল্পে আপনার build.gradle ফাইলের অধ্যায়:

project/build.gradle

classpath 'com.google.gms:google-services:4.3.3'

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

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

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

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

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

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

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

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

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

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

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

3c3c50e6ef12b3b.png

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

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

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

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

app/build.gradle

implementation 'com.google.firebase:firebase-ml-model-interpreter:22.0.3'

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

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

MainActivity.kt

  private fun setupDigitClassifier() {
    downloadModel("mnist_v1")
  }

  private fun downloadModel(modelName: String): Task<Void> {
    val remoteModel = FirebaseCustomRemoteModel.Builder(modelName).build()
    val firebaseModelManager = FirebaseModelManager.getInstance()
    return firebaseModelManager
      .isModelDownloaded(remoteModel)
      .continueWithTask { task ->
        // Create update condition if model is already downloaded, otherwise create download
        // condition.
        val conditions = if (task.result != null && task.result == true) {
          FirebaseModelDownloadConditions.Builder()
            .requireWifi()
            .build() // Update condition that requires wifi.
        } else {
          FirebaseModelDownloadConditions.Builder().build(); // Download condition.
        }
        firebaseModelManager.download(remoteModel, conditions)
      }
      .addOnSuccessListener {
        firebaseModelManager.getLatestModelFile(remoteModel)
          .addOnCompleteListener {
            val model = it.result
            if (model == null) {
              showToast("Failed to get model file.")
            } else {
              showToast("Downloaded remote model: $model")
              digitClassifier.initialize(model)
            }
          }
      }
      .addOnFailureListener {
        showToast("Model download failed for digit classifier, please check your connection.")
      }
  }

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

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

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

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

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

Firebase বিশ্লেষণ নির্ভরতা যোগ করুন

app/build.gradle

implementation 'com.google.firebase:firebase-analytics-ktx:17.4.1'

লগ ইভেন্ট

তারপর এ onCreate ফাংশন আমরা লগ ইন করার onclick শ্রোতা সেট করব correct_inference Firebase ইভেন্ট।

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

buildscript {

  // ...

    dependencies {
      // ...

      // Add the dependency for the Performance Monitoring plugin
      classpath 'com.google.firebase:perf-plugin:1.3.1'  // Performance Monitoring plugin
    }
}

app/build.gradle

// Apply the Performance Monitoring plugin
apply plugin: 'com.google.firebase.firebase-perf'

// ...

dependencies {
  // ...

  // Add the dependency for the Performance Monitoring library
  implementation 'com.google.firebase:firebase-perf:19.0.7'
}

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

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

ইন 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. পারফরমেন্স একটি যোগ করে বিল্ড সময়ে নিরীক্ষণের জন্য ডিবাগ লগিং সক্ষম করুন <meta-data> আপনার অ্যাপ্লিকেশনের জন্য উপাদান AndroidManifest.xml তাই মত ফাইল:

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 সক্ষম করুন৷

যান Firebase এমএল এপিআই পৃষ্ঠা Google ক্লাউড কনসোলে এবং সক্ষম করুন এ ক্লিক করুন।

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

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

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

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

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

c3b95de1e5508516.png

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

  1. এই খুলুন colab নোটবুক এবং আপনার নিজের ড্রাইভ নীচে একটি কপি আছে।
  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

implementation 'com.google.firebase:firebase-config-ktx:19.1.4'

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 -> ইভেন্টগুলিতে যান। তাহলে correct_inference ঘটনা দেখানো হয়, একটি "রূপান্তর ইভেন্ট" হিসাবে চিহ্নিত যদি না, আপনি অ্যানালিটিক্স ফিরে যেতে পারেন -> রুপান্তর ইভেন্টগুলি এবং ক্লিক করুন "একটি নতুন রূপান্তর ইভেন্ট তৈরি করুন" এবং দমন করা 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

e4510434f8da31b6.png

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

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

A / B পরীক্ষা এ পুরো বিষয়টা বিস্তারিত বিবেচনা জন্য, খুজুন A / B পরীক্ষা ডকুমেন্টেশন

15. অভিনন্দন!

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

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

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

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

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

আরও জানুন

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

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