Firebase Summit is happening now. Tune in to learn how Firebase can help you accelerate app development, gain actionable insights and scale with ease. Join now
Diese Seite wurde von der Cloud Translation API übersetzt.
Switch to English

Stellen Sie benutzerdefinierte Modelle bereit und verwalten Sie sie

Sie können benutzerdefinierte Modelle und von AutoML geschulte Modelle mithilfe der Firebase-Konsole oder der Firebase Admin Python- und Node.js-SDKs bereitstellen und verwalten. Wenn Sie nur ein Modell bereitstellen und gelegentlich aktualisieren möchten, ist es normalerweise am einfachsten, die Firebase-Konsole zu verwenden. Das Admin-SDK kann bei der Integration in Build-Pipelines, bei der Arbeit mit Colab- oder Jupyter-Notebooks und anderen Workflows hilfreich sein.

Bereitstellen und Verwalten von Modellen in der Firebase-Konsole

TensorFlow Lite Modelle

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

  1. Öffnen Sie die Seite "Benutzerdefiniertes Firebase ML-Modell" in der Firebase-Konsole.
  2. Klicken Sie auf Benutzerdefiniertes Modell hinzufügen (oder Anderes Modell hinzufügen ).
  3. Geben Sie einen Namen an, der zur Identifizierung Ihres Modells in Ihrem Firebase-Projekt verwendet wird, und laden Sie dann die TensorFlow Lite-Modelldatei .tflite (die normalerweise mit .tflite oder .lite ).

Nachdem Sie Ihr Modell bereitgestellt haben, finden Sie es auf der Seite Benutzerdefiniert. Von dort aus können Sie Aufgaben wie das Aktualisieren des Modells mit einer neuen Datei, das Herunterladen des Modells und das Löschen des Modells aus Ihrem Projekt ausführen.

AutoML TensorFlow Lite-Modelle

Nachdem Sie ein Modell in der Firebase-Konsole trainiert haben, können Sie das Modell bereitstellen, indem Sie es veröffentlichen .

Sie finden Ihre bereitgestellten Modelle auf der AutoML-Seite der Firebase-Konsole. Von dort aus können Sie die Präzisions- und Genauigkeitsdaten des Modells anzeigen oder das Modell löschen.

Bereitstellen und Verwalten von Modellen mit dem Firebase Admin SDK

In diesem Abschnitt wird gezeigt, wie Sie allgemeine Modellbereitstellungs- und -verwaltungsaufgaben mit dem Admin SDK ausführen können. Weitere Hilfe finden Sie in der SDK-Referenz für Python oder Node.js.

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

Bevor Sie beginnen

  1. Wenn Sie noch kein Firebase-Projekt haben, erstellen Sie ein neues Projekt in der Firebase-Konsole . Öffnen Sie dann Ihr Projekt und gehen Sie wie folgt 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, da sie Administratorzugriff auf Ihr Projekt gewährt.

    2. Aktivieren Sie auf der Seite Speicher den Cloud-Speicher. Notieren Sie sich Ihren Eimernamen.

      Sie benötigen einen Storage Bucket, um Modelldateien vorübergehend zu speichern, während Sie sie Ihrem Firebase-Projekt hinzufügen. Wenn Sie sich im Blaze-Plan befinden, können Sie für diesen Zweck einen anderen als den Standard-Bucket erstellen und verwenden.

    3. Klicken Sie auf der Seite Firebase ML auf Erste Schritte, wenn Sie Firebase ML noch nicht aktiviert haben.

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

  3. Installieren und initialisieren Sie das Admin SDK .

    Geben Sie beim Initialisieren des SDK Ihre Anmeldeinformationen für das Dienstkonto und den Speicherbereich an, 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();
    

Stellen Sie Modelle bereit

TensorFlow Lite-Dateien

Laden Sie ein TensorFlow Lite-Modell aus einer Modelldatei in Ihr Projekt hoch und veröffentlichen Sie es anschließend:

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 von TensorFlow gespeicherten Modellformat in TensorFlow Lite konvertieren und in einem einzigen Schritt in Ihren Cloud Storage-Bucket hochladen. Stellen Sie es dann genauso bereit wie eine TensorFlow Lite-Datei.

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 einem einzigen Schritt hochladen. 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.)
# ...

Oder Sie können 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 mit AutoML trainiertes Modell in der Firebase-Konsole veröffentlichen, ist es vollständig bereitgestellt und kann auf die Geräte der Benutzer heruntergeladen werden.

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

Sie müssen die Ressourcen-ID des Modells angeben. Hierbei handelt es sich um eine Zeichenfolge, die wie im folgenden Beispiel aussieht:

projects/PROJECT_NUMBER/locations/STORAGE_LOCATION/models/MODEL_ID
PROJECT_NUMBER Die Projektnummer des Cloud Storage-Buckets, der das Modell enthält. Dies kann Ihr Firebase-Projekt oder ein anderes Cloud-Projekt sein. Sie finden diesen Wert auf der Seite "Einstellungen" der Firebase-Konsole oder im Dashboard der Cloud-Konsole.
STORAGE_LOCATION Der Ressourcenspeicherort des Cloud-Speicher-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);

Listen Sie die Modelle Ihres Projekts auf

Sie können die Modelle Ihres Projekts auflisten und optional die Ergebnisse 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 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 die Präfixübereinstimmung 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 und Klammern ( ( , ) ).

Modelle aktualisieren

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

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

Modelle veröffentlichen oder löschen

Um die Veröffentlichung eines Modells aufzuheben oder zu löschen, übergeben Sie die Modell-ID an die Aufhebungs- oder Löschmethode. Wenn Sie die Veröffentlichung eines Modells aufheben, verbleibt es in Ihrem Projekt, kann jedoch nicht von Ihren Apps heruntergeladen werden. Wenn Sie ein Modell löschen, wird es vollständig aus Ihrem Projekt entfernt. (Das Aufheben der Veröffentlichung eines Modells wird in einem Standardworkflow nicht erwartet. Sie können es jedoch verwenden, um die Veröffentlichung eines neuen Modells, das Sie versehentlich veröffentlicht haben und das noch nirgendwo verwendet wird, oder in Fällen, in denen es für Benutzer schlechter ist, ein "schlechtes" herunterzuladen, sofort aufzuheben. Modell als um nicht gefundene Modellfehler zu erhalten.)

Wenn Sie noch keinen Verweis auf das Modellobjekt haben, müssen Sie wahrscheinlich die Modell-ID abrufen, indem Sie die Modelle Ihres Projekts mit einem Filter auflisten. So löschen Sie beispielsweise alle Modelle mit dem Tag "face_detector":

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