Firebase Machine Learning を使用してカスタムモデルをホストしている場合は、2027 年 6 月 15 日に Firebase ML ホスティング サービスがシャットダウンされる前に、別のソリューションに移行する必要があります。
別の方法として、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 コンソールで、[データベースとストレージ] > [ストレージ] に移動し、オンボーディングの手順に沿ってバケットを作成します(まだ作成していない場合)。これには課金アカウントが必要です。詳しくは、Firebase の料金をご覧ください。
- [ストレージ] セクションで、
.tfliteモデルファイルを目的のパスにアップロードします。
モデルを一括でアップロードする
- Storage バケットを作成します。Firebase コンソールで、[データベースとストレージ] > [ストレージ] に移動し、オンボーディングの手順に沿ってバケットを作成します(まだ作成していない場合)。これには課金アカウントが必要です。詳しくは、Firebase の料金をご覧ください。
次の
gcloudコマンドを使用して、ローカルのhosted_modelsフォルダからすべてのモデルをアップロードします。gcloud storage rsync --recursive ./hosted_models gs://<your-storage-bucket>/models/
セキュリティとアプリの統合を構成する
ストレージ セキュリティ ルールで、アプリがモデルファイルを読み取れるようにします。たとえば、認証済みユーザーにアクセスを制限できます。
新しい 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 よりもハードウェア アクセラレーションのサポートが改善され、その他の改善も行われています。