Wenn Sie anpassen möchten, wie Vertex AI 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 Vertex AI einen Docker-Container Ihrer Wahl auf jedem Vorhersageknoten 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 vordefinierter Container verfügbar ist.
- 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 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 upload
verwenden, können Sie dieses Feld mit dem Flag--container-image-uri
angeben.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 Feldargs
finden Sie in der API-Referenz zuModelContainerSpec
.Wenn Sie den
gcloud ai models upload
Befehl--container-command
verwenden, können Sie dieses Feld mit dem Flag angeben.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 Feldcommand
finden Sie in der API-Referenz zuModelContainerSpec
.Wenn Sie den
gcloud ai models upload
Befehl--container-args
verwenden, können Sie dieses Feld mit dem Flag angeben.ports
(optional)Ein Array von Ports. Vertex AI 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.Wenn Sie den
gcloud ai models upload
Befehl--container-ports
verwenden, können Sie dieses Feld mit dem Flag angeben.env
(optional)Ein Array von Umgebungsvariablen, auf die der
ENTRYPOINT
-Anweisung des Containers sowie die Feldercommand
undargs
verweisen 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-vars
angeben.healthRoute
(optional)Der Pfad auf dem HTTP-Server Ihres Containers, an den Vertex AI Systemdiagnosen senden soll.
Wenn Sie dieses Feld nicht angeben, wird beim Bereitstellen von
Model
alsDeployedModel
für eineEndpoint
-Ressource standardmäßig/v1/endpoints/ENDPOINT/deployedModels/DEPLOYED_MODEL
verwendet, wobei ENDPOINT durch das letzte Segment desname
-Feld vonEndpoint
(nachendpoints/
) undDEPLOYED_MODEL durch dasid
-Feld vonDeployedModel
ersetzt wird.Wenn Sie den
gcloud ai models upload
-Befehl verwenden, können Sie dieses Feld mit dem Flag--container-health-route
angeben.predictRoute
(optional)Der Pfad auf dem HTTP-Server Ihres Containers, an den Vertex AI Vorhersageanfragen weiterleiten soll.
Wenn Sie dieses Feld nicht angeben, wird beim Bereitstellen von
Model
alsDeployedModel
für eineEndpoint
-Ressource standardmäßig/v1/endpoints/ENDPOINT/deployedModels/DEPLOYED_MODEL:predict
verwendet, wobei ENDPOINT durch das letzte Segment desname
-Feld vonEndpoint
(nachendpoints/
) undDEPLOYED_MODEL durch dasid
-Feld vonDeployedModel
ersetzt wird.Wenn Sie den
gcloud ai models upload
-Befehl verwenden, können Sie dieses Feld mit dem Flag--container-predict-route
angeben.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-mb
angeben.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-seconds
angeben.healthProbe
(optional)Spezifikation für die Prüfung, die prüft, ob ein Container bereit ist, Traffic anzunehmen.
Wenn Sie den
gcloud ai models upload
-Befehl verwenden, können Sie dieses Feld mit dem Flag--container-health-probe-exec, --container-health-probe-period-seconds, --container-health-probe-timeout-seconds
angeben.
Neben den Variablen, die Sie im Feld Model.containerSpec.env
festlegen, legt Vertex AI 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
Bevor Sie dieses Beispiel anwenden, folgen Sie den Java-Einrichtungsschritten in der Vertex AI-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Java API.
Richten Sie zur Authentifizierung bei Vertex AI Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Node.js
Bevor Sie dieses Beispiel anwenden, folgen Sie den Node.js-Einrichtungsschritten in der Vertex AI-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Node.js API.
Richten Sie zur Authentifizierung bei Vertex AI Standardanmeldedaten für Anwendungen ein. 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 Referenzdokumentation zur Python API.
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 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.
Nächste Schritte
- Wenn Sie einen benutzerdefinierten Container für die Verwendung mit Vertex AI erstellen möchten, lesen Sie die Anforderungen für benutzerdefinierte Container.