Modell bereitstellen

Erste Modellbereitstellung

Durch die Bereitstellung eines Objekterkennungsmodells fallen Gebühren an. Weitere Informationen finden Sie auf der Seite Preise.

Nachdem Sie ein Modell erstellt (trainiert) haben, müssen Sie es bereitstellen, bevor Sie Online- oder synchrone Aufrufe an das Modell senden können.

Sie können die Modellbereitstellung jetzt auch aktualisieren, falls Sie zusätzliche Onlinevorhersagekapazität benötigen.

Web-UI

  1. ffnen Sie die AutoML Vision-Objekterkennungs-UI und wählen Sie in der linken Navigationsleiste den Tab Modelle aus, um die verfügbaren Modelle anzuzeigen.

    Wenn Sie die Modelle für ein anderes Projekt ansehen möchten, wählen Sie das Projekt in der Drop-down-Liste rechts oben in der Titelleiste aus.

  2. Klicken Sie auf die Zeile für das Modell, das Sie verwenden möchten, um die Bilder mit Labels zu versehen.
  3. Wählen Sie den Tab Test und Nutzung direkt unter der Titelleiste aus.
  4. Wählen Sie aus dem Banner unterhalb des Modellnamens Deploy model (Modell bereitstellen) aus, um das Fenster für die Modellbereitstellung zu öffnen.

    Seite zum Testen und Verwenden des Modells Pop-up-Menü zum Bereitstellen

    In diesem Fenster können Sie die Anzahl der Knoten für die Bereitstellung auswählen und sich die verfügbaren Vorhersageabfragen pro Sekunde ansehen.

  5. Wählen Sie Bereitstellen aus, um mit der Modellimplementierung zu beginnen.

    Modell wird bereitgestellt
  6. Sie erhalten eine E-Mail, sobald die Bereitstellung des Modells abgeschlossen ist.

    E-Mail zum Abschluss der Bereitstellung

REST UND BEFEHLSZEILE

Bevor Sie die unten aufgeführten Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

  • project-id: die ID Ihres GCP-Projekts.
  • model-id: die ID Ihres Modells aus der Antwort beim Erstellen des Modells. Sie ist das letzte Element des Modellnamens. Beispiel:
    • Modellname: projects/project-id/locations/location-id/models/IOD4412217016962778756
    • model id: IOD4412217016962778756

Hinweise zu bestimmten Feldern:

  • nodeCount: die Anzahl der Knoten, auf denen das Modell bereitgestellt werden soll. Der Wert muss zwischen 1 und 100 (beide einschließlich) liegen. Ein Knoten ist eine Abstraktion einer Maschinenressource, die so viele Online-Vorhersageabfragen pro Sekunde (Queries per second, QPS) verarbeiten kann, wie im Modell in qps_per_node angegeben.

HTTP-Methode und URL:

POST https://automl.googleapis.com/v1/projects/project-id/locations/us-central1/models/model-id:deploy

JSON-Text der Anfrage:

{
  "imageObjectDetectionModelDeploymentMetadata": {
    "nodeCount": 2
  }
}

Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

curl

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

curl -X POST \
-H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
https://automl.googleapis.com/v1/projects/project-id/locations/us-central1/models/model-id:deploy

PowerShell

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

$cred = gcloud auth application-default print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://automl.googleapis.com/v1/projects/project-id/locations/us-central1/models/model-id:deploy" | Select-Object -Expand Content

Die Ausgabe sieht in etwa so aus: Sie können den Status der Aufgabe anhand der Vorgangs-ID abrufen. Ein Beispiel finden Sie unter Mit lang andauernden Vorgängen arbeiten.

{
  "name": "projects/project-id/locations/us-central1/operations/operation-id",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.automl.v1.OperationMetadata",
    "createTime": "2019-08-07T22:00:20.692109Z",
    "updateTime": "2019-08-07T22:00:20.692109Z",
    "deployModelDetails": {}
  }
}

Sie können den Status eines Vorgangs mit der folgenden HTTP-Methode und URL abrufen:

GET https://automl.googleapis.com/v1/projects/project-id/locations/us-central1/operations/operation-id

Der Status eines abgeschlossenen Vorgangs sieht ungefähr so aus:

{
  "name": "projects/project-id/locations/us-central1/operations/operation-id",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.automl.v1.OperationMetadata",
    "createTime": "2019-06-21T16:47:21.704674Z",
    "updateTime": "2019-06-21T17:01:00.802505Z",
    "deployModelDetails": {}
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.protobuf.Empty"
  }
}

Go

Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung für diese Sprache auf der Seite Clientbibliotheken.

import (
	"context"
	"fmt"
	"io"

	automl "cloud.google.com/go/automl/apiv1"
	automlpb "google.golang.org/genproto/googleapis/cloud/automl/v1"
)

// deployModel deploys a model.
func deployModel(w io.Writer, projectID string, location string, modelID string) error {
	// projectID := "my-project-id"
	// location := "us-central1"
	// modelID := "TRL123456789..."

	ctx := context.Background()
	client, err := automl.NewClient(ctx)
	if err != nil {
		return fmt.Errorf("NewClient: %v", err)
	}
	defer client.Close()

	req := &automlpb.DeployModelRequest{
		Name: fmt.Sprintf("projects/%s/locations/%s/models/%s", projectID, location, modelID),
	}

	op, err := client.DeployModel(ctx, req)
	if err != nil {
		return fmt.Errorf("DeployModel: %v", err)
	}
	fmt.Fprintf(w, "Processing operation name: %q\n", op.Name())

	if err := op.Wait(ctx); err != nil {
		return fmt.Errorf("Wait: %v", err)
	}

	fmt.Fprintf(w, "Model deployed.\n")

	return nil
}

Java

Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung für diese Sprache auf der Seite Clientbibliotheken.

import com.google.api.gax.longrunning.OperationFuture;
import com.google.cloud.automl.v1.AutoMlClient;
import com.google.cloud.automl.v1.DeployModelRequest;
import com.google.cloud.automl.v1.ModelName;
import com.google.cloud.automl.v1.OperationMetadata;
import com.google.protobuf.Empty;
import java.io.IOException;
import java.util.concurrent.ExecutionException;

class DeployModel {

  public static void main(String[] args)
      throws IOException, ExecutionException, InterruptedException {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "YOUR_PROJECT_ID";
    String modelId = "YOUR_MODEL_ID";
    deployModel(projectId, modelId);
  }

  // Deploy a model for prediction
  static void deployModel(String projectId, String modelId)
      throws IOException, ExecutionException, InterruptedException {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (AutoMlClient client = AutoMlClient.create()) {
      // Get the full path of the model.
      ModelName modelFullId = ModelName.of(projectId, "us-central1", modelId);
      DeployModelRequest request =
          DeployModelRequest.newBuilder().setName(modelFullId.toString()).build();
      OperationFuture<Empty, OperationMetadata> future = client.deployModelAsync(request);

      future.get();
      System.out.println("Model deployment finished");
    }
  }
}

Node.js

Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung für diese Sprache auf der Seite Clientbibliotheken.

/**
 * TODO(developer): Uncomment these variables before running the sample.
 */
// const projectId = 'YOUR_PROJECT_ID';
// const location = 'us-central1';
// const modelId = 'YOUR_MODEL_ID';

// Imports the Google Cloud AutoML library
const {AutoMlClient} = require('@google-cloud/automl').v1;

// Instantiates a client
const client = new AutoMlClient();

async function deployModel() {
  // Construct request
  const request = {
    name: client.modelPath(projectId, location, modelId),
  };

  const [operation] = await client.deployModel(request);

  // Wait for operation to complete.
  const [response] = await operation.promise();
  console.log(`Model deployment finished. ${response}`);
}

deployModel();

Python

Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung für diese Sprache auf der Seite Clientbibliotheken.

from google.cloud import automl

# TODO(developer): Uncomment and set the following variables
# project_id = "YOUR_PROJECT_ID"
# model_id = "YOUR_MODEL_ID"

client = automl.AutoMlClient()
# Get the full path of the model.
model_full_id = client.model_path(project_id, "us-central1", model_id)
response = client.deploy_model(name=model_full_id)

print(f"Model deployment finished. {response.result()}")

Weitere Sprachen

C# : Bitte folgen Sie C#-Einrichtungsanleitung auf der Seite "Clientbibliotheken" ansehen. Dokumentation zur Objekterkennung von AutoML Vision für .NET.

PHP : Bitte folgen Sie PHP-Einrichtungsanleitung auf der Seite "Clientbibliotheken" ansehen.Dokumentation zur AutoML Vision-Objekterkennung für PHP

Ruby : Bitte folgen Sie Anleitung zum Einrichten von Ruby auf der Seite "Clientbibliotheken" ansehen.Dokumentation zur AutoML Vision-Objekterkennung für Ruby

Knotenzahl eines Modells aktualisieren

Sobald ein bereitgestelltes Modell trainiert ist, können Sie die Anzahl der Knoten aktualisieren, auf denen das Modell bereitgestellt wird. So können Sie auf die spezifische Menge an Traffic reagieren. Das ist zum Beispiel nützlich, wenn Sie eine höhere Anzahl von Abfragen pro Sekunde als erwartet erhalten.

Sie können die Anzahl der Knoten ändern, ohne erst das Modell zurücksetzen zu müssen. Wenn Sie die Bereitstellung aktualisieren, ändert sich die Knotenanzahl, ohne dass der bereitgestellte Vorhersage-Traffic unterbrochen wird.

Web-UI

  1. theffnen Sie AutoML Vision Object Detection UI und wählen Sie in der linken Navigationsleiste den Tab Models (Modelle) mit dem Glühbirnensymbol aus, um die verfügbaren Modelle anzuzeigen.

    Wenn Sie die Modelle für ein anderes Projekt ansehen möchten, wählen Sie das Projekt in der Drop-down-Liste rechts oben in der Titelleiste aus.

  2. Wählen Sie das bereitgestellte trainierte Modell aus.
  3. Wählen Sie den Tab Test und Nutzung direkt unter der Titelleiste aus.
  4. Oben auf der Seite wird in einem Feld eine Nachricht mit dem Text "Ihr Modell wurde bereitgestellt und ist für Onlinevorhersageanfragen verfügbar" angezeigt. Wählen Sie neben dem Text die Option Deployment aktualisieren aus.

    Abbildung der Schaltfläche &quot;Update deployment&quot; (Bereitstellung aktualisieren)
  5. Wählen Sie im angezeigten Fenster Update deployment (Bereitstellung aktualisieren) aus der Liste die neue Knotennummer aus, auf der das Modell bereitgestellt werden soll. Mit den Knotennummern wird die Anzahl der geschätzten Vorhersageabfragen pro Sekunde angegeben. Abbildung des Pop-up-Fensters &quot;Deployment aktualisieren&quot;
  6. Wenn Sie eine neue Knotennummer aus der Liste ausgewählt haben, wählen Sie Bereitstellung aktualisieren, um die Knotennummer zu aktualisieren, auf der das Modell bereitgestellt wird.

    Fenster &quot;Deployment aktualisieren&quot; nach Auswahl einer neuen Knotennummer
  7. Es wird wieder das Fenster Test & Use (Test und Nutzung) aufgerufen, in dem jetzt das Textfeld "Deploying model..." (Modell wird bereitgestellt...) angezeigt wird. Modell wird bereitgestellt
  8. Wenn Ihr Modell erfolgreich auf der neuen Knotennummer bereitgestellt wurde, erhalten Sie eine E-Mail an die mit Ihrem Projekt verknüpfte Adresse.

REST UND BEFEHLSZEILE

Die Methode, mit der Sie ein Modell ursprünglich bereitstellen, wird zur Änderung der Knotennummer des bereitgestellten Modells verwendet.

Ersetzen Sie diese Werte in den folgenden Anweisungen:

  • project-id: die ID Ihres GCP-Projekts.
  • model-id: die ID Ihres Modells aus der Antwort beim Erstellen des Modells. Sie ist das letzte Element des Modellnamens. Beispiel:
    • Modellname: projects/project-id/locations/location-id/models/IOD4412217016962778756
    • model id: IOD4412217016962778756

Hinweise zu bestimmten Feldern:

  • nodeCount: die Anzahl der Knoten, auf denen das Modell bereitgestellt werden soll. Der Wert muss zwischen 1 und 100 (beide einschließlich) liegen. Ein Knoten ist eine Abstraktion einer Maschinenressource, die so viele Online-Vorhersageabfragen pro Sekunde (Queries per second, QPS) verarbeiten kann, wie im Modell in qps_per_node angegeben.

HTTP-Methode und URL:

POST https://automl.googleapis.com/v1/projects/project-id/locations/us-central1/models/model-id:deploy

JSON-Text der Anfrage:

{
  "imageObjectDetectionModelDeploymentMetadata": {
    "nodeCount": 2
  }
}

Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

curl

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

curl -X POST \
-H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
https://automl.googleapis.com/v1/projects/project-id/locations/us-central1/models/model-id:deploy

PowerShell

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

$cred = gcloud auth application-default print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://automl.googleapis.com/v1/projects/project-id/locations/us-central1/models/model-id:deploy" | Select-Object -Expand Content

Die Ausgabe sieht in etwa so aus: Sie können den Status der Aufgabe anhand der Vorgangs-ID abrufen. Ein Beispiel finden Sie unter Mit lang andauernden Vorgängen arbeiten.

{
  "name": "projects/project-id/locations/us-central1/operations/operation-id",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.automl.v1.OperationMetadata",
    "createTime": "2019-08-07T22:00:20.692109Z",
    "updateTime": "2019-08-07T22:00:20.692109Z",
    "deployModelDetails": {}
  }
}

Go

Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung für diese Sprache auf der Seite Clientbibliotheken.

import (
	"context"
	"fmt"
	"io"

	automl "cloud.google.com/go/automl/apiv1"
	automlpb "google.golang.org/genproto/googleapis/cloud/automl/v1"
)

// visionObjectDetectionDeployModelWithNodeCount deploys a model with node count.
func visionObjectDetectionDeployModelWithNodeCount(w io.Writer, projectID string, location string, modelID string) error {
	// projectID := "my-project-id"
	// location := "us-central1"
	// modelID := "IOD123456789..."

	ctx := context.Background()
	client, err := automl.NewClient(ctx)
	if err != nil {
		return fmt.Errorf("NewClient: %v", err)
	}
	defer client.Close()

	req := &automlpb.DeployModelRequest{
		Name: fmt.Sprintf("projects/%s/locations/%s/models/%s", projectID, location, modelID),
		ModelDeploymentMetadata: &automlpb.DeployModelRequest_ImageObjectDetectionModelDeploymentMetadata{
			ImageObjectDetectionModelDeploymentMetadata: &automlpb.ImageObjectDetectionModelDeploymentMetadata{
				NodeCount: 2,
			},
		},
	}

	op, err := client.DeployModel(ctx, req)
	if err != nil {
		return fmt.Errorf("DeployModel: %v", err)
	}
	fmt.Fprintf(w, "Processing operation name: %q\n", op.Name())

	if err := op.Wait(ctx); err != nil {
		return fmt.Errorf("Wait: %v", err)
	}

	fmt.Fprintf(w, "Model deployed.\n")

	return nil
}

Java

Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung für diese Sprache auf der Seite Clientbibliotheken.

import com.google.api.gax.longrunning.OperationFuture;
import com.google.cloud.automl.v1.AutoMlClient;
import com.google.cloud.automl.v1.DeployModelRequest;
import com.google.cloud.automl.v1.ImageObjectDetectionModelDeploymentMetadata;
import com.google.cloud.automl.v1.ModelName;
import com.google.cloud.automl.v1.OperationMetadata;
import com.google.protobuf.Empty;
import java.io.IOException;
import java.util.concurrent.ExecutionException;

class VisionObjectDetectionDeployModelNodeCount {

  static void visionObjectDetectionDeployModelNodeCount()
      throws InterruptedException, ExecutionException, IOException {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "YOUR_PROJECT_ID";
    String modelId = "YOUR_MODEL_ID";
    visionObjectDetectionDeployModelNodeCount(projectId, modelId);
  }

  // Deploy a model for prediction with a specified node count (can be used to redeploy a model)
  static void visionObjectDetectionDeployModelNodeCount(String projectId, String modelId)
      throws IOException, ExecutionException, InterruptedException {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (AutoMlClient client = AutoMlClient.create()) {
      // Get the full path of the model.
      ModelName modelFullId = ModelName.of(projectId, "us-central1", modelId);
      ImageObjectDetectionModelDeploymentMetadata metadata =
          ImageObjectDetectionModelDeploymentMetadata.newBuilder().setNodeCount(2).build();
      DeployModelRequest request =
          DeployModelRequest.newBuilder()
              .setName(modelFullId.toString())
              .setImageObjectDetectionModelDeploymentMetadata(metadata)
              .build();
      OperationFuture<Empty, OperationMetadata> future = client.deployModelAsync(request);

      future.get();
      System.out.println("Model deployment finished");
    }
  }
}

Node.js

Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung für diese Sprache auf der Seite Clientbibliotheken.

/**
 * TODO(developer): Uncomment these variables before running the sample.
 */
// const projectId = 'YOUR_PROJECT_ID';
// const location = 'us-central1';
// const modelId = 'YOUR_MODEL_ID';

// Imports the Google Cloud AutoML library
const {AutoMlClient} = require('@google-cloud/automl').v1;

// Instantiates a client
const client = new AutoMlClient();

async function deployModelWithNodeCount() {
  // Construct request
  const request = {
    name: client.modelPath(projectId, location, modelId),
    imageObjectDetectionModelDeploymentMetadata: {
      nodeCount: 2,
    },
  };

  const [operation] = await client.deployModel(request);

  // Wait for operation to complete.
  const [response] = await operation.promise();
  console.log(`Model deployment finished. ${response}`);
}

deployModelWithNodeCount();

Python

Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung für diese Sprache auf der Seite Clientbibliotheken.

from google.cloud import automl

# TODO(developer): Uncomment and set the following variables
# project_id = "YOUR_PROJECT_ID"
# model_id = "YOUR_MODEL_ID"

client = automl.AutoMlClient()
# Get the full path of the model.
model_full_id = client.model_path(project_id, "us-central1", model_id)

# node count determines the number of nodes to deploy the model on.
# https://cloud.google.com/automl/docs/reference/rpc/google.cloud.automl.v1#imageobjectdetectionmodeldeploymentmetadata
metadata = automl.ImageObjectDetectionModelDeploymentMetadata(node_count=2)

request = automl.DeployModelRequest(
    name=model_full_id,
    image_object_detection_model_deployment_metadata=metadata,
)
response = client.deploy_model(request=request)

print("Model deployment finished. {}".format(response.result()))

Weitere Sprachen

C# : Bitte folgen Sie C#-Einrichtungsanleitung auf der Seite "Clientbibliotheken" ansehen. Dokumentation zur Objekterkennung von AutoML Vision für .NET.

PHP : Bitte folgen Sie PHP-Einrichtungsanleitung auf der Seite "Clientbibliotheken" ansehen.Dokumentation zur AutoML Vision-Objekterkennung für PHP

Ruby : Bitte folgen Sie Anleitung zum Einrichten von Ruby auf der Seite "Clientbibliotheken" ansehen.Dokumentation zur AutoML Vision-Objekterkennung für Ruby