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

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

গোল

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

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

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

পূর্বশর্ত

এই কোডল্যাব শুরু করার আগে নিশ্চিত করুন যে আপনি ইনস্টল করেছেন:

  • Xcode 11 (বা উচ্চতর)
  • CocoaPods 1.9.1 (বা উচ্চতর)

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

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

  1. ফায়ারবেস কনসোলে যান।
  2. নতুন প্রজেক্ট তৈরি করুন নির্বাচন করুন এবং আপনার প্রকল্পের নাম দিন "Firebase ML iOS Codelab"।

3. নমুনা প্রকল্প পান

কোডটি ডাউনলোড করুন

নমুনা প্রকল্প ক্লোন করে শুরু করুন এবং প্রকল্প ডিরেক্টরিতে pod update চালান:

git clone https://github.com/FirebaseExtended/codelab-digitclassifier-ios.git
cd codelab-digitclassifier-ios
pod install --repo-update

আপনার যদি গিট ইনস্টল না থাকে তবে আপনি নমুনা প্রকল্পটি এর GitHub পৃষ্ঠা থেকে বা এই লিঙ্কে ক্লিক করে ডাউনলোড করতে পারেন। একবার আপনি প্রকল্পটি ডাউনলোড করার পরে, এটিকে Xcode-এ চালান এবং এটি কীভাবে কাজ করে তার অনুভূতি পেতে ডিজিট ক্লাসিফায়ারের সাথে খেলুন।

Firebase সেট আপ করুন

একটি নতুন ফায়ারবেস প্রকল্প তৈরি করতে ডকুমেন্টেশন অনুসরণ করুন। একবার আপনি আপনার প্রকল্পটি পেয়ে গেলে, Firebase কনসোল থেকে আপনার প্রকল্পের GoogleService-Info.plist ফাইলটি ডাউনলোড করুন এবং এটিকে Xcode প্রকল্পের মূলে টেনে আনুন৷

f06cb08d48de7e10.png

আপনার Podfile এ Firebase যোগ করুন এবং পড ইনস্টল চালান।

pod 'FirebaseMLModelDownloader', '9.3.0-beta'

আপনার AppDelegate এর didFinishLaunchingWithOptions পদ্ধতিতে, ফাইলের শীর্ষে Firebase আমদানি করুন

import FirebaseCore

এবং Firebase কনফিগার করতে একটি কল যোগ করুন।

FirebaseApp.configure()

অ্যাপটি সঠিকভাবে কনফিগার করা হয়েছে এবং লঞ্চের সময় ক্র্যাশ না হয় তা নিশ্চিত করতে প্রকল্পটি আবার চালান।

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

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

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

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

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

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

3c3c50e6ef12b3b.png

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

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

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

ModelLoader.swift এর শীর্ষে, Firebase মডিউল আমদানি করুন।

import FirebaseCore
import FirebaseMLModelDownloader

তারপর নিম্নলিখিত পদ্ধতি বাস্তবায়ন করুন।

static func downloadModel(named name: String,
                          completion: @escaping (CustomModel?, DownloadError?) -> Void) {
  guard FirebaseApp.app() != nil else {
    completion(nil, .firebaseNotInitialized)
    return
  }
  guard success == nil && failure == nil else {
    completion(nil, .downloadInProgress)
    return
  }
  let conditions = ModelDownloadConditions(allowsCellularAccess: false)
  ModelDownloader.modelDownloader().getModel(name: name, downloadType: .localModelUpdateInBackground, conditions: conditions) { result in
          switch (result) {
          case .success(let customModel):
                  // Download complete.
                  // The CustomModel object contains the local path of the model file,
                  // which you can use to instantiate a TensorFlow Lite classifier.
                  return completion(customModel, nil)
          case .failure(let error):
              // Download was unsuccessful. Notify error message.
            completion(nil, .downloadFailed(underlyingError: error))
          }
  }
}

ViewController.swift এর viewDidLoad এ, আমাদের নতুন মডেল ডাউনলোড পদ্ধতি দিয়ে DigitClassifier ইনিশিয়ালাইজেশন কলটি প্রতিস্থাপন করুন।

    // Download the model from Firebase
    print("Fetching model...")
    ModelLoader.downloadModel(named: "mnist_v1") { (customModel, error) in
      guard let customModel = customModel else {
        if let error = error {
          print(error)
        }
        return
      }

      print("Model download complete")
      
      // Initialize a DigitClassifier instance
      DigitClassifier.newInstance(modelPath: customModel.path) { result in
      switch result {
        case let .success(classifier):
          self.classifier = classifier
        case .error(_):
          self.resultLabel.text = "Failed to initialize."
        }
      }
    }

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

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

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

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

pod 'FirebaseAnalytics'

তারপর ফাইলের শীর্ষে ViewController.swift import Firebase-এ

import FirebaseAnalytics

এবং correctButtonPressed পদ্ধতিতে কোডের নিম্নলিখিত লাইন যোগ করুন।

Analytics.logEvent("correct_inference", parameters: nil)

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

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

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

আপনার ডেভেলপমেন্ট ডিভাইসে অ্যানালিটিক্স ডিবাগ মোড সক্ষম করতে, Xcode-এ নিম্নলিখিত কমান্ড লাইন আর্গুমেন্ট উল্লেখ করুন:

-FIRDebugEnabled

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

5276199a086721fd.png

7. ফায়ারবেস পারফরম্যান্সের সাথে অনুমান সময় ট্র্যাক করুন

আপনার মডেল পরীক্ষা করার সময়, ডেভেলপমেন্ট ডিভাইসে তৈরি পারফরম্যান্স মেট্রিক্স আপনার ব্যবহারকারীদের হাতে মডেলটি কীভাবে পারফর্ম করবে তা ক্যাপচার করার জন্য যথেষ্ট নয়, কারণ হার্ডওয়্যার ব্যবহারকারীরা আপনার অ্যাপটি কী চালাবেন তা বলা কঠিন। সৌভাগ্যবশত, আপনি আপনার মডেলের পারফরম্যান্সের আরও ভালো ছবি পেতে Firebase পারফরম্যান্স দিয়ে ব্যবহারকারীদের ডিভাইসে আপনার মডেলের পারফরম্যান্স পরিমাপ করতে পারেন।

অনুমান চালাতে যে সময় লাগে তা পরিমাপ করতে, প্রথমে DigitClassifier.swift এ Firebase আমদানি করুন:

import FirebasePerformance

তারপর শ্রেণীবদ্ধ পদ্ধতিতে একটি কর্মক্ষমতা ট্রেস শুরু করুন এবং অনুমান সম্পূর্ণ হলে ট্রেস বন্ধ করুন। নিশ্চিত করুন যে আপনি DispatchQueue.global.async বন্ধের ভিতরে কোডের নিম্নলিখিত লাইনগুলি যোগ করেছেন এবং সরাসরি পদ্ধতি ঘোষণার নীচে নয়৷

let inferenceTrace = Performance.startTrace(name: "tflite inference")
defer {
  inferenceTrace?.stop()
}

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

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

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

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

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

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

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

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

19517c0d6d2aa14d.png

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

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

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

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

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

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

c3b95de1e5508516.png

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

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

71e847c6a85423b3.png

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

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

c316683bb4d75d57.png

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

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

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

পরামিতি যোগ করার পরে, আপনি এটি কনসোলে দেখতে হবে:

699b3fd32acce887.png

আমাদের কোডে, দূরবর্তী মডেল লোড করার সময় আমাদের একটি চেক যোগ করতে হবে। আমরা যখন রিমোট কনফিগ থেকে প্যারামিটারটি পাই, তখন আমরা সংশ্লিষ্ট নামের সাথে রিমোট মডেলটি আনব; অন্যথায় আমরা mnist_v1 লোড করার চেষ্টা করব। আমরা রিমোট কনফিগ ব্যবহার করার আগে, আমাদের এটিকে পডফাইলে নির্ভরতা হিসাবে নির্দিষ্ট করে আমাদের প্রকল্পে যুক্ত করতে হবে:

pod 'FirebaseRemoteConfig'

পড ইনস্টল চালান এবং Xcode প্রকল্পটি পুনরায় খুলুন। ModelLoader.swift এ, fetchParameterizedModel পদ্ধতি প্রয়োগ করুন।

static func fetchParameterizedModel(completion: @escaping (CustomModel?, DownloadError?) -> Void) {
  RemoteConfig.remoteConfig().fetchAndActivate { (status, error) in
    DispatchQueue.main.async {
      if let error = error {
        let compositeError = DownloadError.downloadFailed(underlyingError: error)
        completion(nil, compositeError)
        return
      }

      let modelName: String
      if let name = RemoteConfig.remoteConfig().configValue(forKey: "model_name").stringValue {
        modelName = name
      } else {
        let defaultName = "mnist_v1"
        print("Unable to fetch model name from config, falling back to default \(defaultName)")
        modelName = defaultName
      }
      downloadModel(named: modelName, completion: completion)
    }
  }
}

অবশেষে, ViewController.swift এ, downloadModel কলটিকে নতুন পদ্ধতিতে প্রতিস্থাপন করুন যা আমরা এইমাত্র প্রয়োগ করেছি।

// Download the model from Firebase
print("Fetching model...")
ModelLoader.fetchParameterizedModel { (customModel, error) in
  guard let customModel = customModel else {
    if let error = error {
      print(error)
    }
    return
  }

  print("Model download complete")
  
  // Initialize a DigitClassifier instance
  DigitClassifier.newInstance(modelPath: customModel.path) { result in
  switch result {
    case let .success(classifier):
      self.classifier = classifier
    case .error(_):
      self.resultLabel.text = "Failed to initialize."
    }
  }
}

অ্যাপটি পুনরায় চালান এবং নিশ্চিত করুন যে এটি এখনও মডেলটি সঠিকভাবে লোড করছে।

10. A/B দুটি মডেল পরীক্ষা করুন

অবশেষে, আমাদের দুটি মডেলের মধ্যে কোনটি ভালো পারফর্ম করছে তা দেখতে আমরা Firebase-এর বিল্ট-ইন A/B টেস্টিং আচরণ ব্যবহার করতে পারি। Analytics -> Firebase কনসোলে ইভেন্টগুলিতে যান। correct_inference ইভেন্টটি দেখালে, এটিকে একটি "রূপান্তর ইভেন্ট" হিসাবে চিহ্নিত করুন, যদি না হয়, আপনি Analytics -> রূপান্তর ইভেন্টে যেতে পারেন এবং "একটি নতুন রূপান্তর ইভেন্ট তৈরি করুন" এ ক্লিক করুন এবং correct_inference.

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

fad5ea36969d2aeb.png

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

d7c006669ace6e40.png

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

6246dd7c660b53fb.png

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

1ac9c94fb3159271.png

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

e4510434f8da31b6.png

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

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

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

11. উপসংহার

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

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

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