Migra modelos de TensorFlow Lite de Firebase ML a Cloud Storage

Si usas Firebase Machine Learning para alojar modelos personalizados, debes migrar a otra solución antes de que se cierre el servicio de hosting de Firebase ML el 15 de junio de 2027.

Una alternativa que puedes usar es alojar tus modelos con Cloud Storage para Firebase. Sigue esta guía para migrar tus modelos de Firebase ML a Cloud Storage.

Descarga tus modelos de TensorFlow Lite

Si aún no tienes tus modelos almacenados de forma local, descárgalos desde tu proyecto de Firebase. Tienes dos opciones para hacerlo:

Descargarlos de a uno desde Firebase console

  1. Abre la sección de la página Aprendizaje automático en Firebase console.
  2. Para cada modelo que desees migrar, haz clic en el menú ampliado de tres puntos y, luego, en Descargar modelo.

Descarga de forma masiva todos tus modelos alojados

  1. En Firebase console, abre la página Aprendizaje automático.
  2. Haz clic en el botón Obtener comando para descarga masiva para obtener un comando curl que descargue todos los modelos del proyecto. Estas URLs vencerán en 7 días.
  3. Ejecuta el comando en tu terminal local o en Cloud Shell. Si usas Cloud Shell, ten en cuenta su límite de almacenamiento en disco de 5 GB. El comando descargará tus modelos en una carpeta local llamada hosted_models.

Aloja tus modelos con Cloud Storage

Una vez que tengas los modelos de forma local, deberás subirlos a un bucket de Cloud Storage.

Elige el método de carga que se adapte a tus necesidades:

Sube tus modelos de a uno

  1. Crea un bucket de Storage: En Firebase console, navega a Bases de datos y almacenamiento > Storage y sigue los pasos de incorporación para crear un bucket si aún no lo hiciste. Ten en cuenta que esto requiere una cuenta de facturación. Consulta los precios de Firebase para obtener más detalles.
  2. En la sección Storage, sube los archivos del modelo .tflite a la ruta de acceso deseada.

Sube tus modelos de forma masiva

  1. Crea un bucket de Storage: En Firebase console, navega a Bases de datos y almacenamiento > Storage y sigue los pasos de incorporación para crear un bucket si aún no lo hiciste. Ten en cuenta que esto requiere una cuenta de facturación. Consulta los precios de Firebase para obtener más detalles.
  2. Usa el siguiente comando gcloud para subir todos los modelos desde tu carpeta local hosted_models:

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

Configura la seguridad y la integración de la app

  1. Asegúrate de que tus reglas de seguridad de Storage permitan que tu app lea los archivos del modelo. Por ejemplo, puedes restringir el acceso a los usuarios autenticados.

  2. Agrega Storage a tu app: Sigue las guías de configuración para Android, Apple o Flutter.

  3. Actualiza el código de la aplicación para descargar los archivos .tflite de tu nuevo bucket de 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;
      }
    });
    

    Una vez que se descargue el modelo, puedes usar tu biblioteca existente de TensorFlow Lite para cargarlo y usarlo.

  4. (Opcional) Considera usar Firebase Remote Config para actualizar de forma dinámica las rutas de los modelos en tu app sin necesidad de lanzar una nueva versión.

Opcional: Migra a la API de LiteRT CompiledModel

Si tu app aún usa la API de Interpreter heredada de TensorFlow Lite, considera migrar a la API de CompiledModel de LiteRT, que ofrece mejor compatibilidad con la aceleración por hardware y otras mejoras en comparación con la API heredada.