Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.
Se usó la API de Cloud Translation para traducir esta página.
Switch to English

Implementar y administrar modelos personalizados

Puedes implementar y administrar modelos personalizados y modelos entrenados en AutoML con Firebase console o los SDK de Firebase Admin Python y Node.js. Si solo desea implementar un modelo y actualizarlo ocasionalmente, generalmente es más simple usar la consola de Firebase. El SDK de administrador puede resultar útil cuando se integra con procesos de compilación, se trabaja con cuadernos de Colab o Jupyter y con otros flujos de trabajo.

Implementar y administrar modelos en Firebase console

Modelos de TensorFlow Lite

Para implementar un modelo de TensorFlow Lite con Firebase console:

  1. Abre la página del modelo personalizado de Firebase ML en Firebase console.
  2. Haga clic en Agregar modelo personalizado (o Agregar otro modelo ).
  3. Especifica un nombre que se usará para identificar tu modelo en tu proyecto de Firebase, luego sube el archivo de modelo de TensorFlow Lite (que generalmente termina en .tflite o .lite ).

Después de implementar su modelo, puede encontrarlo en la página Personalizado. Desde allí, puede completar tareas como actualizar el modelo con un nuevo archivo, descargar el modelo y eliminar el modelo de su proyecto.

Modelos de AutoML TensorFlow Lite

Después de entrenar un modelo en Firebase console, puedes implementar el modelo publicándolo .

Puedes encontrar tus modelos implementados en la página de AutoML de Firebase console. Desde allí, puede ver la precisión y los datos de exactitud del modelo o eliminar el modelo.

Implementa y administra modelos con Firebase Admin SDK

En esta sección, se muestra cómo puede completar tareas comunes de implementación y administración de modelos con el SDK de administrador. Consulta la referencia del SDK para Python o Node.js para obtener ayuda adicional.

Para ver ejemplos del SDK en uso, consulte la muestra de inicio rápido de Python y la muestra de inicio rápido de Node.js.

Antes de que empieces

  1. Si aún no tiene un proyecto de Firebase, cree un nuevo proyecto en Firebase console . Luego, abra su proyecto y haga lo siguiente:

    1. En la página Configuración , cree una cuenta de servicio y descargue el archivo de clave de la cuenta de servicio. Mantenga este archivo seguro, ya que otorga acceso de administrador a su proyecto.

    2. En la página Almacenamiento, habilite Almacenamiento en la nube. Tome nota del nombre de su depósito.

      Necesita un depósito de almacenamiento para almacenar temporalmente archivos de modelo mientras los agrega a su proyecto de Firebase. Si está en el plan Blaze, puede crear y usar un depósito que no sea el predeterminado para este propósito.

    3. En la página de Firebase ML, haga clic en Comenzar si aún no ha habilitado Firebase ML.

  2. En la consola de las API de Google , abra su proyecto de Firebase y habilite la API de Firebase ML.

  3. Instale e inicialice el SDK de administrador .

    Cuando inicialices el SDK, especifica las credenciales de tu cuenta de servicio y el depósito de almacenamiento que deseas usar para almacenar tus modelos:

    Pitón

    import firebase_admin
    from firebase_admin import ml
    from firebase_admin import credentials
    
    firebase_admin.initialize_app(
      credentials.Certificate('/path/to/your/service_account_key.json'),
      options={
          'storageBucket': 'your-storage-bucket',
      })
    

    Node.js

    const admin = require('firebase-admin');
    const serviceAccount = require('/path/to/your/service_account_key.json');
    admin.initializeApp({
      credential: admin.credential.cert(serviceAccount),
      storageBucket: 'your-storage-bucket',
    });
    const ml = admin.machineLearning();
    

Implementar modelos

Archivos de TensorFlow Lite

Para implementar un modelo de TensorFlow Lite desde un archivo de modelo, súbelo a tu proyecto y luego publícalo:

Pitón

# First, import and initialize the SDK as shown above.

# Load a tflite file and upload it to Cloud Storage
source = ml.TFLiteGCSModelSource.from_tflite_model_file('example.tflite')

# Create the model object
tflite_format = ml.TFLiteFormat(model_source=source)
model = ml.Model(
    display_name="example_model",  # This is the name you use from your app to load the model.
    tags=["examples"],             # Optional tags for easier management.
    model_format=tflite_format)

# Add the model to your Firebase project and publish it
new_model = ml.create_model(model)
ml.publish_model(new_model.model_id)

Node.js

// First, import and initialize the SDK as shown above.

(async () => {
  // Upload the tflite file to Cloud Storage
  const storageBucket = admin.storage().bucket('your-storage-bucket');
  const files = await storageBucket.upload('./example.tflite');

  // Create the model object and add the model to your Firebase project.
  const bucket = files[0].metadata.bucket;
  const name = files[0].metadata.name;
  const gcsUri = `gs:/⁠/${bucket}/${name}`;
  const model = await ml.createModel({
    displayName: 'example_model',  // This is the name you use from your app to load the model.
    tags: ['examples'],  // Optional tags for easier management.
    tfliteModel: { gcsTfliteUri: gcsUri },
  });

  // Publish the model.
  await ml.publishModel(model.modelId);

  process.exit();
})().catch(console.error);

Modelos de TensorFlow y Keras

Con el SDK de Python, puede convertir un modelo del formato de modelo guardado de TensorFlow a TensorFlow Lite y subirlo a su depósito de Cloud Storage en un solo paso. Luego, impleméntelo de la misma manera que implementa un archivo TensorFlow Lite.

Pitón

# First, import and initialize the SDK as shown above.

# Convert the model to TensorFlow Lite and upload it to Cloud Storage
source = ml.TFLiteGCSModelSource.from_saved_model('./model_directory')

# Create the model object
tflite_format = ml.TFLiteFormat(model_source=source)
model = ml.Model(
    display_name="example_model",  # This is the name you use from your app to load the model.
    tags=["examples"],             # Optional tags for easier management.
    model_format=tflite_format)

# Add the model to your Firebase project and publish it
new_model = ml.create_model(model)
ml.publish_model(new_model.model_id)

Si tiene un modelo de Keras, también puede convertirlo a TensorFlow Lite y cargarlo en un solo paso. Puede utilizar un modelo de Keras guardado en un archivo HDF5:

Pitón

import tensorflow as tf

# Load a Keras model, convert it to TensorFlow Lite, and upload it to Cloud
# Storage
model = tf.keras.models.load_model('your_model.h5')
source = ml.TFLiteGCSModelSource.from_keras_model(model)

# Create the model object, add the model to your project, and publish it. (See
# above.)
# ...

O puede convertir y cargar un modelo de Keras directamente desde su secuencia de comandos de entrenamiento:

Pitón

import tensorflow as tf

# Create a simple Keras model.
x = [-1, 0, 1, 2, 3, 4]
y = [-3, -1, 1, 3, 5, 7]

model = tf.keras.models.Sequential(
    [tf.keras.layers.Dense(units=1, input_shape=[1])])
model.compile(optimizer='sgd', loss='mean_squared_error')
model.fit(x, y, epochs=3)

# Convert the model to TensorFlow Lite and upload it to Cloud Storage
source = ml.TFLiteGCSModelSource.from_keras_model(model)

# Create the model object, add the model to your project, and publish it. (See
# above.)
# ...

Modelos de AutoML TensorFlow Lite

Cuando publicas un modelo que entrenaste con AutoML en Firebase console, está completamente implementado y listo para descargarse en los dispositivos de los usuarios.

Si entrenó un modelo de Edge con la API de AutoML Cloud o con la IU de la consola de Cloud, puede implementar el modelo en Firebase con el SDK de administrador.

Deberá especificar el identificador de recursos del modelo, que es una cadena que se parece al siguiente ejemplo:

projects/PROJECT_NUMBER/locations/STORAGE_LOCATION/models/MODEL_ID
PROJECT_NUMBER El número de proyecto del depósito de Cloud Storage que contiene el modelo. Este podría ser su proyecto de Firebase u otro proyecto de Cloud. Puede encontrar este valor en la página Configuración de Firebase console o en el panel de la consola de Cloud.
STORAGE_LOCATION La ubicación del recurso del depósito de Cloud Storage que contiene el modelo. Este valor siempre es us-central1 .
MODEL_ID El ID del modelo, que obtuvo de AutoML Cloud API.

Pitón

# First, import and initialize the SDK as shown above.

# Get a reference to the AutoML model
source = ml.TFLiteAutoMlSource('projects/{}/locations/{}/models/{}'.format(
    # See above for information on these values.
    project_number,
    storage_location,
    model_id
))

# Create the model object
tflite_format = ml.TFLiteFormat(model_source=source)
model = ml.Model(
    display_name="example_model",  # This is the name you will use from your app to load the model.
    tags=["examples"],             # Optional tags for easier management.
    model_format=tflite_format)

# Add the model to your Firebase project and publish it
new_model = ml.create_model(model)
new_model.wait_for_unlocked()
ml.publish_model(new_model.model_id)

Node.js

// First, import and initialize the SDK as shown above.

(async () => {
  // Get a reference to the AutoML model. See above for information on these
  // values.
  const automlModel = `projects/${projectNumber}/locations/${storageLocation}/models/${modelId}`;

  // Create the model object and add the model to your Firebase project.
  const model = await ml.createModel({
    displayName: 'example_model',  // This is the name you use from your app to load the model.
    tags: ['examples'],  // Optional tags for easier management.
    tfliteModel: { automlModel: automlModel },
  });

  // Wait for the model to be ready.
  await model.waitForUnlocked();

  // Publish the model.
  await ml.publishModel(model.modelId);

  process.exit();
})().catch(console.error);

Enumere los modelos de su proyecto

Puede enumerar los modelos de su proyecto, opcionalmente filtrando los resultados:

Pitón

# First, import and initialize the SDK as shown above.

face_detectors = ml.list_models(list_filter="tags: face_detector").iterate_all()
print("Face detection models:")
for model in face_detectors:
  print('{} (ID: {})'.format(model.display_name, model.model_id))

Node.js

08decada10

Puede filtrar por los siguientes campos:

Campo Ejemplos
display_name display_name = example_model
display_name != example_model

Todos los nombres para mostrar con el prefijo experimental_ :

display_name : experimental_*

Tenga en cuenta que solo se admite la coincidencia de prefijos.

tags tags: face_detector
tags: face_detector AND tags: experimental
state.published state.published = true
state.published = false

Combine filtros con los operadores AND , OR y NOT y los paréntesis ( ( , ) ).

Actualizar modelos

Una vez que haya agregado un modelo a su proyecto, puede actualizar su nombre para mostrar, etiquetas y archivo de modelo tflite :

Pitón

# First, import and initialize the SDK as shown above.

model = ...   # Model object from create_model(), get_model(), or list_models()

# Update the model with a new tflite model. (You could also update with a
# `TFLiteAutoMlSource`)
source = ml.TFLiteGCSModelSource.from_tflite_model_file('example_v2.tflite')
model.model_format = ml.TFLiteFormat(model_source=source)

# Update the model's display name.
model.display_name = "example_model"

# Update the model's tags.
model.tags = ["examples", "new_models"]

# Add a new tag.
model.tags += "experimental"

# After you change the fields you want to update, save the model changes to
# Firebase and publish it.
updated_model = ml.update_model(model)
ml.publish_model(updated_model.model_id)

Node.js

// First, import and initialize the SDK as shown above.

(async () => {
  const model = ... // Model object from createModel(), getModel(), or listModels()

  // Upload a new tflite file to Cloud Storage.
  const files = await storageBucket.upload('./example_v2.tflite');
  const bucket = files[0].metadata.bucket;
  const name = files[0].metadata.name;

  // Update the model. Any fields you omit will be unchanged.
  await ml.updateModel(model.modelId, {
    displayName: 'example_model',  // Update the model's display name.
    tags: model.tags.concat(['new']),  // Add a tag.
    tfliteModel: {gcsTfliteUri: `gs:/⁠/${bucket}/${name}`},
  });

  process.exit();
})().catch(console.error);

Anular la publicación o eliminar modelos

Para anular la publicación o eliminar un modelo, pase la ID del modelo a los métodos de anulación de publicación o eliminación. Cuando anula la publicación de un modelo, permanece en su proyecto, pero no está disponible para que sus aplicaciones lo descarguen. Cuando elimina un modelo, se elimina por completo de su proyecto. (No se espera anular la publicación de un modelo en un flujo de trabajo estándar, pero puede usarlo para anular la publicación de inmediato de un nuevo modelo que publicó accidentalmente y que aún no se está usando en ningún lugar, o en los casos en que es peor para los usuarios descargar un modelo "malo" modelo que para obtener errores de modelo no encontrado).

Si aún no tiene una referencia al objeto Modelo, probablemente necesitará obtener el ID del modelo enumerando los modelos de su proyecto con un filtro. Por ejemplo, para eliminar todos los modelos etiquetados "face_detector":

Pitón

# First, import and initialize the SDK as shown above.

face_detectors = ml.list_models(list_filter="tags: 'face_detector'").iterate_all()
for model in face_detectors:
  ml.delete_model(model.model_id)

Node.js

// First, import and initialize the SDK as shown above.

(async () => {
  let listOptions = {filter: 'tags: face_detector'}
  let models;
  let pageToken = null;
  do {
    if (pageToken) listOptions.pageToken = pageToken;
    ({models, pageToken} = await ml.listModels(listOptions));
    for (const model of models) {
      await ml.deleteModel(model.modelId);
    }
  } while (pageToken != null);

  process.exit();
})().catch(console.error);