En esta guía, se describe cómo configurar Vertex AI para usar una cuenta de servicio personalizada en las siguientes situaciones:
Cuando realizasentrenamiento personalizado, puedes configurar Vertex AI para usar una cuenta de servicio personalizada en el contenedor de entrenamiento, ya sea uncontenedor compilado previamente o un contenedor personalizado.
Cuando implementas un recurso
Model
con entrenamiento personalizado en un recursoEndpoint
para entregar predicciones en línea, puedes configurar Vertex AI a fin de usar una cuenta de servicio personalizada en el contenedor que entrega predicciones, ya sea un contenedor compilado previamente o un contenedor personalizado.Cuando creas un clúster de Ray en Vertex AI, puedes configurar 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, por lo general, actúa con los permisos de una de varias cuentas de servicio que Google crea y administra para tu proyecto de Google Cloud. Para otorgar a Vertex AI un acceso mayor a otros servicios de Google Cloud en ciertos contextos, puedes agregar funciones específicas a los agentes de servicio de Vertex AI.
Sin embargo, personalizar los permisos de los agentes de servicio podría no proporcionar el control de acceso detallado que deseas. Estos son algunos casos de uso comunes:
- Otorgar menos permisos a los trabajos y modelos de Vertex AI. El agente de servicio predeterminado de Vertex AI tiene acceso a BigQuery y Cloud Storage.
- Permitir que diferentes trabajos accedan a diferentes recursos. Es posible que desees permitir que muchos usuarios inicien trabajos en un solo proyecto, pero que otorguen acceso a los trabajos de cada usuario solo a una tabla de BigQuery o a un bucket de Cloud Storage determinados.
Por ejemplo, te recomendamos personalizar de forma individual cada trabajo de entrenamiento personalizado que ejecutas para tener acceso a diferentes recursos de Google Cloud fuera de tu proyecto.
Además, personalizar los permisos de los agentes de servicio no cambia los permisos disponibles para un contenedor que entrega predicciones desde un Model
entrenado de forma personalizada.
Para personalizar el acceso cada vez que realizas un entrenamiento personalizado o los permisos de un contenedor de predicción personalizado de un Model
, debes usar una cuenta de servicio personalizada.
Acceso predeterminado
En esta sección, se describe el acceso predeterminado disponible para los contenedores de entrenamiento personalizados y los contenedores de predicción de recursos del Model
con entrenamiento personalizado.
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
, HyperparameterTuningJob
o un TrainingPipeline
personalizado, el contenedor de entrenamiento se ejecuta de forma predeterminada mediante el agente de servicio de código personalizado de AI Platform del proyecto de Google Cloud.
Obtén más información sobre el agente de servicio de código personalizado de Vertex AI, incluido cómo darle acceso a recursos adicionales de 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 administrada por Vertex AI. Esta cuenta de servicio es diferente de los agentes de servicio de Vertex AI.
La cuenta de servicio que el contenedor de predicción usa de forma predeterminada tiene permiso para leer artefactos del modelo que Vertex AI pone a disposición en un URI almacenado en el variable de entorno de AIP_STORAGE_URI
. No dependas de que la cuenta de servicio tenga otros permisos. No puedes personalizar los permisos de la cuenta de servicio.
Configura una cuenta de servicio personalizada
En las siguientes secciones, se describe cómo configurar una cuenta de servicio personalizada para usar con Vertex AI y cómo configurar CustomJob
, HyperparameterTuningJob
, TrainingPipeline
o DeployedModel
para usar 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.
Configura una cuenta de servicio personalizada
Para configurar una cuenta de servicio personalizada, haz lo siguiente:
Crea una cuenta de servicio administrada por el usuario. La cuenta de servicio administrada por el usuario puede estar en el mismo proyecto que los recursos de Vertex AI o en un proyecto diferente.
Otorga a la cuenta de servicio tus funciones nuevas de IAM que proporcionan acceso a los servicios y recursos de Google Cloud que deseas que Vertex AI pueda usar durante el entrenamiento personalizado o predicción.
Opcional: Si la cuenta de servicio administrada por el usuario está en un proyecto diferente del de tus trabajos de entrenamiento, configura la cuenta de servicio administrada por el usuario para que puedas adjuntarla a tu trabajos de entrenamiento.
Opcional: Si también planeas usar la cuenta de servicio administrada por el usuario para las predicciones, debes otorgar el rol de administrador de cuenta de servicio (
roles/iam.serviceAccountAdmin
) al agente de servicio de Vertex AI del proyecto en el que usas Vertex AI:gcloud iam service-accounts add-iam-policy-binding \ --role=roles/iam.serviceAccountAdmin \ --member=serviceAccount:AI_PLATFORM_SERVICE_AGENT \ CUSTOM_SERVICE_ACCOUNT
Reemplaza lo siguiente:
AI_PLATFORM_SERVICE_AGENT: la dirección de correo electrónico 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 IAM en la consola de Google Cloud.
CUSTOM_SERVICE_ACCOUNT: es la dirección de correo electrónico de la cuenta de servicio administrada por el usuario nueva que creaste en el primer paso de esta sección.
Especifica una cuenta de servicio personalizada para los recursos de Vertex AI
El proceso de configuración de Vertex AI a fin de usar una cuenta de servicio específica para un recurso se llama conectar la cuenta de servicio al recurso. En las siguientes secciones, se describe cómo conectar la cuenta de servicio que creaste en la sección anterior a varios recursos de Vertex AI.
Conecta una cuenta de servicio a un recurso de entrenamiento personalizado
A fin de configurar Vertex AI para usar tu cuenta de servicio nueva durante el entrenamiento personalizado, especifica la dirección de correo electrónico de la cuenta de servicio en el campo serviceAccount
de un mensaje CustomJobSpec
cuando comiences el entrenamiento personalizado. Según el tipo de recurso de entrenamiento personalizado que crees, la ubicación de este campo en tu solicitud a la API será diferente:
Si creas un
CustomJob
, especifica la dirección de correo electrónico de la cuenta de servicio enCustomJob.jobSpec.serviceAccount
.Obtén más información sobre cómo crear un
CustomJob
.Si creas un
HyperparameterTuningJob
, especifica la dirección de correo electrónico de la cuenta de servicio enHyperparameterTuningJob.trialJobSpec.serviceAccount
.Obtén más información sobre cómo crear un
HyperparameterTuningJob
.Si creas una
TrainingPipeline
personalizada sin ajuste de hiperparámetros, especifica la dirección de correo electrónico de la cuenta de servicio enTrainingPipeline.trainingTaskInputs.serviceAccount
.Si creas una
TrainingPipeline
personalizada con ajuste de hiperparámetros, especifica la dirección de correo electrónico de la cuenta de servicio enTrainingPipeline.trainingTaskInputs.trialJobSpec.serviceAccount
.
Conecta una cuenta de servicio a un contenedor que entrega predicciones en línea
A fin de configurar un contenedor de predicción de Model
con entrenamiento personalizado para usar tu cuenta de servicio nueva, especifica la dirección de correo electrónico de la cuenta de servicio cuando implementes Model
en Endpoint
:
Console
Sigue Implementa un modelo con la consola de Google Cloud. Cuando especificas la configuración del modelo, selecciona la cuenta de servicio en la lista desplegable Cuenta de servicio.
gcloud
Sigue la página sobre cómo implementar un modelo con la API de Vertex AI. Cuando ejecutes el comando de gcloud
ai endpoints deploy-model
, usa la marca --service-account
para especificar la dirección de correo electrónico de tu cuenta de servicio.
Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:
- ENDPOINT_ID: Es el ID del extremo.
- LOCATION_ID: la región en la que usas Vertex AI.
- MODEL_ID: El ID del modelo que se implementará.
-
DEPLOYED_MODEL_NAME: Un nombre para
DeployedModel
También puedes usar el nombre comercial deModel
paraDeployedModel
. -
MACHINE_TYPE: Opcional Los recursos de máquina que se usan para cada nodo de esta implementación. Su configuración predeterminada es
n1-standard-2
. Obtén más información sobre los tipos de máquinas. - MIN_REPLICA_COUNT: La cantidad mínima de nodos para esta implementación. El recuento de nodos se puede aumentar o disminuir según lo requiera la carga de predicción, hasta la cantidad máxima de nodos y nunca menos que esta cantidad.
- MAX_REPLICA_COUNT: La cantidad máxima de nodos para esta implementación. El recuento de nodos se puede aumentar o disminuir según lo requiera la carga de predicción, hasta esta cantidad de nodos y nunca menos que la cantidad mínima de nodos.
- CUSTOM_SERVICE_ACCOUNT: La dirección de correo electrónico 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 la página sobre cómo implementar un modelo con la API de Vertex AI. Cuando envíes la solicitud projects.locations.endpoints.deployModel
, establece el campo deployedModel.serviceAccount
como la dirección de correo electrónico de la cuenta de servicio.
Accede a los servicios de Google Cloud en tu código
Si seguiste las instrucciones de las secciones anteriores para configurar Vertex AI a fin de usar una cuenta de servicio personalizada, tu contenedor de entrenamiento o tu contenedor de predicción puede acceder a cualquier servicio y recurso de Google Cloud al que tenga acceso la cuenta de servicio.
Para acceder a los servicios de Google Cloud, escribe el código de entrenamiento o el código de entrega de predicciones a fin de usar las credenciales predeterminadas de la aplicación (ADC). y especifica de forma explícita el ID o el número del proyecto al que deseas acceder. Obtén más información sobre cómo escribir tu código para acceder a otros servicios de Google Cloud.
¿Qué sigue?
- Obtén más información sobre el Control de acceso para Vertex AI.
- Obtén más información sobre los permisos de IAM específicos y las operaciones que admiten.