Firebase Machine Learning を使用して カスタムモデルをホストしている場合は、Firebase ML ホスティング サービスが 2027 年 6 月 15 日にシャットダウンされる前に、別のソリューションに移行する必要があります。
代替手段として、Cloud Storage for Firebase を使用してモデルをホストする方法があります。Firebase ML から Cloud Storage にモデルを移行するには、こちらのガイドをご覧ください。
TensorFlow Lite モデルをダウンロードする
モデルがローカルに保存されていない場合は、Firebase プロジェクトからダウンロードします。ダウンロード方法は次の 2 つです。
Firebase コンソールから 1 つずつダウンロードする
- Firebase コンソールの [Machine Learning] ページ セクションを開きます。
- 移行するモデルごとに、その他アイコンをクリックし、[モデルをダウンロード] をクリックします。
ホストされているすべてのモデルを一括でダウンロードする
- Firebase コンソールの [Machine Learning] ページを開きます。
- [一括ダウンロードのコマンドを取得] ボタンをクリックして、プロジェクト内のすべてのモデルをダウンロードする
curlコマンドを取得します。これらの URL は 7 日後に期限切れになります。 - コマンドをローカル ターミナルまたは
Cloud Shell で実行します。Cloud Shell を使用する場合は、
5 GB のディスク ストレージ制限に注意してください。
コマンドを実行すると、モデルが
hosted_modelsという名前のローカル フォルダにダウンロードされます。
Cloud Storage を使用してモデルをホストする
モデルをローカルに保存したら、Cloud Storage バケットにアップロードする必要があります。
ニーズに合ったアップロード方法を選択してください。
モデルを 1 つずつアップロードする
- Storage バケットを作成します。Firebase コンソールで、 [データベースとストレージ] > [Storage] に移動し、オンボーディングの手順に沿ってバケットを作成します。これには課金アカウントが必要です。詳細については、 Firebase の料金をご覧ください。
- 引き続き [Storage] セクションで、
.tfliteモデルファイルを目的のパスにアップロードします。
モデルを一括でアップロードする
- Storage バケットを作成します。Firebase コンソールで、 [データベースとストレージ] > [Storage] に移動し、オンボーディングの手順に沿ってバケットを作成します。これには課金アカウントが必要です。詳細については、 Firebase の料金をご覧ください。
次の
gcloudコマンドを使用して、ローカルのhosted_modelsフォルダからすべてのモデルをアップロードします。gcloud storage rsync --recursive ./hosted_models gs://<your-storage-bucket>/models/
セキュリティとアプリの統合を構成する
Storage セキュリティ ルールで、アプリがモデルファイルを読み取れるようにします。たとえば、認証済みユーザーにのみアクセスを制限できます。
アプリに Storage を追加します。設定ガイドに沿って操作してください。 Android、 Apple、 または Flutter
新しい Storage バケットから
.tfliteファイルをダウンロードするようにアプリケーション コードを更新します。Android
modelRef = storage.getReferenceFromUrl("gs://YOUR_BUCKET/path/to/model.tflite") val localFile = File.createTempFile("models", "tflite") modelRef.getFile(localFile).addOnSuccessListener { // Local temp file has been created }.addOnFailureListener { // Handle any errors }Apple
let gsReference = storage.reference(forURL: "gs://YOUR_BUCKET/path/to/model.tflite") // Create local filesystem URL let localURL = URL(string: "path/to/model.tflite")! // Download to the local filesystem let downloadTask = gsReference.write(toFile: localURL) { url, error in if let error = error { // Uh-oh, an error occurred! } else { // Local file URL for "model.tflite" is returned } }Flutter
final modelRef = FirebaseStorage.instance.refFromURL("gs://YOUR_BUCKET/path/to/model.tflite"); final appDocDir = await getApplicationDocumentsDirectory(); final filePath = "${appDocDir.absolute}/models/model.tflite"; final file = File(filePath); final downloadTask = modelRef.writeToFile(file); downloadTask.snapshotEvents.listen((taskSnapshot) { switch (taskSnapshot.state) { case TaskState.running: // TODO: Handle this case. break; case TaskState.paused: // TODO: Handle this case. break; case TaskState.success: // TODO: Handle this case. break; case TaskState.canceled: // TODO: Handle this case. break; case TaskState.error: // TODO: Handle this case. break; } });モデルがダウンロードされたら、既存の Tensorflow Lite ライブラリを使用してモデルを読み込み、使用できます。
(省略可) Firebase Remote Config を使用して、新しいリリースを必要とせずにアプリ内のモデルパスを動的に更新することを検討してください。
省略可: LiteRT CompiledModel API に移行する
アプリで引き続き従来の TensorFlow Lite Interpreter API を使用している場合は、
LiteRT CompiledModel API への移行を検討してください。
この API は、従来の API よりもハードウェア アクセラレーションのサポートが強化され、その他の機能も改善されています。