Benutzerdefinierte Container verwenden

Wenn Sie anpassen möchten, wie AI Platform Prediction Onlinevorhersagen aus dem trainierten Modell für maschinelles Lernen (ML) bereitstellt, können Sie beim Erstellen einer Containerversion anstelle einer Laufzeitversion einen benutzerdefinierten Container angeben. Wenn Sie einen benutzerdefinierten Container verwenden, führt AI Platform Prediction einen Docker-Container Ihrer Wahl auf jedem Vorhersageknoten aus, anstatt den Code in der Standardlaufzeitversion auszuführen, um Vorhersagen aus kompatiblen Modellartefakten bereitzustellen.

Benutzerdefinierte Container können aus folgenden Gründen verwendet werden:

  • Sie möchten Vorhersagen aus einem ML-Modell ausführen, das mit einem anderen Framework als TensorFlow, scikit-learn oder XGBoost trainiert wurde.
  • Sie möchten Vorhersaganfragen vorverarbeiten oder die von Ihrem Modell generierten Vorhersagen nachbearbeiten.
  • Sie möchten einen Vorhersageserver ausführen, der in einer Programmiersprache Ihrer Wahl geschrieben ist.
  • Sie möchten Abhängigkeiten installieren, mit denen Sie Vorhersagen anpassen können.

In dieser Anleitung wird beschrieben, wie Sie eine Modellversion erstellen, die einen benutzerdefinierten Container verwendet. Sie enthält keine detaillierten Anleitungen zum Erstellen eines Docker-Container-Images. Ein Beispiel zum Erstellen eines Container-Images und zu dessen Verwendung mit AI Platform Prediction finden Sie unter Erste Schritte: PyTorch-Vorhersagen mit einem benutzerdefinierten Container bereitstellen.

Zur Verwendung eines benutzerdefinierten Containers müssen Sie einen regionalen Endpunkt und einen Compute Engine-Maschinentyp (N1) für Ihre Modellversion verwenden.

Container-Image vorbereiten

Wenn Sie eine Modellversion erstellen möchten, die einen benutzerdefinierten Container verwendet, müssen Sie ein Docker-Container-Image als Grundlage dieses Containers bereitstellen. Dieses Container-Image muss die Anforderungen erfüllen, die unter Anforderungen für benutzerdefinierte Container beschrieben sind.

Wenn Sie ein vorhandenes Container-Image verwenden möchten, das von einem Drittanbieter erstellt wurde, dem Sie vertrauen, können Sie möglicherweise einen oder beide der folgenden Abschnitte überspringen.

Container-Image erstellen

Entwerfen und erstellen Sie ein Docker-Container-Image, das die Anforderungen an Container-Images erfüllt.

Die Grundlagen zum Entwerfen und Erstellen eines Docker-Container-Image finden Sie in der Kurzanleitung der Docker-Dokumentation.

Container-Image per Push an Artifact Registry übertragen

Übertragen Sie das Container-Image per Push in ein Artifact Registry-Repository, das die Voraussetzungen für die Veröffentlichung von Container-Images erfüllt.

Informationen zum Hochladen eines Container-Images in Artifact Registry

Modell und Modellversion erstellen

Beim Erstellen eines Modells müssen Sie mehrere Konfigurationsoptionen angeben, damit alle Modellversionen, die Sie später im Modell erstellen, mit Ihrem benutzerdefinierten Container kompatibel sind.

Nehmen Sie dann den Großteil der Containerkonfiguration vor, wenn Sie eine Modellversion erstellen.

Modell erstellen

Folgen Sie zum Erstellen eines Modells der Anleitung zum Erstellen einer Modellressource. Sie müssen das Modell auf einem regionalen Endpunkt erstellen, der mit der Region des Artifact Registry-Repositorys übereinstimmt, in dem das Container-Image gespeichert ist. Weitere Informationen finden Sie unter Voraussetzungen für die Veröffentlichung von Container-Images.

Modellversionen erstellen

Wenn Sie eine Modellversion mit einem benutzerdefinierten Container erstellen, konfigurieren Sie die folgenden containerspezifischen API-Felder zusätzlich zu den anderen Feldern, die Sie für eine Modellversion angeben:

In den folgenden Abschnitten wird die Konfiguration dieser Felder beschrieben.

Beachten Sie außerdem die folgenden containerspezifischen Unterschiede bei der Konfiguration anderer API-Felder:

Version.container konfigurieren

Geben Sie im Feld Version.container eine ContainerSpec-Nachricht an. In dieser Nachricht können Sie die folgenden untergeordneten Felder angeben. Wenn Sie die Modellversion mit dem Befehl gcloud beta ai-platform versions create erstellen, können Sie alle untergeordneten Felder mit einem Befehlszeilen-Flag angeben.

image (erforderlich)

Artifact Registry-URI Ihres Container-Images.

gcloud CLI-Flag: --image

command (optional)

Ein Array aus einer ausführbaren Datei und Argumenten zum Überschreiben des Felds ENTRYPOINT des Containers. Weitere Informationen zum Formatieren dieses Felds und zur Interaktion mit dem Feld args finden Sie in der API-Referenz zu ContainerSpec.

gcloud CLI-Flag: --command

args (optional)

Ein Array aus einer ausführbaren Datei und Argumenten zum Überschreiben des Felds CMD des Containers. Weitere Informationen zum Formatieren dieses Felds und zur Interaktion mit dem Feld command finden Sie in der API-Referenz zu ContainerSpec.

gcloud CLI-Flag: --args

ports (optional)

Ein Array von Ports. AI Platform Prediction sendet Aktivitätsprüfungen, Systemdiagnosen und Vorhersageanfragen an den Container am ersten aufgeführten Port oder standardmäßig an 8080. Die Angabe zusätzlicher Ports hat keine Auswirkungen.

gcloud CLI-Flag: --ports

env (optional)

Ein Array von Umgebungsvariablen, auf die der Einstiegspunktbefehl des Containers sowie die Felder command und args verweisen können. Weitere Informationen dazu, wie andere Felder auf diese Umgebungsvariablen verweisen können, finden Sie in der API-Referenz zu ContainerSpec.

gcloud CLI-Flag: --env-vars

Neben den Variablen, die Sie im Feld Version.container.env festlegen, legt AI Platform Prediction mehrere andere Variablen auf der Grundlage Ihrer Konfiguration fest. Weitere Informationen zur Verwendung der Umgebungsvariablen in diesen Feldern und zum Einstiegspunkt des Containers

Das folgende Beispiel zeigt, wie Sie diese Felder beim Erstellen einer Modellversion über die Google Cloud CLI angeben:

gcloud beta ai-platform versions create VERSION \
  --region=REGION \
  --model=MODEL \
  --machine-type=n1-standard-4 \
  --image=IMAGE_URI \
  --command=executable,param1,param2 \
  --args=param3,param4 \
  --ports=8081 \
  --env-vars \
    VAR1='value 1' \
    VAR2='value 2'

Dabei gilt:

Version.routes konfigurieren

Sie können im Feld Version.routes eine RouteMap-Nachricht angeben. In dieser Nachricht können Sie die folgenden untergeordneten Felder angeben. Wenn Sie die Modellversion mit dem Befehl gcloud beta ai-platform versions create erstellen, können Sie alle untergeordneten Felder mit einem Befehlszeilen-Flag angeben.

health (optional)

Der Pfad auf dem HTTP-Server Ihres Containers, an den AI Platform Prediction Systemdiagnosen senden soll.

Wenn Sie dieses Feld nicht angeben, wird standardmäßig /v1/models/MODEL/versions/VERSION verwendet, wobei MODEL und VERSION durch den Namen Ihres Modells bzw. der Modellversion ersetzt werden.

gcloud CLI-Flag: --health-route

predict (optional)

Der Pfad auf dem HTTP-Server Ihres Containers, an den AI Platform Prediction Vorhersageanfragen weiterleiten soll.

Wenn Sie dieses Feld nicht angeben, wird standardmäßig /v1/models/MODEL/versions/VERSION:predict verwendet, wobei MODEL und VERSION durch den Namen Ihres Modells bzw. der Modellversion ersetzt werden.

gcloud CLI-Flag: --predict-route

Das folgende Beispiel zeigt, wie Sie diese Felder beim Erstellen einer Modellversion mit der gcloud CLI angeben:

gcloud beta ai-platform versions create VERSION \
  --region=REGION \
  --model=MODEL \
  --machine-type=n1-standard-4 \
  --image=IMAGE_URI \
  --command=executable,param1,param2 \
  --args=param3,param4 \
  --ports=8081 \
  --env-vars \
    VAR1='value 1' \
    VAR2='value 2' \
  --health-route=/health \
  --predict-route=/predict

Dabei gilt:

Vorhersageanfragen senden

Folgen Sie dem Leitfaden zur Onlinevorhersage, um eine Onlinevorhersageanfrage an Ihre Modellversion zu senden. Dieser Vorgang funktioniert unabhängig davon, ob Sie einen benutzerdefinierten Container verwenden.

Wenn Sie jedoch einen benutzerdefinierten Container verwenden, muss der Text einer Vorhersageanfrage nicht die Anforderungen des Anfragetexts für Modellversionen erfüllen, die eine Laufzeitversion verwenden. Wir empfehlen jedoch, den Container so zu gestalten, dass nach Möglichkeit Anfragetexte mit dem Standardformat erwartet werden. Weitere Informationen zu Anforderungen an Vorhersageanfragen und Antworten für benutzerdefinierte Container.

Nächste Schritte