Benutzerdefinierte Modelle bereitstellen und verwalten

Sie können benutzerdefinierte und von AutoML trainierte Modelle mit einem der folgenden Tools bereitstellen und verwalten: der Firebase Console oder den Firebase Admin Python und Node.js SDKs Wenn Sie ein Modell bereitstellen und gelegentlich aktualisieren möchten, Verwenden Sie die Firebase-Konsole. Das Admin SDK kann bei der Integration mit Erstellen Sie Pipelines und arbeiten Sie mit Colab- oder Jupyter-Notebooks und anderen Workflows.

Modelle in der Firebase Console bereitstellen und verwalten

TensorFlow Lite-Modelle

So stellen Sie ein TensorFlow Lite-Modell mit der Firebase-Konsole bereit:

  1. Öffnen Sie in der Firebase-Console die Seite Firebase MLBenutzerdefiniertes Modell.
  2. Klicken Sie auf Benutzerdefiniertes Modell hinzufügen oder Weitere Modelle hinzufügen.
  3. Geben Sie einen Namen an, mit dem das Modell in Firebase identifiziert wird und laden Sie dann die TensorFlow Lite-Modelldatei hoch, die in der Regel auf .tflite oder .lite).

Nachdem Sie das Modell bereitgestellt haben, finden Sie es auf der Seite „Benutzerdefiniert“. Anschließend können Sie Aufgaben wie das Aktualisieren des Modells mit einer neuen Datei, das Herunterladen der und löschen Sie das Modell aus Ihrem Projekt.

Modelle mit dem Firebase Admin SDK bereitstellen und verwalten

In diesem Abschnitt erfahren Sie, wie Sie allgemeine Modelle bereitstellen und verwalten. mit dem Admin SDK. Siehe SDK-Referenz für Python oder Node.js.

Beispiele für das verwendete SDK finden Sie in der Python-Schnellstartbeispiel und Node.js-Kurzanleitungsbeispiel

Hinweis

  1. Wenn Sie noch kein Firebase-Projekt haben, erstellen Sie ein neues Projekt im Firebase-Konsole. Öffnen Sie dann Ihr Projekt und gehen Sie so vor:

    1. Erstellen Sie auf der Seite Einstellungen ein Dienstkonto und Laden Sie die Schlüsseldatei des Dienstkontos herunter. Bewahren Sie diese Datei sicher auf, Administratorzugriff auf Ihr Projekt gewährt.

    2. Aktivieren Sie auf der Seite „Speicher“ die Option Cloud Storage. Notieren Sie sich den Namen Ihres Buckets.

      Sie benötigen einen Cloud Storage-Bucket, um Modelldateien vorübergehend zu speichern wenn Sie sie Ihrem Firebase-Projekt hinzufügen. Für den Blaze können Sie einen anderen Bucket als den Standard-Bucket für diesen zu verstehen.

    3. Klicken Sie auf der Firebase ML-Seite auf Jetzt starten, falls Sie das noch nicht getan haben Firebase ML aktiviert.

  2. Öffnen Sie in der Google APIs-Konsole Ihr Firebase-Projekt Projekt erstellen und die Firebase ML API aktivieren.

  3. Installieren und initialisieren Sie das Admin SDK.

    Geben Sie beim Initialisieren des SDK die Anmeldedaten für Ihr Dienstkonto und Den Cloud Storage-Bucket, in dem Sie Ihre Modelle speichern möchten:

    Python

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

Modelle bereitstellen

TensorFlow Lite-Dateien

Laden Sie ein TensorFlow Lite-Modell in Ihr Projekt hoch, um ein TensorFlow Lite-Modell aus einer Modelldatei bereitzustellen und dann veröffentlichen:

Python

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

TensorFlow- und Keras-Modelle

Mit dem Python SDK können Sie ein Modell aus dem in TensorFlow gespeicherten Modellformat konvertieren. in TensorFlow Lite hoch und laden Sie es einmalig in Ihren Cloud Storage-Bucket hoch. Schritt. Stellen Sie es dann auf dieselbe Weise bereit, wie Sie eine TensorFlow Lite-Datei bereitstellen.

Python

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

Wenn Sie ein Keras-Modell haben, können Sie es auch in TensorFlow Lite konvertieren und in nur einem Schritt. Sie können ein Keras-Modell verwenden, das in einer HDF5-Datei gespeichert ist:

Python

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

Alternativ können Sie ein Keras-Modell direkt aus Ihrem Trainingsskript konvertieren und hochladen:

Python

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

AutoML TensorFlow Lite-Modelle

Wenn Sie ein Edge-Modell mit der AutoML Cloud API trainiert haben oder mit der Benutzeroberfläche der Google Cloud Console können Sie das Modell in Firebase bereitstellen: des Admin SDK.

Sie müssen die Ressourcen-ID des Modells angeben, bei der es sich um einen String handelt, sieht so aus:

projects/PROJECT_NUMBER/locations/STORAGE_LOCATION/models/MODEL_ID
PROJECT_NUMBER Die Projektnummer des Cloud Storage-Buckets, der den modellieren. Das könnte Ihr Firebase-Projekt oder ein anderes Google Cloud sein Projekt arbeiten. Diesen Wert finden Sie auf der Seite „Einstellungen“ der Firebase-Konsole oder das Google Cloud-Dashboard der Konsole.
STORAGE_LOCATION Der Ressourcenspeicherort des Cloud Storage-Buckets, der das Modell enthält. Dieser Wert ist immer us-central1.
MODEL_ID Die Modell-ID, die Sie von der AutoML Cloud API erhalten haben.

Python

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

Modelle Ihres Projekts auflisten

Sie können die Modelle Ihres Projekts auflisten und die Ergebnisse optional filtern:

Python

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

Sie können nach den folgenden Feldern filtern:

Feld Beispiele
display_name display_name = example_model
display_name != example_model

Alle Anzeigenamen mit dem Präfix experimental_:

display_name : experimental_*

Beachten Sie, dass nur der Präfixabgleich unterstützt wird.

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

Kombinieren Sie Filter mit den Operatoren AND, OR und NOT sowie Klammern ((, ).

Modelle aktualisieren

Nachdem Sie Ihrem Projekt ein Modell hinzugefügt haben, können Sie seinen Anzeigenamen, Tags und tflite-Modelldatei:

Python

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

Veröffentlichung von Modellen aufheben oder Modelle löschen

Um die Veröffentlichung eines Modells aufzuheben oder ein Modell zu löschen, übergeben Sie die Modell-ID an den . Wenn Sie die Veröffentlichung eines Modells aufheben, bleibt es in Ihrem Projekt, kann aber nicht mehr von Ihren Apps heruntergeladen werden. Wenn Sie ein Modell löschen, wird es vollständig aus Ihrem Projekt entfernt. In einem Standardmodell mit dem Sie die Veröffentlichung eines neuen Modells sofort aufheben können, versehentlich veröffentlicht und nirgends verwendet wird. für Nutzer, die eine "schlechte" Modell zu erhalten, als „model-not-found“ Fehler.)

Wenn Sie noch keinen Verweis auf das Modellobjekt haben, müssen Sie Rufen Sie die Modell-ID ab, indem Sie die Modelle Ihres Projekts mit einem Filter auflisten. Wenn Sie beispielsweise Löschen Sie alle mit „face_ detector“ getaggten Modelle:

Python

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