Yeni bir özel modeli veya AutoML Vision Edge modelini eğittikten sonra şunları kullanabilirsiniz: A/B Testing kullanarak yeni modelin gerçek dünya koşullarında ne kadar iyi performans gösterdiğini öğrenebilirsiniz. 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 ekler. Bu özellik sayesinde A/B Testing, 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, daha sonra
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 Testing; gelir, günlük ve bütçe dahil olmak üzere yerleşik metriklere sahiptir. 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 modeli.
Bu noktada, uygulamanızı App Store'a dağıtabilirsiniz. Uygulamanız orijinal modelinizi kullanmaya devam eder. ancak eklediğiniz Remote Config ve Analytics kodu, deneme yapmanıza yalnızca Firebase konsolunu kullanarak farklı modellerle gerçekleştirebilirsiniz.
3. A/B Testing denemesi çalıştırın
Uygulamanız artık kullanıcılarınızın analiz verileri topluyor. yeni örnek uygulamanızı kullanmanın etkisini test eden bir A/B Testing ilişkilendirme modelini kullanır.
Denemeyi oluşturmak için:
-
Etkinliklerde Firebase konsolunun ilgili sayfasına giderek ilgili Analytics etkinlikleri: etkinleştirme etkinliği ve hedef metriği.
Uygulamanızın, Firebase konsolu.
-
Firebase konsolunda A/B Testing bölümünü açın.
-
Yeni bir deneme oluşturun:
Deneme oluştur > Remote Config değerleridir.
-
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 GCLID yerine(no change)
gibi alan adı kullandığınızdan emin olun uzaktan kumanda olarak ayarlanır.)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 modeli.
Denemeyi başlatın ve tamamlanana kadar birkaç gün veya daha uzun süre çalıştırın. A/B Testing lider ilan ediyor. Deneme bir öncü belirleyemezse denemeyi daha fazla kullanıcıyı kapsayacak şekilde genişletin.
4. Kazanan varyantı tüm kullanıcılara sunun
A/B Testing tarafından beyan için yeterli bilgi toplandıktan sonra 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 Testing 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.