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

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

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

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

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

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

সুতরাং, আপনি নামের অধীনে আপনার বর্তমান মডেল প্রকাশ করে থাকেন তবে 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

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

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

সুইফট

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 পরীক্ষায় রেকর্ড করা হবে না।

২. একটি গোল মেট্রিক নির্ধারণ করুন

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

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

অনুমানমূলক দৃশ্য উদ্ভিদ অনুসন্ধানের বৈশিষ্ট্যটিকে উদাহরণ হিসাবে ব্যবহার করে, ধরুন আপনি প্রতিটি ফলাফলের প্রতি মডেলের আত্মবিশ্বাসের ক্রম অনুসারে অনুসন্ধান ফলাফলগুলি আপনার ব্যবহারকারীর সামনে উপস্থাপন করেছেন। আপনার মডেলটির নির্ভুলতার একটি ধারণা পেতে পারার এক উপায় হ'ল ব্যবহারকারীরা প্রথম অনুসন্ধান ফলাফলটি কতবার খোলেন তা দেখে।

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

সুইফট

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

উদ্দেশ্য গ

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

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

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

৩.এ / বি পরীক্ষার পরীক্ষা চালান

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

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

  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 (অভিমানী আপনি যে নামের অধীনে আপনার নতুন মডেল প্রকাশিত)। এই রূপটিতে নিযুক্ত ব্যবহারকারীরা নতুন মডেলটি ব্যবহার করবেন।

    এ / বি পরীক্ষার কনফিগারেশন স্ক্রিন

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

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

এ / বি পরীক্ষার ফলাফল কার্ড

একজন / বি পরীক্ষার পরে নেতৃত্বের ঘোষণার জন্য পর্যাপ্ত তথ্য সংগ্রহ করা হয়েছে top এক্ষেত্রে শীর্ষস্থানীয় ফলাফলের ফলাফলগুলি সর্বাধিকীকরণ করা বৈকল্পিক your আপনার সমস্ত ব্যবহারকারীর জন্য বিজয়ী রূপটি (বা অন্য কোনও রূপ) রোল আউট করার সিদ্ধান্ত নিতে পারেন decide

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

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

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