En esta guía se describe cómo configurar Vertex AI para que use una cuenta de servicio personalizada en los siguientes casos:
Cuando realizas un entrenamiento personalizado, puedes configurar Vertex AI para que use una cuenta de servicio personalizada en el contenedor de entrenamiento, ya sea un contenedor precompilado o un contenedor personalizado.
Cuando despliegas un recurso
Model
con entrenamiento personalizado en unEndpoint
recurso para ofrecer predicciones online, puedes configurar Vertex AI para que use una cuenta de servicio personalizada en el contenedor que ofrece predicciones, ya sea un contenedor precompilado o un contenedor personalizado.Cuando creas un clúster de Ray en Vertex AI, puedes definir una cuenta de servicio personalizada para todos los nodos del clúster.
Cuándo usar una cuenta de servicio personalizada
Cuando se ejecuta Vertex AI, suele actuar con los permisos de una de las varias cuentas de servicio que Google crea y gestiona para tu proyecto de Google Cloud . Para conceder a Vertex AI un mayor acceso a otros Google Cloud servicios en determinados contextos, puedes añadir roles específicos a los agentes de servicio de Vertex AI.
Sin embargo, personalizar los permisos de los agentes de servicio puede no proporcionar el control de acceso específico que quieres. Algunos casos prácticos habituales son los siguientes:
- Permitir menos permisos a las tareas y los modelos de Vertex AI. El agente de servicio predeterminado de Vertex AI tiene acceso a BigQuery y Cloud Storage.
- Permitir que diferentes tareas accedan a diferentes recursos. Puede que quieras permitir que muchos usuarios inicien trabajos en un solo proyecto, pero que los trabajos de cada usuario solo tengan acceso a una tabla de BigQuery o a un bucket de Cloud Storage concretos.
Por ejemplo, puede que quieras personalizar individualmente cada trabajo de entrenamiento personalizado que ejecutes para tener acceso a diferentesGoogle Cloud recursos fuera de tu proyecto.
Además, personalizar los permisos de los agentes de servicio no cambia los permisos disponibles para un contenedor que ofrece predicciones de un Model
entrenado de forma personalizada.
Para personalizar el acceso cada vez que realices un entrenamiento personalizado o para personalizar los permisos del contenedor de predicción de un Model
con entrenamiento personalizado, debes usar una cuenta de servicio personalizada.
Acceso predeterminado
En esta sección se describe el acceso predeterminado disponible para los contenedores de entrenamiento personalizado y los contenedores de predicción de los recursos Model
entrenados de forma personalizada.
Cuando usas una cuenta de servicio personalizada, anulas este acceso para un recurso específico de CustomJob
, HyperparameterTuningJob
, TrainingPipeline
o DeployedModel
.
Contenedores de entrenamiento
Cuando creas un CustomJob
, un HyperparameterTuningJob
o un TrainingPipeline
personalizado, el contenedor de entrenamiento se ejecuta de forma predeterminada con el agente del servicio de código personalizado de Vertex AI de tuGoogle Cloud proyecto.
Consulta más información sobre el agente de servicio de código personalizado de Vertex AI, incluido cómo darle acceso a recursos adicionales Google Cloud .
Contenedores de predicción
Cuando implementas un Model
con entrenamiento personalizado en un Endpoint
, el contenedor de predicción se ejecuta con una cuenta de servicio gestionada por Vertex AI. Esta cuenta de servicio es diferente de los agentes de servicio de Vertex AI.
La cuenta de servicio que usa el contenedor de predicción de forma predeterminada tiene permiso para leer artefactos de modelos que Vertex AI pone a disposición en un URI almacenado en la variable de entorno AIP_STORAGE_URI
. No confíes en que la cuenta de servicio tenga otros permisos. No puedes personalizar los permisos de la cuenta de servicio.
Configurar una cuenta de servicio personalizada
En las siguientes secciones se describe cómo configurar una cuenta de servicio personalizada para usarla con Vertex AI y cómo configurar un CustomJob
, HyperparameterTuningJob
, TrainingPipeline
o DeployedModel
para que use la cuenta de servicio. Ten en cuenta que no puedes configurar una cuenta de servicio personalizada para extraer imágenes de Artifact Registry. Vertex AI usa la cuenta de servicio predeterminada para extraer imágenes.
Configurar una cuenta de servicio personalizada
Para configurar una cuenta de servicio personalizada, sigue estos pasos:
Crea una cuenta de servicio gestionada por el usuario. La cuenta de servicio gestionada por el usuario puede estar en el mismo proyecto que tus recursos de Vertex AI o en otro proyecto.
Concede a tu nueva cuenta de servicio los roles de gestión de identidades y accesos que le permitan acceder a los Google Cloud servicios y recursos que quieras que Vertex AI pueda usar durante el entrenamiento personalizado o la predicción.
Opcional: Si la cuenta de servicio gestionada por el usuario está en un proyecto distinto al de tus trabajos de entrenamiento, debes asignar el rol Creador de tokens de cuenta de servicio (roles/iam.serviceAccountTokenCreator) al agente de servicio de Vertex AI del proyecto en el que estés usando Vertex AI.
gcloud iam service-accounts add-iam-policy-binding \ --role=roles/iam.serviceAccountTokenCreator \ --member=serviceAccount:AI_PLATFORM_SERVICE_AGENT \ CUSTOM_SERVICE_ACCOUNT
Opcional: Si también tienes previsto usar la cuenta de servicio gestionada por el usuario para las predicciones, debes asignar el rol Administrador de cuentas de servicio (
roles/iam.serviceAccountAdmin
) al agente de servicio de Vertex AI del proyecto en el que uses Vertex AI:gcloud iam service-accounts add-iam-policy-binding \ --role=roles/iam.serviceAccountAdmin \ --member=serviceAccount:AI_PLATFORM_SERVICE_AGENT \ CUSTOM_SERVICE_ACCOUNT
Haz los cambios siguientes:
AI_PLATFORM_SERVICE_AGENT: dirección de correo del agente de servicio de Vertex AI de tu proyecto, que tiene el siguiente formato:
service-PROJECT_NUMBER@gcp-sa-aiplatform.iam.gserviceaccount.com
Para encontrar el agente de servicio de Vertex AI, ve a la página Gestión de identidades y accesos de la Google Cloud consola.
CUSTOM_SERVICE_ACCOUNT: la dirección de correo de la nueva cuenta de servicio gestionada por el usuario que has creado en el primer paso de esta sección.
Especificar una cuenta de servicio personalizada para los recursos de Vertex AI
El proceso de configuración de Vertex AI para usar una cuenta de servicio específica en un recurso se denomina asociar la cuenta de servicio alrecurso. En las siguientes secciones se describe cómo asignar la cuenta de servicio que has creado en la sección anterior a varios recursos de Vertex AI.
Asociar una cuenta de servicio a un recurso de entrenamiento personalizado
Para configurar Vertex AI de forma que use tu nueva cuenta de servicio durante el entrenamiento personalizado, especifica la dirección de correo de la cuenta de servicio en el campo serviceAccount
de un mensaje CustomJobSpec
cuando inicies el entrenamiento personalizado. En función del tipo de recurso de entrenamiento personalizado que estés creando, la ubicación de este campo en tu solicitud de API será diferente:
Si vas a crear un
CustomJob
, especifica la dirección de correo de la cuenta de servicio enCustomJob.jobSpec.serviceAccount
.Si vas a crear un
HyperparameterTuningJob
, especifica la dirección de correo de la cuenta de servicio enHyperparameterTuningJob.trialJobSpec.serviceAccount
.Si vas a crear un
TrainingPipeline
personalizado sin ajuste de hiperparámetros, especifica la dirección de correo de la cuenta de servicio enTrainingPipeline.trainingTaskInputs.serviceAccount
.Si vas a crear un
TrainingPipeline
personalizado con ajuste de hiperparámetros, especifica la dirección de correo de la cuenta de servicio enTrainingPipeline.trainingTaskInputs.trialJobSpec.serviceAccount
.
Asociar una cuenta de servicio a un contenedor que proporcione predicciones online
Para configurar el contenedor de predicciones de un Model
entrenado de forma personalizada para que use tu nueva cuenta de servicio, especifica la dirección de correo de la cuenta de servicio cuando implementes el Model
en un Endpoint
:
Consola
Sigue las instrucciones de la sección Desplegar un modelo con la consolaGoogle Cloud . Cuando especifiques la configuración del modelo, selecciona la cuenta de servicio en la lista desplegable Cuenta de servicio.
gcloud
Sigue las instrucciones de Desplegar un modelo con la API de Vertex AI. Cuando ejecutes el comando gcloud
ai endpoints deploy-model
, usa la marca --service-account
para especificar la dirección de correo de tu cuenta de servicio.
Antes de usar los datos de los comandos que se indican a continuación, haz los siguientes cambios:
- ENDPOINT_ID: ID del endpoint.
- LOCATION_ID: la región en la que usas Vertex AI.
- MODEL_ID: ID del modelo que se va a implementar.
-
DEPLOYED_MODEL_NAME: nombre del
DeployedModel
. También puedes usar el nombre visible de laModel
para laDeployedModel
. -
MACHINE_TYPE: opcional. Los recursos de la máquina que se usan en cada nodo de esta implementación. Su ajuste predeterminado es
n1-standard-2
. Más información sobre los tipos de máquinas - MIN_REPLICA_COUNT: número mínimo de nodos de esta implementación. El número de nodos se puede aumentar o reducir según lo requiera la carga de inferencia, hasta el número máximo de nodos y nunca por debajo de este número.
- MAX_REPLICA_COUNT: número máximo de nodos de este despliegue. El número de nodos se puede aumentar o reducir según lo requiera la carga de inferencia, hasta este número de nodos y nunca por debajo del número mínimo de nodos.
- CUSTOM_SERVICE_ACCOUNT: la dirección de correo de la cuenta de servicio. Por ejemplo:
SA_NAME@PROJECT_ID.iam.gserviceaccount.com
.
Ejecuta el comando gcloud ai endpoints deploy-model:
Linux, macOS o 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
Sigue las instrucciones de Desplegar un modelo con la API de Vertex AI. Cuando envíes la
projects.locations.endpoints.deployModel
solicitud, asigna al
deployedModel.serviceAccount
campo
la dirección de correo de la cuenta de servicio.
Acceder a los Google Cloud servicios en tu código
Si configuras Vertex AI para que use una cuenta de servicio personalizada siguiendo las instrucciones de las secciones anteriores, tu contenedor de entrenamiento o tu contenedor de predicción podrán acceder a cualquier servicio y recurso al que tenga acceso la cuenta de servicio. Google Cloud
Para acceder a los servicios, escribe tu código de entrenamiento o tu código de servicio de predicciones para usar Credenciales predeterminadas de la aplicación (ADC) y especifica explícitamente el ID o el número de proyecto del recurso al que quieras acceder. Google Cloud Consulta más información sobre cómo escribir tu código para acceder a otros servicios Google Cloud.
Siguientes pasos
- Consulta más información sobre el control de acceso de Vertex AI.
- Consulta información sobre los permisos de gestión de identidades y accesos específicos y las operaciones que admiten.