Neste guia, descrevemos como configurar a Vertex AI para usar uma conta de serviço personalizada nos seguintes cenários:
Ao realizar um treinamento personalizado, você pode configurar a Vertex AI para usar uma conta de serviço personalizada no contêiner de treinamento, seja ele um contêiner pré-criado ou um contêiner personalizado.
Ao implantar um recurso de
Model
treinado personalizado em um recursoEndpoint
para exibir previsões on-line, é possível configurar a Vertex AI para usar uma conta de serviço personalizada no contêiner que exibe previsões, seja ele um contêiner pré-criado ou um contêiner personalizado.Ao criar um cluster do Ray na Vertex AI, é possível definir uma conta de serviço personalizada para todos os nós no cluster.
Quando usar uma conta de serviço personalizada
Quando a Vertex AI é executada, ela geralmente funciona com as permissões de uma das várias contas de serviço que o Google cria e gerencia para o projeto do Google Cloud. Para conceder à Vertex AI maior acesso a outros serviços do Google Cloud em determinados contextos, é possível adicionar papéis específicos aos agentes de serviço da Vertex AI.
No entanto, personalizar as permissões de agentes de serviços pode não fornecer o controle de acesso refinado que você quer. Veja alguns casos de uso comuns:
- Conceder menos permissões para jobs e modelos da Vertex AI. O agente de serviço padrão da Vertex AI tem acesso ao BigQuery e ao Cloud Storage.
- Permitir que jobs diferentes acessem recursos diferentes. Talvez você queira permitir que muitos usuários iniciem jobs em um único projeto, mas conceda o acesso dos jobs de cada um deles apenas a uma determinada tabela do BigQuery ou bucket do Cloud Storage.
Por exemplo, convém personalizar individualmente cada job de treinamento personalizado executado para ter acesso a diferentes recursos do Google Cloud fora do projeto.
Além disso, personalizar as permissões de agentes de serviço não altera as permissões disponíveis para um contêiner que exibe previsões de um Model
treinado personalizado.
Para personalizar o acesso sempre que você realizar o treinamento personalizado ou para personalizar as permissões do contêiner de previsão de um Model
treinado, use uma conta de serviço personalizada.
Acesso padrão
Nesta seção, descrevemos o acesso padrão disponível para contêineres de treinamento
personalizado e os contêineres de previsão de recursos Model
treinados.
Ao usar uma conta de serviço personalizada, você substitui esse acesso a um recurso CustomJob
, HyperparameterTuningJob
, TrainingPipeline
ou DeployedModel
específico.
Como treinar contêineres
Ao criar um CustomJob
, HyperparameterTuningJob
ou um TrainingPipeline
personalizado, o contêiner de treinamento é executado usando por padrão o agente de serviço de código personalizado da Vertex AI do projeto do Google Cloud.
Saiba mais sobre o agente de serviços personalizados de código da Vertex AI, incluindo como conceder acesso a outros recursos do Google Cloud.
Contêineres de previsão
Ao implantar um Model
treinado personalizado em um Endpoint
, o contêiner de
previsão é executado usando uma conta de serviço gerenciada pela Vertex AI. Essa
conta de serviço é diferente dos agentes de serviço da
Vertex AI.
A conta de serviço que o contêiner de previsão usa por padrão tem permissão
para ler artefatos de modelo
que a Vertex AI disponibiliza em um URI armazenado na
variável de ambiente
AIP_STORAGE_URI
. Não dependa da conta de serviço para ter outras permissões. Não é possível personalizar as permissões da conta de serviço.
Configurar uma conta de serviço personalizada
As seções a seguir descrevem como configurar uma conta de serviço personalizada para usar
com a Vertex AI e como configurar um CustomJob
,
HyperparameterTuningJob
, TrainingPipeline
ou DeployedModel
para usar a
conta de serviço. Observe que não é possível configurar uma conta de serviço personalizada para extrair
imagens do Artifact Registry. A Vertex AI usa a conta de serviço padrão para
extrair imagens.
Configurar uma conta de serviço personalizada
Para configurar uma conta de serviço personalizada, faça o seguinte:
Crie uma conta de serviço gerenciada pelo usuário. A conta de serviço gerenciada pelo usuário pode estar no mesmo projeto que seus recursos da Vertex AI ou em um projeto diferente.
Conceda seus novos papéis de IAM da conta de serviço que fornecem acesso aos serviços e recursos do Google Cloud que você quer que a Vertex AI use durante o treinamento personalizado ou previsão.
Opcional: se a conta de serviço gerenciada pelo usuário estiver em um projeto diferente dos jobs de treinamento, configure a conta de serviço gerenciada pelo usuário para que seja possível anexá-la aos jobs de treinamento.
Opcional: se você também pretende usar a conta de serviço gerenciada pelo usuário para previsões, é necessário conceder o papel de administrador da conta de serviço (
roles/iam.serviceAccountAdmin
) ao agente de serviço da Vertex AI do projeto em que você está usando a Vertex AI:gcloud iam service-accounts add-iam-policy-binding \ --role=roles/iam.serviceAccountAdmin \ --member=serviceAccount:AI_PLATFORM_SERVICE_AGENT \ CUSTOM_SERVICE_ACCOUNT
Substitua:
AI_PLATFORM_SERVICE_AGENT: o endereço de e-mail do agente de serviço da Vertex AI do seu projeto, que tem o seguinte formato:
service-PROJECT_NUMBER@gcp-sa-aiplatform.iam.gserviceaccount.com
Para encontrar o agente de serviço da Vertex AI, acesse a página IAM no console do Google Cloud.
CUSTOM_SERVICE_ACCOUNT: o endereço de e-mail da nova conta de serviço gerenciada pelo usuário que você criou na primeira etapa desta seção.
Especificar uma conta de serviço personalizada para recursos da Vertex AI
O processo de configuração da Vertex AI para usar uma conta de serviço específica para um recurso é chamado de anexação da conta de serviço ao recurso.. As seções a seguir descrevem como anexar a conta de serviço criada na seção anterior a vários recursos da Vertex AI.
Anexar uma conta de serviço a um recurso de treinamento personalizado
Para configurar a Vertex AI para usar a nova conta de serviço
durante o treinamento personalizado, especifique o endereço de e-mail da conta de serviço no
campo serviceAccount
de uma mensgem CustomJobSpec
quando iniciar o treinamento personalizado. Dependendo do tipo de recurso de treinamento personalizado que você está criando, a colocação desse campo na solicitação de API é diferente:
Se você estiver criando um
CustomJob
, especifique o endereço de e-mail da conta de serviço emCustomJob.jobSpec.serviceAccount
.Saiba mais sobre como criar um
CustomJob
.Se você estiver criando um
HyperparameterTuningJob
, especifique o endereço de e-mail da conta de serviço emHyperparameterTuningJob.trialJobSpec.serviceAccount
.Saiba mais sobre como criar um
HyperparameterTuningJob
.Se você estiver criando um
TrainingPipeline
personalizado sem ajuste de hiperparâmetro, especifique o endereço de e-mail da conta de serviço emTrainingPipeline.trainingTaskInputs.serviceAccount
.Se você estiver criando uma
TrainingPipeline
personalizada com ajuste de hiperparâmetros, especifique o endereço de e-mail da conta de serviço emTrainingPipeline.trainingTaskInputs.trialJobSpec.serviceAccount
.
Anexar uma conta de serviço a um contêiner que exiba predições on-line;
Para configurar um contêiner de previsão Model
treinado e treinado para usar sua nova conta de serviço, especifique o endereço de e-mail da conta de serviço ao implantar o Model
em um Endpoint
:
Console
Como implantar um modelo usando o console do Google Cloud. Ao especificar as configurações do modelo, selecione a conta de serviço na lista suspensa Conta de serviço.
gcloud
Consulte Como implantar um modelo usando a
API Vertex AI. Ao executar o comando gcloud
ai endpoints deploy-model
, use a sinalização --service-account
para especificar o endereço de e-mail da conta de serviço.
Antes de usar os dados do comando abaixo, faça estas substituições:
- ENDPOINT_ID: o ID do endpoint.
- LOCATION_ID: a região em que você está usando a Vertex AI.
- MODEL_ID: o ID do modelo a ser implantado.
-
DEPLOYED_MODEL_NAME: um nome para
DeployedModel
. Também é possível usar o nome de exibição doModel
para oDeployedModel
. -
MACHINE_TYPE: opcional. Os recursos de máquina usados para cada nó
desta implantação. A configuração padrão é
n1-standard-2
. Saiba mais sobre tipos de máquinas. - MIN_REPLICA_COUNT: o número mínimo de nós para esta implantação. A contagem de nós pode ser aumentada ou reduzida conforme necessário pela carga de previsão, até o número máximo de nós e nunca menos que esse número.
- MAX_REPLICA_COUNT: o número máximo de nós para esta implantação. A contagem de nós pode ser aumentada ou reduzida conforme necessário pela carga de previsão, até esse número de nós e nunca menos que o número mínimo de nós.
- CUSTOM_SERVICE_ACCOUNT: o endereço de e-mail da conta de serviço. Por exemplo,
SA_NAME@PROJECT_ID.iam.gserviceaccount.com
.
Execute o comando gcloud ai endpoints deploy-model:
Linux, macOS ou 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
Consulte Como implantar um modelo usando a
API Vertex AI. Ao enviar a solicitação projects.locations.endpoints.deployModel
, defina o campo deployedModel.serviceAccount
como o endereço de e-mail.
Acessar os serviços do Google Cloud no seu código
Se você configurar a Vertex AI para usar uma conta de serviço personalizada seguindo as instruções nas seções anteriores, o contêiner de treinamento ou de previsão poderá acessar todos os serviços e recursos do Google Cloud que a conta de serviço pode acessar.
Para acessar os serviços do Google Cloud, escreva um código de treinamento ou um código do serviço de previsão que use o Application Default Credentials (ADC) e especifique explicitamente o ID ou o número do projeto do recurso que você quer acessar. Saiba mais sobre como escrever um código que acessa outros serviços do Google Cloud.
A seguir
- Saiba mais sobre o controle de acesso da Vertex AI.
- Saiba mais sobre permissões de IAM específicas e as operações compatíveis.