Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

A / B একটি মডেলের দুটি সংস্করণ পরীক্ষা করে

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

এই পৃষ্ঠাটি দেখায় যে আপনি কিভাবে একটি A/B পরীক্ষা পরিচালনা করতে পারেন যা একটি মডেলের দুটি সংস্করণ মূল্যায়ন করে যা একটি অনুমানমূলক চাক্ষুষ উদ্ভিদ অনুসন্ধান বৈশিষ্ট্যকে ক্ষমতা দেয়। এই বৈশিষ্ট্যটি ব্যবহারকারীদের ছবি থেকে উদ্ভিদের প্রজাতি সনাক্ত করতে সাহায্য করার জন্য একটি কাস্টম ইমেজ লেবেলিং মডেল ব্যবহার করে।

ধরুন আপনি একটি নতুন উদ্ভিদ লেবেল মডেল প্রকাশিত plant_labeler_v2 এবং আপনি একটি পরীক্ষা এটি আপনার বর্তমান মডেল, নামে তুলনা চালাতে চান plant_labeler_v1 । নিচের ধাপগুলো দেখায় কিভাবে পরীক্ষাটি সেট আপ করতে হয়, এটি চালানো হয় এবং ফলাফলের উপর পদক্ষেপ নিতে হয়।

1. আপনার মডেল দূর থেকে কনফিগারযোগ্য করুন

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

সুতরাং, আপনি নামের অধীনে আপনার বর্তমান মডেল প্রকাশ করে থাকেন তবে plant_labeler_v1 , আপনি would, আপনার অ্যাপ্লিকেশন আরম্ভের কোডে, সেট plant_labeler_v1 ডিফল্ট মান হিসাবে plant_labeler_model পরামিতি নিম্নলিখিত উদাহরণে হিসাবে:

সুইফট

let remoteConfig = RemoteConfig.remoteConfig()
let defaults = [
    "plant_labeler_model": "plant_labeler_v1" as NSObject,
    // ...
]
remoteConfig.setDefaults(defaults)
remoteConfig.fetchAndActivate()

উদ্দেশ্য গ

FIRRemoteConfig *remoteConfig = [FIRRemoteConfig remoteConfig];
NSDictionary<NSString *, NSObject *> *defaults = @{
  @"plant_labeler_model" : (NSObject *)@"plant_labeler_v1",
  // ...
};
[remoteConfig setDefaults:defaults];
[remoteConfig fetchAndActivateWithCompletionHandler:nil];

তারপর, মডেল দ্বারা নির্দিষ্ট লোড করতে আপনার মডেল সেটআপ কোড পরিবর্তন plant_labeler_model পরামিতি:

সুইফট

let rcValue = remoteConfig.configValue(forKey: "plant_labeler_model")
guard let remoteModelName = rcValue.stringValue else { return }

// ...

let remoteModel = RemoteModel(
    name: remoteModelName,
    allowsModelUpdates: true,
    initialConditions: initialConditions,
    updateConditions: updateConditions
)
ModelManager.modelManager().register(remoteModel)

// Optionally configure a local model:
// https://firebase.google.com/docs/ml/ios/label-images-with-automl#configure-a-local-model-source
// https://firebase.google.com/docs/ml/ios/use-custom-models#configure_a_local_model

উদ্দেশ্য গ

FIRRemoteConfigValue *rcValue = [remoteConfig configValueForKey:@"plant_labeler_model"];
NSString *remoteModelName = [rcValue stringValue];

// ...

FIRRemoteModel *remoteModel = [[FIRRemoteModel alloc] initWithName:remoteModelName
                                                allowsModelUpdates:YES
                                                 initialConditions:initialConditions
                                                  updateConditions:updateConditions];
[[FIRModelManager modelManager] registerRemoteModel:remoteModel];

// Optionally configure a local model:
// https://firebase.google.com/docs/ml/android/label-images-with-automl#configure-a-local-model-source
// https://firebase.google.com/docs/ml/android/use-custom-models#configure_a_local_model

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

আপনি চালিয়ে যাওয়ার আগে, আপনার মডেল ডাউনলোড কোডে নিম্নলিখিত সংযোজন করুন:

সুইফট

NotificationCenter.default.addObserver(
    forName: .firebaseMLModelDownloadDidSucceed,
    object: nil,
    queue: nil
) { [weak self] notification in
    guard let _ = self,
        let userInfo = notification.userInfo,
        let model = userInfo[ModelDownloadUserInfoKey.remoteModel.rawValue]
            as? RemoteModel,
        model.name == remoteModelName
        else { return }
    // If the model downloaded was specified by a remote parameter, log an
    // event, which will be our experiment's activation event.
    if rcValue.source == .remote {
        Analytics.logEvent("nondefault_model_downloaded", parameters: nil)
    }
}

উদ্দেশ্য গ

__weak typeof(self) weakSelf = self;

[NSNotificationCenter.defaultCenter
    addObserverForName:FIRModelDownloadDidSucceedNotification
                object:nil
                 queue:nil
            usingBlock:^(NSNotification *_Nonnull note) {
              if (weakSelf == nil | note.userInfo == nil) {
                return;
              }

              FIRRemoteModel *model = note.userInfo[FIRModelDownloadUserInfoKeyRemoteModel];
              if ([model.name isEqualToString:remoteModelName] &&
                  rcValue.source == FIRRemoteConfigSourceRemote) {
                // If the model downloaded was specified by a remote parameter, log an
                // event, which will be our experiment's activation event.
                [FIRAnalytics logEventWithName:@"nondefault_model_downloaded" parameters:nil];
              }
            }];

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

2. একটি লক্ষ্য মেট্রিক নির্ধারণ করুন

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

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

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

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

সুইফট

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

উদ্দেশ্য গ

[FIRAnalytics logEventWithName:@"first_result_opened" parameters:nil];

আপনি যে মেট্রিকটি পরীক্ষা করেন তা শেষ পর্যন্ত নির্ভর করে আপনার অ্যাপ আপনার মডেলটি কীভাবে ব্যবহার করে।

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

3. একটি A/B পরীক্ষার পরীক্ষা চালান

এখন যেহেতু আপনার অ্যাপটি আপনার ব্যবহারকারীদের হাতে এবং বিশ্লেষণের তথ্য সংগ্রহ করছে, একটি A/B পরীক্ষার পরীক্ষা তৈরি করুন যা বর্তমান মডেলের পরিবর্তে আপনার নতুন মডেল ব্যবহারের প্রভাব পরীক্ষা করে।

পরীক্ষা তৈরি করতে:

  1. উপর ঘটনাবলী Firebase কনসোলের পাতা, যাচাই আপনি প্রাসঙ্গিক অ্যানালিটিক্স ঘটনা লগিং করা হয়: অ্যাক্টিভেশন ইভেন্ট এবং লক্ষ্য মেট্রিক।

    ফায়ারবেস কনসোলে উপস্থিত হওয়ার আগে আপনার অ্যাপকে প্রতিটি ইভেন্ট অন্তত একবার লগ করতে হবে।

  2. Firebase কনসোলে, A / B পরীক্ষা অধ্যায় খুলুন।

  3. একটি নতুন পরীক্ষা তৈরি করুন:

    1. পরীক্ষা তৈরি করুন> রিমোট কনফিগ ক্লিক করুন।

    2. টার্গেটিং বিভাগে:

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

    4. ভেরিয়েন্ট বিভাগে, দুই রূপগুলো সংজ্ঞায়িত:

      • নিয়ন্ত্রণ গ্রুপ (স্বয়ংক্রিয়ভাবে তৈরি)
      • পরীক্ষামূলক উদ্ভিদ লেবেলার

      নিয়ন্ত্রণ গ্রুপ, একটি তৈরি plant_labeler_model পরামিতি এবং এটি সেট plant_labeler_v1 । কন্ট্রোল গ্রুপে নিযুক্ত ব্যবহারকারীরা পুরানো মডেল ব্যবহার করবে। (করতে প্যারামিটার সেট না (no change) করছি পরীক্ষামূলক যে আপনি একটি দূরবর্তী মান ব্যবহার করছেন আপনার অ্যাপে, যেহেতু, আপনি।)

      এক্সপেরিমেন্টাল উদ্ভিদ লেবেলার বৈকল্পিক জন্য, সেট plant_labeler_model করার প্যারামিটার plant_labeler_v2 (অভিমানী আপনি যে নামের অধীনে আপনার নতুন মডেল প্রকাশিত)। এই ভেরিয়েন্টে নির্ধারিত ব্যবহারকারীরা নতুন মডেল ব্যবহার করবে।

    A/B পরীক্ষার কনফিগারেশন স্ক্রিন

পরীক্ষা শুরু করুন এবং এটিকে কয়েক দিন বা তার বেশি সময় ধরে চলতে দিন, যতক্ষণ না A/B টেস্টিং একজন নেতা ঘোষণা করে। পরীক্ষা নেতা নির্ধারণ করা থাকে, তাহলে আপনি করতে হতে পারে আরো ব্যবহারকারীদের পরীক্ষা প্রসারিত

4. সমস্ত ব্যবহারকারীদের জন্য বিজয়ী বৈকল্পিক রোল আউট

A/B পরীক্ষার রেজাল্ট কার্ড

A/B পরীক্ষার পর একজন নেতা ঘোষণা করার জন্য পর্যাপ্ত তথ্য সংগ্রহ করা হয়েছে this এই ক্ষেত্রে, সর্বাধিক সার্চ ফলাফলে ক্লিক করা ভেরিয়েন্ট - আপনি আপনার সমস্ত ব্যবহারকারীদের জন্য বিজয়ী বৈকল্পিক (বা অন্য বৈকল্পিক) রোল আউট করবেন কিনা তা সিদ্ধান্ত নিতে পারেন।

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

সকল ব্যবহারকারীর জন্য একটি বৈকল্পিক আনছি করতে, ক্লিক করুন পরীক্ষা এর বিবরণ পৃষ্ঠায় আউট বৈকল্পিক> রোল। একবার যদি পেরে থাকি, মান plant_labeler_model প্যারামিটার হতে হবে plant_labeler_v2 সকল ব্যবহারকারীর জন্য।

ভবিষ্যতে অ্যাপ্লিকেশান আপডেট, আপনি ডিফল্ট মান পরিবর্তন করা উচিত plant_labeler_model করার প্যারামিটার plant_labeler_v2 এবং বান্ডেল মডেল আপডেট যদি আপনি ব্যবহার করুন। যদিও আপনার ব্যবহারকারীরা ইতিমধ্যেই সর্বশেষ মডেল ব্যবহার করছে, তাই আপনি যখনই সুবিধাজনকভাবে প্রকাশিত অ্যাপের অংশ হিসাবে এই আপডেটটি চাপিয়ে দিতে পারেন, যেমন আপনি পরবর্তী সময়ে একটি ফিচার আপডেট করবেন।