In diesem Leitfaden wird beschrieben, wie Vertex AI für die Verwendung eines benutzerdefinierten Dienstkontos in den folgenden Szenarien konfiguriert wird:
Wenn Sie ein benutzerdefiniertes Training ausführen, können Sie Vertex AI so konfigurieren, dass für den Trainingscontainer ein benutzerdefiniertes Dienstkonto verwendet wird, unabhängig davon, ob es ein vordefinierter Container oder ein benutzerdefinierter Container ist
Wenn Sie eine benutzerdefinierte
Model
-Ressource für eineEndpoint
-Ressource für Onlinevorhersagen bereitstellen, können Sie Vertex AI so konfigurieren, dass im Container für Vorhersagen ein benutzerdefiniertes Dienstkonto verwendet wird, unabhängig davon, ob es ein vordefinierter Container oder ein benutzerdefinierten Container ist.
Wann sollte ein benutzerdefiniertes Dienstkonto verwendet werden?
Wenn Vertex AI ausgeführt wird, erfolgt dies in der Regel mit den Berechtigungen von einem von mehreren Dienstkonten, die Google für Ihr Google Cloud-Projekt erstellt und verwaltet. Wenn Sie Vertex AI in bestimmten Kontexten Zugriff auf andere Google Cloud-Dienste gewähren möchten, können Sie den Dienst-Agents von Vertex AI bestimmte Rollen hinzufügen.
Eine Anpassung der Berechtigungen von Dienst-Agents ermöglicht jedoch unter Umständen nicht die gewünschte genau abgestimmte Zugriffssteuerung. Typische Anwendungsfälle:
- Weniger Berechtigungen für Vertex AI-Jobs und -Modelle zulassen. Der Vertex AI-Standarddienst-Agent hat Zugriff auf BigQuery und Cloud Storage.
- Unterschiedlichen Jobs Zugriff auf unterschiedliche Ressourcen gewähren. Möglicherweise möchten Sie vielen Nutzern erlauben, Jobs in einem einzelnen Projekt zu starten, aber den Jobs jedes Nutzers nur Zugriff auf eine bestimmte BigQuery-Tabelle oder einen bestimmten Cloud Storage-Bucket gewähren.
Beispielsweise möchten Sie eventuell jeden ausgeführten benutzerdefinierten Trainingsjob individuell konfigurieren, um Zugriff auf verschiedene Google Cloud-Ressourcen außerhalb Ihres Projekts zu erhalten.
Darüber hinaus ändern sich durch das Anpassen der Berechtigungen von Dienst-Agents nicht die Berechtigungen eines Containers, mit dem Vorhersagen von einem benutzerdefinierten Model
bereitgestellt werden.
Wenn Sie den Zugriff jedes Mal anpassen möchten, wenn Sie ein benutzerdefiniertes Training ausführen, oder um die Berechtigungen des Vorhersagecontainers eines benutzerdefinierten Model
anzupassen, müssen Sie ein benutzerdefiniertes Dienstkonto verwenden.
Standardzugriff
In diesem Abschnitt wird der Standardzugriff für benutzerdefinierte Trainings- und Vorhersagecontainer von benutzerdefinierten Model
-Ressourcen erläutert.
Wenn Sie ein benutzerdefiniertes Dienstkonto verwenden, überschreiben Sie diesen Zugriff für eine bestimmte Ressource vom Typ CustomJob
, HyperparameterTuningJob
, TrainingPipeline
oder DeployedModel
.
Trainingscontainer
Wenn Sie einen CustomJob
, HyperparameterTuningJob
oder eine benutzerdefinierte TrainingPipeline
erstellen, wird der Trainingscontainer standardmäßig mit dem Dienst-Agent des benutzerdefinierten Vertex AI-Codes Ihres Google Cloud-Projekts ausgeführt.
Weitere Informationen erhalten Sie unter Dienst-Agent des benutzerdefinierten Vertex AI-Codes. Hier wird auch gezeigt, wie Sie ihm Zugriff auf zusätzliche Google Cloud-Ressourcen gewähren.
Vorhersagecontainer
Wenn Sie ein benutzerdefiniertes Model
für einen Endpoint
bereitstellen, wird der Vorhersagecontainer mit einem Dienstkonto ausgeführt, das von Vertex AI verwaltet wird. Dieses Dienstkonto unterscheidet sich von den Vertex AI-Agents.
Das Dienstkonto, das standardmäßig vom Vorhersagecontainer verwendet wird, ist berechtigt, Modellartefakte zu lesen, die von Vertex AI unter einem URI verfügbar gemacht werden, der in der Umgebungsvariable AIP_STORAGE_URI
gespeichert ist. Wenn Sie andere Berechtigungen benötigen, ist dafür das Dienstkonto nicht geeignet. Sie können die Berechtigungen des Dienstkontos nicht anpassen.
Benutzerdefiniertes Dienstkonto konfigurieren
In den folgenden Abschnitten wird gezeigt, wie Sie ein benutzerdefiniertes Dienstkonto für die Verwendung mit Vertex AI einrichten und wie Sie CustomJob
, HyperparameterTuningJob
, TrainingPipeline
oder DeployedModel
für die Verwendung des Dienstkontos konfigurieren. Beachten Sie, dass Sie kein benutzerdefiniertes Dienstkonto konfigurieren können, um Images aus Artifact Registry abzurufen. Vertex AI verwendet zum Abrufen von Images das Standarddienstkonto.
Benutzerdefiniertes Dienstkonto einrichten
So richten Sie ein benutzerdefiniertes Dienstkonto ein:
Erstellen Sie ein vom Nutzer verwaltetes Dienstkonto. Das nutzerverwaltete Dienstkonto kann sich im selben Projekt wie Ihre Vertex AI-Ressourcen oder in einem anderen Projekt befinden.
Weisen Sie dem neuen Dienstkonto IAM-Rollen zu, die Zugriff auf die Google Cloud-Dienste und -Ressourcen gewähren, die Vertex AI für das benutzerdefinierte Training oder die Vorhersage verwenden soll.
Optional: Wenn sich das vom Nutzer verwaltete Dienstkonto in einem anderen Projekt als Ihre Trainingsjobs befindet, konfigurieren Sie das vom Nutzer verwaltete Dienstkonto, damit Sie es an die Trainingsjobs anhängen können.
Optional: Wenn Sie auch das nutzerverwaltete Dienstkonto für Vorhersagen verwenden möchten, müssen Sie dem Vertex AI-Dienst-Agent des Projekts, in dem Sie Vertex AI verwenden, die Rolle "Dienstkontoadministrator" (
roles/iam.serviceAccountAdmin
) zuweisen:gcloud iam service-accounts add-iam-policy-binding \ --role=roles/iam.serviceAccountAdmin \ --member=serviceAccount:AI_PLATFORM_SERVICE_AGENT \ CUSTOM_SERVICE_ACCOUNT
Dabei gilt:
AI_PLATFORM_SERVICE_AGENT: Die E-Mail-Adresse des Dienst-Agents von Vertex AI in Ihrem Projekt im folgenden Format:
service-PROJECT_NUMBER@gcp-sa-aiplatform.iam.gserviceaccount.com
Rufen Sie in der Google Cloud Console die IAM-Seite auf, um den Vertex AI-Dienst-Agent zu finden.
CUSTOM_SERVICE_ACCOUNT ist die E-Mail-Adresse des neuen benutzerverwalteten Dienstkontos, das Sie im ersten Schritt dieses Abschnitts erstellt haben.
Benutzerdefiniertes Dienstkonto für Vertex AI-Ressourcen angeben
Das Konfigurieren von Vertex AI für die Verwendung eines bestimmten Dienstkontos für eine Ressource wird als Anhängen des Dienstkontos an die Ressource bezeichnet. In den folgenden Abschnitten wird gezeigt, wie Sie das im vorherigen Abschnitt erstellte Dienstkonto an mehrere Vertex AI-Ressourcen anhängen.
Dienstkonto an eine benutzerdefinierte Trainingsressource anhängen
Zum Konfigurieren von Vertex AI für die Verwendung Ihres neuen Dienstkontos beim benutzerdefinierten Training geben Sie in das Feld serviceAccount
einer CustomJobSpec
-Nachricht die E-Mail-Adresse des Dienstkontos ein, wenn Sie ein benutzerdefiniertes Training starten. Abhängig vom Typ der benutzerdefinierten Trainingsressource, die Sie erstellen, unterscheidet sich die Platzierung dieses Felds in der API-Anfrage:
Wenn Sie einen
CustomJob
erstellen, geben Sie die E-Mail-Adresse des Dienstkontos inCustomJob.jobSpec.serviceAccount
an.Weitere Informationen erhalten Sie im Abschnitt über das Erstellen eines
CustomJob
.Wenn Sie einen
HyperparameterTuningJob
erstellen, geben Sie die E-Mail-Adresse des Dienstkontos inHyperparameterTuningJob.trialJobSpec.serviceAccount
an.Weitere Informationen im Abschnitt über das Erstellen eines
HyperparameterTuningJob
.Wenn Sie eine benutzerdefinierte
TrainingPipeline
ohne Hyperparameter-Abstimmung erstellen, geben Sie die E-Mail-Adresse des Dienstkontos inTrainingPipeline.trainingTaskInputs.serviceAccount
an.Wenn Sie eine benutzerdefinierte
TrainingPipeline
mit Hyperparameter-Abstimmung erstellen, geben Sie die E-Mail-Adresse des Dienstkontos inTrainingPipeline.trainingTaskInputs.trialJobSpec.serviceAccount
an.
Dienstkonto an einen Container für Onlinevorhersagen anhängen
Um einen Vorhersagecontainer für ein benutzerdefiniertes Model
für die Verwendung Ihres neuen Dienstkontos zu konfigurieren, geben Sie die E-Mail-Adresse des Dienstkontos an, wenn Sie das Model
für einen Endpoint
bereitstellen:
Console
Folgen Sie der Anleitung unter Modell mit der Google Cloud Console bereitstellen. Beim Festlegen von Modelleinstellungen wählen Sie das Dienstkonto in der Drop-down-Liste Dienstkonto aus.
gcloud
Modell mithilfe der Vertex AI API bereitstellen Verwenden Sie beim Ausführen des Befehls gcloud
ai endpoints deploy-model
das Flag --service-account
, um die E-Mail-Adresse Ihres Dienstkontos anzugeben.
Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:
- ENDPOINT_ID: Die ID des Endpunkts.
- LOCATION_ID: Die Region, in der Sie Vertex AI verwenden.
- MODEL_ID: Die ID des bereitzustellenden Modells.
-
DEPLOYED_MODEL_NAME: Ein Name für
DeployedModel
. Sie können auch den Anzeigenamen vonModel
fürDeployedModel
verwenden. -
MACHINE_TYPE: Optional. Die für jeden Knoten dieser Bereitstellung verwendeten Maschinenressourcen. Die Standardeinstellung ist
n1-standard-2
. Weitere Informationen zu Maschinentypen. - MIN_REPLICA_COUNT: Die minimale Anzahl von Knoten für diese Bereitstellung. Die Knotenzahl kann je nach der Vorhersagelast erhöht oder verringert werden, bis zur maximalen Anzahl von Knoten und niemals auf weniger als diese Anzahl von Knoten.
- MAX_REPLICA_COUNT: Die maximale Anzahl von Knoten für diese Bereitstellung. Die Knotenanzahl kann je nach der Vorhersagelast erhöht oder verringert werden, bis zu dieser Knotenanzahl und niemals weniger als die Mindestanzahl von Knoten.
- CUSTOM_SERVICE_ACCOUNT: Die E-Mail-Adresse des Dienstkontos. Beispiel:
SA_NAME@PROJECT_ID.iam.gserviceaccount.com
.
Führen Sie den Befehl gcloud ai endpoints deploy-model aus:
Linux, macOS oder Cloud Shell
gcloud ai endpoints deploy-model ENDPOINT_ID \ --region=LOCATION \ --model=MODEL_ID \ --display-name=DEPLOYED_MODEL_NAME \ --machine-type=MACHINE_TYPE \ --min-replica-count=MIN_REPLICA_COUNT \ --max-replica-count=MAX_REPLICA_COUNT \ --traffic-split=0=100 \ --service-account=CUSTOM_SERVICE_ACCOUNT
Windows (PowerShell)
gcloud ai endpoints deploy-model ENDPOINT_ID ` --region=LOCATION ` --model=MODEL_ID ` --display-name=DEPLOYED_MODEL_NAME ` --machine-type=MACHINE_TYPE ` --min-replica-count=MIN_REPLICA_COUNT ` --max-replica-count=MAX_REPLICA_COUNT ` --traffic-split=0=100 ` --service-account=CUSTOM_SERVICE_ACCOUNT
Windows (cmd.exe)
gcloud ai endpoints deploy-model ENDPOINT_ID ^ --region=LOCATION ^ --model=MODEL_ID ^ --display-name=DEPLOYED_MODEL_NAME ^ --machine-type=MACHINE_TYPE ^ --min-replica-count=MIN_REPLICA_COUNT ^ --max-replica-count=MAX_REPLICA_COUNT ^ --traffic-split=0=100 ^ --service-account=CUSTOM_SERVICE_ACCOUNT
API
Modell mithilfe der Vertex AI API bereitstellen Wenn Sie die Anfrage projects.locations.endpoints.deployModel
senden, legen Sie für das Feld deployedModel.serviceAccount
die E-Mail-Adresse des Dienstkontos fest.
Über den Code auf Google Cloud-Dienste zugreifen
Wenn Sie Vertex AI für die Verwendung eines benutzerdefinierten Dienstkontos gemäß der Anleitung in den vorherigen Abschnitten konfigurieren, kann Ihr Trainings- oder Vorhersagecontainer auf alle Google Cloud-Dienste und -Ressourcen zugreifen, auf die das Dienstkonto Zugriff hat.
Um auf Google Cloud-Dienste zuzugreifen, legen Sie in Ihrem Trainingscode oder in Ihrem Code zur Vorhersagebereitstellung die Verwendung von Standardanmeldedaten für Anwendungen (Application Default Credentials, ADC) fest und geben Sie explizit die Projekt-ID oder Projektnummer der Ressource an, auf die Sie zugreifen möchten. Weitere Informationen zum Schreiben von Code für den Zugriff auf andere Google Cloud-Dienste
Nächste Schritte
- Zugriffssteuerung für Vertex AI
- Informationen zu bestimmten IAM-Berechtigungen und den von ihnen unterstützten Vorgängen