Yeni bir özel modeli veya AutoML Vision Edge modelini eğittikten sonra şunları kullanabilirsiniz: A/B Testi ile yeni modelin gerçek dünya koşullarında ne kadar iyi performans gösterdiğini ve halihazırda kullandığınız modelle karşılaştırılır. Yeni modelinizin kullanıma sunarak, yeni modeli tüm kullanıcılarınıza kolayca sunabilir, Google Play Store'u kullanabilirsiniz.
Bu sayfada, iki sürümü değerlendiren bir A/B testini nasıl gerçekleştirebileceğiniz gösterilmektedir bir model geliştiriyor. Bu özellik kullanıcıların farklı bitkilerin bitki türlerini tanımlamasına yardımcı olmak için resimlerini.
Diyelim ki yeni bir bitki etiketleme modeli yayınladınız.
plant_labeler_v2
ve bunu karşılaştıran bir deneme çalıştırmak istiyorsunuz
plant_labeler_v1
adlı geçerli modelinizle. Aşağıdaki adımlar
denemenin nasıl oluşturulacağını, çalıştırılacağını ve sonuçlara göre nasıl işlem yapılacağını gösterebilir.
1. Modelinizi uzaktan yapılandırılabilir hale getirme
Modellerinize A/B testi uygulamanın ilk adımı, uygulamanızı Remote Config parametresini kullanarak hangi modeli kullandığını belirler. En başta, bu parametrenin varsayılan değerini, uygulamanızın Google tarafından ancak model adı uzaktan kumanda tarafından kontrol edildiği için, yapılandırılabilir parametre olarak kullandığınızda, farklı modellerle denemeler yapabilir ve Böylece, uygulama güncellemelerini her zaman kullanıcılarınıza aktarmak zorunda kalmazsınız.
Bu nedenle, geçerli modelinizi
plant_labeler_v1
, uygulama başlatma kodunuzda
Etiketin varsayılan değeri olarak plant_labeler_v1
,
plant_labeler_model
parametresi için aşağıdaki örnekte gösterildiği gibi:
Swift
let remoteConfig = RemoteConfig.remoteConfig()
let defaults = [
"plant_labeler_model": "plant_labeler_v1" as NSObject,
// ...
]
remoteConfig.setDefaults(defaults)
remoteConfig.fetchAndActivate()
Objective-C
FIRRemoteConfig *remoteConfig = [FIRRemoteConfig remoteConfig];
NSDictionary<NSString *, NSObject *> *defaults = @{
@"plant_labeler_model" : (NSObject *)@"plant_labeler_v1",
// ...
};
[remoteConfig setDefaults:defaults];
[remoteConfig fetchAndActivateWithCompletionHandler:nil];
Ardından,
plant_labeler_model
parametresi:
Swift
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
Objective-C
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
Uygulamanız artık hangi modelin kaydedileceğini belirlemek için bir Remote Config parametresi sadece yeni bir model yayınlayıp ona bu modeli atayarak adını Remote Config parametresine ekleyin. Bu özellik sayesinde A/B Testi, amacıyla farklı modeller sunabilirsiniz.
Devam etmeden önce model indirme işlemine aşağıdaki ekleme işlemini de yapın kod:
Swift
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)
}
}
Objective-C
__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];
}
}];
Yukarıdaki kod, ileride günlük olarak kullanacağınız özel bir Analytics etkinliğini günlüğe kaydeder.
denemenin
2. Hedef metriği belirleme
Sonraki adım, modelinizin başarısını nasıl ölçeceğinize karar vermektir. ve uygulamanızın bu bilgiyi ne kadar iyi test edebildiğini test etmek için modelin farklı sürümleri bu metriğe göre performans gösterir.
A/B Testi'nde gelir, günlük ve bütçe gibi çeşitli yerleşik metrikler bulunur. en iyi uygulamaları paylaşacağız. Bu metrikler çoğu zaman test ve farklı kullanıcı deneyimi akışları veya ince ayar parametreleri olsa da ve kullanım alanınızı değerlendirme. Böyle durumlarda optimizasyon yapmasına yardımcı olur.
Örnek olarak, varsayımsal görsel bitki arama özelliğini kullandıkça, bitki arama kullanıcılarınıza, modelin güven derecesine göre sıralayarak her sonuç. Modelinizin doğruluğu hakkında fikir edinmenin bir yolu, Kullanıcıların ilk arama sonucunu ne sıklıkta açtığına bakılır.
En iyi sonuç tıklamalarını artırma hedefine en çok hangi modelin ulaştığını test etmek için bir kullanıcı sonuçtaki ilk öğeye her dokunduğunda özel bir etkinlik kaydedersiniz liste'ye dokunun.
Swift
Analytics.logEvent("first_result_opened", parameters: nil)
Objective-C
[FIRAnalytics logEventWithName:@"first_result_opened" parameters:nil];
Test edeceğiniz metrik, uygulamanızın model.
Bu noktada, uygulamanızı App Store'a dağıtabilirsiniz. Uygulamanız orijinal modelinizi kullanmaya devam eder. Ancak eklediğiniz Remote Config ve Analytics kodu, farklı özellikleri Firebase konsolunu kullanarak farklı modellere erişebilirsiniz.
3. A/B Testi denemesi çalıştırma
Uygulamanız artık kullanıcılarınızın analiz verileri topluyor. yeni uygulamanızı kullanmanın etkisini test eden bir A/B Testi denemesi ilişkilendirme modelini kullanır.
Denemeyi oluşturmak için:
-
Etkinliklerde sayfasına giderek ilgili Analytics etkinlikleri: etkinleştirme etkinliği ve hedef metriği.
Uygulamanızın, Firebase konsolu.
-
Firebase konsolunda A/B Testi bölümünü açın.
-
Yeni bir deneme oluşturun:
Deneme oluştur > Remote Config'i seçin.
-
Hedefleme bölümünde:
- Listeden uygulamanızı seçin
- Kaç kullanıcınızı dahil etmek istediğinizi deneme
- Giriş yapmaya başladığınız etkinleştirme etkinliğini seçin (bu örnekte, nondefault_model_downloaded (yalnızca varsayılan olarak değil)
-
Hedefler bölümünde, belirlediğiniz hedef metriğini seçin önceki bölüm (bu örnekte, first_result_opened) seçin ve belirlediğiniz diğer metrikleri, (satın alma geliri veya kilitlenme sorunu yaşamayan kullanıcılar gibi) izlemek istedikleriniz.
-
Varyantlar bölümünde iki varyantı tanımlayın:
- Kontrol grubu (otomatik oluşturulan)
- Deneysel bitki etiketleyici
Kontrol grubu için bir
plant_labeler_model
parametresini alıpplant_labeler_v1
. Kontrol grubuna atanan kullanıcılar eski modeli kullanacak. (Uygulamanızda kullandığınızdan emin olmak için parametreyi(no change)
olarak ayarlamayın. uzaktan kumanda değeri.)Deneysel bitki etiketleyici varyantı için
plant_labeler_model
parametresiniplant_labeler_v2
(yeni modelinizi yayınladığınız varsayıldığında) adı altında) kullanabilirsiniz. Bu varyanta atanan kullanıcılar yeni varyantı kullanacak model.
Denemeyi başlatın ve tamamlanana kadar birkaç gün veya daha uzun süre çalıştırın. A/B Testi bir lider tanımladı. Deneme bir öncü belirleyemezse denemeyi daha fazla kullanıcıya genişletin.
4. Kazanan varyantı tüm kullanıcılara sunun
A/B Testi kullanıcının dönüşüm gerçekleştireceğini beyan etmek için lider; bu örnekte, en iyi arama sonucunu en üst düzeye çıkaran varyant Kazanan varyantın mı (veya başka bir varyantın mı) kullanıma sunulacağına karar verebilirsiniz. varyantı) sunun.
Firebase konsolunun A/B Testi bölümünde ayrıntıları açın bir görünümünü elde edersiniz. Bu görünümden her varyantın performans, hedef metriğinize ve seçtiğiniz ikincil metriklere göre belirtilir. Bu bilgiler ışığında, öncü varyantı kullanıma sunup sunmayacağınıza karar verebilirsiniz. kullanabilirsiniz.
Bir varyantı tüm kullanıcılara sunmak için şunu tıklayın:
more_vert > Varyantı şurada kullanıma sunun:
denemenizin ayrıntılar sayfasına gidin. Bunu yaptığınızda,
plant_labeler_model
parametresi plant_labeler_v2
olacak
kullanıcı başına ortalama gelirdir.
Gelecekteki bir uygulama güncellemesinde,
plant_labeler_model
parametresini plant_labeler_v2
olarak ayarlayıp paketlenen
modeli hakkında bilgi edinin. Ancak kullanıcılarınız zaten en son modeli kullanıyor. Bu nedenle,
uygun bir zamanda bu güncellemeyi, yayınlanan uygulamanın bir parçası olarak aktarabilirsiniz.
Örneğin bir özellik güncellemesi yaptığınızda.