Se usó la API de Cloud Translation para traducir esta página.
Switch to English

Implemente y gestione modelos personalizados

Puede implementar y administrar modelos personalizados utilizando la consola Firebase o Firebase Admin Python y Node.js SDK. Si solo desea implementar un modelo y actualizarlo ocasionalmente, generalmente es más simple usar la consola Firebase. Admin SDK puede ser útil cuando se integra con canales de compilación, trabajando con portátiles Colab o Jupyter y otros flujos de trabajo.

Implemente y administre modelos en la consola de Firebase

Para implementar un modelo TensorFlow Lite usando la consola Firebase:

  1. Abre la página del modelo Firebase ML Custom en la consola de Firebase.
  2. Haga clic en Agregar modelo personalizado (o Agregar otro modelo ).
  3. Especifique un nombre que se utilizará para identificar su modelo en su proyecto de Firebase, luego cargue 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 Personalizada. A partir de ahí, puede completar tareas como actualizar el modelo con un nuevo archivo, descargar el modelo y eliminar el modelo de su proyecto.

Implemente y administre modelos con Firebase Admin SDK

Esta sección muestra cómo puede completar tareas comunes de implementación y administración de modelos con el SDK de administración. Consulte la referencia del SDK para Python o Node.js para obtener ayuda adicional.

Para ver ejemplos del SDK en uso, consulte el ejemplo de inicio rápido de Python y el ejemplo 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 la consola de Firebase . 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 le otorga acceso de administrador a su proyecto.

    2. En la página Almacenamiento, habilite Almacenamiento en la nube. Toma nota del nombre de tu cubo.

      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 diferente al 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 API de Google , abra su proyecto de Firebase y active la API de Firebase ML.

  3. Instale e inicialice el SDK de administrador .

    Cuando inicialice el SDK, especifique las credenciales de su cuenta de servicio y el depósito de almacenamiento que desea usar para almacenar sus 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

Para implementar un modelo TensorFlow Lite, cárguelo en su proyecto y luego publíquelo:

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)
 

Si su modelo está en el formato de modelo guardado de TensorFlow, puede convertirlo a TensorFlow Lite y cargarlo en su depósito de Cloud Storage en un solo paso:

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

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

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

 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 bien, puede convertir y cargar un modelo de Keras directamente desde su script de entrenamiento:

 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.)
# ...
 

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

Liste 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

 // 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) {
      console.log(`${model.displayName} (ID: ${model.modelId})`);
    }
  } while (pageToken != null);

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

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 los filtros con los operadores y paréntesis AND , OR y NOT ( ( , ) ).

Actualizar modelos

Después de agregar 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.
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 cancelar la publicación o eliminación de un modelo, pase la ID del modelo a los métodos de publicación o eliminación. Cuando cancela 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 cancelar la publicación de un modelo en un flujo de trabajo estándar, pero puede usarlo para cancelar inmediatamente la publicación de un nuevo modelo que publicó accidentalmente y que aún no se está utilizando en ningún lugar, o en los casos en que es peor para los usuarios descargar un "mal" modelo que obtener errores de modelo no encontrado).

Si aún no tiene una referencia al objeto Modelo, probablemente necesite obtener la 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);