Wenn Sie anpassen möchten, wie Agent Platform Onlinevorhersagen aus dem
benutzerdefinierten Modell bereitstellt, können Sie anstelle eines vordefinierten
Containers einen benutzerdefinierten Container festlegen, wenn Sie eine
Model
Ressource erstellen. Wenn Sie einen benutzerdefinierten Container verwenden, führt Agent Platform auf jedem Vorhersageknoten einen Docker-Container Ihrer Wahl aus.
Benutzerdefinierte Container können aus folgenden Gründen verwendet werden:
- Sie möchten Vorhersagen aus einem ML-Modell bereitstellen, das mit einem Framework trainiert wurde, das nicht als ein vordefinierter Container verfügbar ist.
- Sie möchten Vorhersageanfragen 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 diesem Leitfaden wird beschrieben, wie Sie ein Modell erstellen, das einen benutzerdefinierten Container verwendet. Er enthält keine detaillierten Anleitungen zum Erstellen eines Docker-Container-Images.
Container-Image vorbereiten
Wenn Sie eine Model 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 Ihr Container-Image per Push in ein Artifact Registry-Repository.
Informationen zum Hochladen eines Container-Images in Artifact Registry
Model erstellen
Führen Sie einen der folgenden Schritte aus, um ein Model mit einem benutzerdefinierten Container zu erstellen:
In den folgenden Abschnitten wird gezeigt, wie Sie die auf benutzerdefinierte Container bezogenen API-Felder konfigurieren, wenn Sie ein Model auf eine dieser Arten erstellen.
Containerbezogene API-Felder
Achten Sie beim Erstellen des Model darauf, das Feld containerSpec mit den Details des benutzerdefinierten Containers zu konfigurieren, nicht mit einem vordefinierten Container.
Geben Sie im Feld Model.containerSpec eine ModelContainerSpec-Nachricht an. In dieser Nachricht können Sie die folgenden untergeordneten Felder angeben.
imageUri(erforderlich)Artifact Registry-URI Ihres Container-Images.
Wenn Sie den Befehl
gcloud ai models uploadverwenden, können Sie dieses Feld mit dem Flag--container-image-uriangeben.command(optional)Ein Array aus einer ausführbaren Datei und Argumenten zum Überschreiben der
ENTRYPOINTAnweisung des Containers. Weitere Informationen zum Formatieren dieses Felds und zur Interaktion mit dem Feldargsfinden Sie in der API-Referenz fürModelContainerSpec.Wenn Sie den
gcloud ai models uploadBefehl--container-commandverwenden, können Sie dieses Feld mit dem Flag angeben.args(optional)Ein Array aus einer ausführbaren Datei und Argumenten zum Überschreiben des Felds
CMDdes Containers. Weitere Informationen zum Formatieren dieses Felds und zur Interaktion mit dem Feldcommandfinden Sie in der API-Referenz zuModelContainerSpec.Wenn Sie den
gcloud ai models uploadBefehl--container-argsverwenden, können Sie dieses Feld mit dem Flag angeben.ports(optional)Ein Array von Ports. Agent Platform sendet Aktivitätsprüfungen, System diagnosen und Vorhersage anfragen an den Container am ersten aufgeführten Port oder
8080standardmäßig. Die Angabe zusätzlicher Ports hat keine Auswirkungen.Wenn Sie den
gcloud ai models uploadBefehl--container-portsverwenden, können Sie dieses Feld mit dem Flag angeben.env(optional)Ein Array von Umgebungsvariablen, auf die der
ENTRYPOINT-Anweisung des Containers sowie die Feldercommandundargsverweisen können. Weitere Informationen dazu, wie andere Felder auf diese Umgebungsvariablen verweisen können, finden Sie in der API-Referenz zuModelContainerSpec.Wenn Sie den
gcloud ai models upload-Befehl verwenden, können Sie dieses Feld mit dem Flag--container-env-varsangeben.healthRoute(optional)Der Pfad auf dem HTTP-Server Ihres Containers, an den Agent Platform Systemdiagnosen senden soll.
Wenn Sie dieses Feld nicht angeben, wird beim Bereitstellen von
ModelalsDeployedModelfür eineEndpointRessource standardmäßig/v1/endpoints/ENDPOINT/deployedModels/DEPLOYED_MODELverwendet, wobei ENDPOINT durch das letzte Segment desEndpoint'snameFelds (nachendpoints/) und DEPLOYED_MODEL durch dasDeployedModel'sidFelds ersetzt wird.Wenn Sie den
gcloud ai models upload-Befehl verwenden, können Sie dieses Feld mit dem Flag--container-health-routeangeben.predictRoute(optional)Der Pfad auf dem HTTP-Server Ihres Containers, an den Agent Platform Vorhersageanfragen weiterleiten soll.
Wenn Sie dieses Feld nicht angeben, wird beim Bereitstellen von
ModelalsDeployedModelfür eineEndpointRessource standardmäßig/v1/endpoints/ENDPOINT/deployedModels/DEPLOYED_MODEL:predictverwendet, wobei ENDPOINT durch das letzte Segment desEndpoint'snameFelds (nachendpoints/) und DEPLOYED_MODEL durch dasDeployedModel'sidFelds ersetzt wird.Wenn Sie den
gcloud ai models upload-Befehl verwenden, können Sie dieses Feld mit dem Flag--container-predict-routeangeben.invokeRoutePrefix(optional)Präfix der Aufrufroute für den benutzerdefinierten Container. Wenn Sie dieses Feld auf „/*“ setzen, wird die beliebige Weiterleitung für das Modell aktiviert. Nach der Bereitstellung ist jede Nicht-Root-Route auf dem Modellserver mit einem HTTP-Aufruf zugänglich. So wird beispielsweise „/invoke/foo/bar“ als „/foo/bar“ an den Modellserver weitergeleitet. Diese Funktion befindet sich in der öffentlichen Vorschau. Folgen Sie der Anleitung zum Verwenden beliebiger benutzerdefinierter Routen, um ein Modell mit Aufruffunktion zu erstellen.
sharedMemorySizeMb(optional)Die Menge des VM-Speichers, der in einem gemeinsam genutzten Speicher-Volume für das Modell in Megabyte reserviert werden soll.
Gemeinsam genutzter Speicher ist ein IPC-Mechanismus (Inter-Process Communication), der es mehreren Prozessen ermöglicht, auf einen gemeinsamen Speicherblock zuzugreifen und diesen zu bearbeiten. Die Größe des erforderlichen gemeinsamen Speichers ist ein Implementierungsdetail Ihres Containers und Modells. Weitere Informationen finden Sie in der Dokumentation Ihres Modellservers.
Wenn Sie den
gcloud ai models upload-Befehl verwenden, können Sie dieses Feld mit dem Flag--container-shared-memory-size-mbangeben.startupProbe(optional)Spezifikation für die Prüfung, die prüft, ob die Containeranwendung gestartet wurde.
Wenn Sie den
gcloud ai models upload-Befehl verwenden, können Sie dieses Feld mit dem Flag--container-startup-probe-exec, --container-startup-probe-period-seconds, --container-startup-probe-timeout-secondsangeben.healthProbe(optional)Spezifikation für die Prüfung, die prüft, ob ein Container bereit ist, Traffic anzunehmen.
Wenn Sie den Befehl
gcloud ai models uploadverwenden, können Sie dieses Feld mit dem Flag--container-health-probe-exec, --container-health-probe-period-seconds, --container-health-probe-timeout-secondsangeben.
Neben den Variablen, die Sie im Feld Model.containerSpec.env festlegen, legt Agent Platform mehrere andere Variablen auf der Grundlage Ihrer Konfiguration fest. Weitere Informationen zur Verwendung der Umgebungsvariablen in diesen Feldern und in der ENTRYPOINT Anweisung des Containers
Beispiele für den Modellimport
Die folgenden Beispiele zeigen, wie Sie beim Importieren eines Modells containerbezogene API-Felder angeben.
gcloud
Im folgenden Beispiel wir der Befehl gcloud ai models upload verwendet:
gcloud ai models upload \
--region=LOCATION \
--display-name=MODEL_NAME \
--container-image-uri=IMAGE_URI \
--container-command=COMMAND \
--container-args=ARGS \
--container-ports=PORTS \
--container-env-vars=ENV \
--container-health-route=HEALTH_ROUTE \
--container-predict-route=PREDICT_ROUTE \
--container-shared-memory-size-mb=SHARED_MEMORY_SIZE \
--container-startup-probe-exec=STARTUP_PROBE_EXEC \
--container-startup-probe-period-seconds=STARTUP_PROBE_PERIOD \
--container-startup-probe-timeout-seconds=STARTUP_PROBE_TIMEOUT \
--container-health-probe-exec=HEALTH_PROBE_EXEC \
--container-health-probe-period-seconds=HEALTH_PROBE_PERIOD \
--container-health-probe-timeout-seconds=HEALTH_PROBE_TIMEOUT \
--artifact-uri=PATH_TO_MODEL_ARTIFACT_DIRECTORY
Das Flag --container-image-uri ist erforderlich. Alle anderen Flags, die mit --container- beginnen, sind optional. Weitere Informationen zu den Werten für diese Felder,
finden Sie im vorherigen Abschnitt dieses Leitfadens.
Java
Folgen Sie der Java Einrichtungsanleitung in der Kurzanleitung zu Agent Platform zur Verwendung von Clientbibliotheken, bevor Sie dieses Beispiel anwenden.
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Agent Platform zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Node.js
Folgen Sie der Node.js Einrichtungsanleitung in der Kurzanleitung zu Agent Platform zur Verwendung von Clientbibliotheken, bevor Sie dieses Beispiel anwenden.
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Agent Platform zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Python
Informationen zur Installation des Vertex AI SDK for Python finden Sie unter Vertex AI SDK for Python installieren. Weitere Informationen finden Sie in der Python API-Referenzdokumentation.
Weitere Informationen finden Sie in der Anleitung zum Modellimport.
Vorhersageanfragen senden
Folgen Sie der Anleitung unter
Vorhersagen von einem benutzerdefinierten Modell abrufen, um eine Onlinevorhersageanfrage an Ihr Model zu senden:
Dieser Vorgang funktioniert unabhängig davon, ob Sie einen benutzerdefinierten Container verwenden.
Weitere Informationen zu Anforderungen an Vorhersageanfragen und Antworten für benutzerdefinierte Container.