Uygulamanızda özel TensorFlow Lite modelleri kullanılıyorsa modellerinizi dağıtmak için Firebase ML'yi kullanabilirsiniz. Firebase ile modelleri dağıtarak uygulamanızın ilk indirme boyutunu küçültebilir ve uygulamanızın makine öğrenimi modellerini yeni bir uygulama sürümü yayınlamadan güncelleyebilirsiniz. Ayrıca, Remote Config ve A/B Testi ile farklı kullanıcı gruplarına dinamik olarak farklı modeller sunabilirsiniz.
TensorFlow Lite modelleri
TensorFlow Lite modelleri, mobil cihazlarda çalışacak şekilde optimize edilmiş makine öğrenimi modelleridir. TensorFlow Lite modeli edinmek için:
- Resmi TensorFlow Lite modellerinden biri gibi önceden oluşturulmuş bir model kullanın.
- TensorFlow modelini, Keras modelini veya somut işlevi TensorFlow Lite'a dönüştürme.
Dart için bakımı yapılan bir TensorFlow Lite kitaplığı olmadığından, platformlarınız için yerel TensorFlow Lite kitaplığıyla entegrasyon yapmanız gerektiğini unutmayın. Bu entegrasyon burada belgelendirilmemiştir.
Başlamadan önce
Henüz yapmadıysanız Flutter için Firebase SDK'larını yükleyin ve başlatın.
Flutter projenizin kök dizininden aşağıdaki komutu çalıştırarak ML model indirici eklentisini yükleyin:
flutter pub add firebase_ml_model_downloaderProjenizi yeniden oluşturun:
flutter run
1. Modelinizi dağıtma
Özel TensorFlow modellerinizi Firebase konsolunu veya Firebase Admin Python ve Node.js SDK'larını kullanarak dağıtın. Özel modelleri dağıtma ve yönetme başlıklı makaleyi inceleyin.
Firebase projenize özel bir model ekledikten sonra, belirttiğiniz adı kullanarak uygulamalarınızdaki modele referansta bulunabilirsiniz. Dilediğiniz zaman yeni bir TensorFlow Lite modeli dağıtabilir ve getModel() işlevini çağırarak (aşağıya bakın) yeni modeli kullanıcıların cihazlarına indirebilirsiniz.
2. Modeli cihaza indirin ve TensorFlow Lite yorumlayıcısını başlatın
TensorFlow Lite modelinizi uygulamanızda kullanmak için önce model indiriciyi kullanarak modelin en son sürümünü cihaza indirin. Ardından, modelle bir TensorFlow Lite yorumlayıcısı oluşturun.
Model indirme işlemini başlatmak için model indiricinin getModel() yöntemini çağırın. Bu yöntemi çağırırken modeli yüklediğinizde atadığınız adı, her zaman en son modeli indirmek isteyip istemediğinizi ve indirmeye izin vermek istediğiniz koşulları belirtin.
Üç indirme davranışından birini seçebilirsiniz:
| İndirme türü | Açıklama |
|---|---|
localModel
|
Cihazdan yerel modeli alın.
Yerel model yoksa bu işlev latestModel gibi çalışır. Model güncellemelerini kontrol etmekle ilgilenmiyorsanız bu indirme türünü kullanın. Örneğin, model adlarını almak için Remote Config'i kullanıyorsunuz ve modelleri her zaman yeni adlarla yüklüyorsunuz (önerilir). |
localModelUpdateInBackground
|
Cihazdan yerel modeli alın ve modeli arka planda güncellemeye başlayın.
Yerel model yoksa bu işlev latestModel gibi çalışır. |
latestModel
|
En yeni modeli edinin. Yerel model en son sürümse yerel modeli döndürür. Aksi takdirde en son modeli indirin. Bu davranış, en son sürüm indirilene kadar engellenir (önerilmez). Bu davranışı yalnızca en son sürüme açıkça ihtiyaç duyduğunuz durumlarda kullanın. |
Modelin indirildiğini onaylayana kadar modele ilişkin işlevleri devre dışı bırakmanız gerekir. Örneğin, kullanıcı arayüzünüzün bir bölümünü grileştirin veya gizleyin.
FirebaseModelDownloader.instance
.getModel(
"yourModelName",
FirebaseModelDownloadType.localModel,
FirebaseModelDownloadConditions(
iosAllowsCellularAccess: true,
iosAllowsBackgroundDownloading: false,
androidChargingRequired: false,
androidWifiRequired: false,
androidDeviceIdleRequired: false,
)
)
.then((customModel) {
// Download complete. Depending on your app, you could enable the ML
// feature, or switch from the local model to the remote model, etc.
// The CustomModel object contains the local path of the model file,
// which you can use to instantiate a TensorFlow Lite interpreter.
final localModelPath = customModel.file;
// ...
});
Birçok uygulama, başlatma kodunda indirme görevini başlatır ancak modeli kullanmanız gerekmeden önce istediğiniz zaman bu işlemi yapabilirsiniz.
3. Giriş verileri üzerinde çıkarım yapma
Model dosyanız cihazda olduğuna göre çıkarım yapmak için TensorFlow Lite yorumlayıcısıyla kullanabilirsiniz. Dart için bakımı yapılan bir TensorFlow Lite kitaplığı olmadığından iOS ve Android için yerel TensorFlow Lite kitaplıklarıyla entegrasyon yapmanız gerekir.
Ek: Model güvenliği
TensorFlow Lite modellerinizi Firebase ML'ye nasıl sunduğunuzdan bağımsız olarak Firebase ML, bu modelleri yerel depolama alanında standart serileştirilmiş protobuf biçiminde depolar.
Bu, teorik olarak herkesin modelinizi kopyalayabileceği anlamına gelir. Ancak uygulamada, çoğu model uygulamaya özeldir ve optimizasyonlarla karartıldığından risk, rakiplerin kodunuzu söküp yeniden kullanmasıyla benzerdir. Bununla birlikte, uygulamanızda özel bir model kullanmadan önce bu riskin farkında olmanız gerekir.