Migrar modelos do TensorFlow Lite do Firebase ML para o Cloud Storage

Se você usa o Firebase Machine Learning para hospedar modelos personalizados, migre para outra solução antes que o serviço de hospedagem do Firebase ML seja desativado em 15 de junho de 2027.

Uma alternativa é hospedar seus modelos usando o Cloud Storage para Firebase. Siga este guia para migrar seus modelos do Firebase ML para o Cloud Storage.

Baixar modelos do TensorFlow Lite

Se você ainda não tiver os modelos armazenados localmente, faça o download deles no seu projeto do Firebase. Você tem duas opções para fazer isso:

Baixe um de cada vez no console do Firebase.

  1. Abra a seção da página Machine Learning no Console do Firebase.
  2. Para cada modelo que você quer migrar, clique no menu flutuante de três pontos e em Fazer o download do modelo.

Baixar todos os modelos hospedados em massa

  1. Abra a página Machine Learning no Console do Firebase.
  2. Clique no botão Obter comando para download em massa e receba um comando curl que baixa todos os modelos do projeto. Esses URLs expiram em 7 dias.
  3. Execute o comando no terminal local ou no Cloud Shell. Se você estiver usando o Cloud Shell, observe o limite de armazenamento em disco de 5 GB. O comando vai baixar seus modelos para uma pasta local chamada hosted_models.

Hospedar modelos usando o Cloud Storage

Depois de ter os modelos localmente, faça upload deles para um bucket do Cloud Storage.

Escolha o método de upload que atenda às suas necessidades:

Fazer upload dos modelos um de cada vez

  1. Crie um bucket do Storage: no console do Firebase, acesse Bancos de dados e armazenamento > Storage e siga as etapas de integração para criar um bucket, se ainda não tiver feito isso. Isso exige uma conta de faturamento. Consulte os preços do Firebase para mais detalhes.
  2. Ainda na seção Armazenamento, faça upload dos arquivos do modelo .tflite para o caminho desejado.

Fazer upload de modelos em massa

  1. Crie um bucket do Storage: no console do Firebase, acesse Bancos de dados e armazenamento > Storage e siga as etapas de integração para criar um bucket, se ainda não tiver feito isso. Isso exige uma conta de faturamento. Consulte os preços do Firebase para mais detalhes.
  2. Use o comando gcloud a seguir para fazer upload de todos os modelos da pasta hosted_models local:

    gcloud storage rsync --recursive ./hosted_models gs://<your-storage-bucket>/models/

Configurar a segurança e a integração de apps

  1. Verifique se as regras de segurança do Storage permitem que o app leia os arquivos de modelo. Por exemplo, é possível restringir o acesso a usuários autenticados.

  2. Adicione o Storage ao seu app: siga os guias de configuração para Android, Apple ou Flutter.

  3. Atualize o código do aplicativo para baixar os arquivos .tflite do novo bucket do Storage.

    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;
      }
    });
    

    Depois que o modelo for baixado, você poderá usar a biblioteca do Tensorflow Lite para carregar e usar o modelo.

  4. (Opcional) Considere usar a Configuração remota do Firebase para atualizar dinamicamente os caminhos do modelo no seu app sem precisar de um novo lançamento.

Opcional: migrar para a API LiteRT CompiledModel

Se o app ainda usar a API Interpreter legada do TensorFlow Lite, considere migrar para a API CompiledModel do LiteRT, que oferece suporte aprimorado para aceleração de hardware e outras melhorias em relação à API legada.