Use uma conta de serviço personalizada

Este guia descreve como configurar a Vertex AI para usar uma conta de serviço personalizada nos seguintes cenários:

Quando usar uma conta de serviço personalizada

Quando o Vertex AI é executado, geralmente atua com as autorizações de uma de várias contas de serviço que a Google cria e gere para o seu projeto do Google Cloud . Para conceder ao Vertex AI um acesso aumentado a outros serviços em determinados contextos, pode adicionar funções específicas aos agentes de serviço do Vertex AI. Google Cloud

No entanto, a personalização das autorizações dos agentes de serviço pode não fornecer o controlo de acesso detalhado que pretende. Seguem-se alguns exemplos de utilização comuns:

  • Permitir menos autorizações para tarefas e modelos do Vertex AI. O agente de serviço do Vertex AI predefinido tem acesso ao BigQuery e ao Cloud Storage.
  • Permitir que diferentes tarefas acedam a diferentes recursos. Pode querer permitir que muitos utilizadores iniciem tarefas num único projeto, mas conceder às tarefas de cada utilizador acesso apenas a uma determinada tabela do BigQuery ou a um contentor do Cloud Storage.

Por exemplo, pode querer personalizar individualmente cada tarefa de treino personalizado que executa para ter acesso a diferentesGoogle Cloud recursos fora do seu projeto.

Além disso, a personalização das autorizações dos agentes de serviço não altera as autorizações disponíveis para um contentor que publica previsões a partir de um Model com preparação personalizada.

Para personalizar o acesso sempre que realizar um preparação personalizada ou para personalizar as autorizações do contentor de previsão de um modelo preparado de forma personalizada, tem de usar uma conta de serviço personalizada.Model

Acesso predefinido

Esta secção descreve o acesso predefinido disponível para contentores de preparação personalizados e contentores de previsão de recursos Model preparados de forma personalizada. Quando usa uma conta de serviço personalizada, substitui este acesso para um recurso específico de CustomJob, HyperparameterTuningJob, TrainingPipeline ou DeployedModel.

Contentores de preparação

Quando cria um CustomJob, um HyperparameterTuningJob ou um TrainingPipeline personalizado, o contentor de preparação é executado através do agente de serviço de código personalizado do Vertex AI do seu projeto por predefinição.Google Cloud

Saiba mais sobre o agente de serviço de código personalizado da Vertex AI, incluindo como lhe conceder acesso a Google Cloud recursos adicionais.

Contentores de previsão

Quando implementa um Model preparado de forma personalizada num Endpoint, o contentor de previsão é executado através de uma conta de serviço gerida pelo Vertex AI. Esta conta de serviço é diferente dos agentes do serviço Vertex AI.

A conta de serviço que o contentor de previsão usa por predefinição tem autorização para ler artefactos do modelo que o Vertex AI disponibiliza num URI armazenado na variável de ambiente AIP_STORAGE_URI. Não confie na conta de serviço para ter outras autorizações. Não pode personalizar as autorizações da conta de serviço.

Configure uma conta de serviço personalizada

As secções seguintes 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. Tenha em atenção que não pode configurar uma conta de serviço personalizada para extrair imagens do Artifact Registry. O Vertex AI usa a conta de serviço predefinida para extrair imagens.

Configure uma conta de serviço personalizada

Para configurar uma conta de serviço personalizada, faça o seguinte:

  1. Crie uma conta de serviço gerida pelo utilizador. A conta de serviço gerida pelo utilizador pode estar no mesmo projeto que os seus recursos do Vertex AI ou num projeto diferente.

  2. Conceda à sua nova conta de serviço funções do IAM que forneçam acesso aos serviços e recursos que quer que o Vertex AI possa usar durante a preparação personalizada ou a previsão. Google Cloud

  3. Opcional: se a conta de serviço gerida pelo utilizador estiver num projeto diferente dos seus trabalhos de preparação, tem de conceder a função Criador de tokens da conta de serviço (roles/iam.serviceAccountTokenCreator) ao agente de serviço do Vertex AI do projeto onde está a usar o Vertex AI.

    gcloud iam service-accounts add-iam-policy-binding \
        --role=roles/iam.serviceAccountTokenCreator \
        --member=serviceAccount:AI_PLATFORM_SERVICE_AGENT \
        CUSTOM_SERVICE_ACCOUNT
    
  4. Opcional: se também planeia usar a conta de serviço gerida pelo utilizador para previsões, tem de conceder a função de administrador da conta de serviço (roles/iam.serviceAccountAdmin) ao agente de serviço do Vertex AI do projeto onde está a usar o Vertex AI:

    gcloud iam service-accounts add-iam-policy-binding \
      --role=roles/iam.serviceAccountAdmin \
      --member=serviceAccount:AI_PLATFORM_SERVICE_AGENT \
      CUSTOM_SERVICE_ACCOUNT
    

    Substitua o seguinte:

    • AI_PLATFORM_SERVICE_AGENT: O endereço de email do agente de serviço do 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, aceda à página IAM na Google Cloud consola.

      Aceda ao IAM

    • CUSTOM_SERVICE_ACCOUNT: o endereço de email da nova conta de serviço gerida pelo utilizador que criou no primeiro passo desta secção.

Especifique uma conta de serviço personalizada para recursos da Vertex AI

O processo de configuração do Vertex AI para usar uma conta de serviço específica para um recurso é denominado associação da conta de serviço ao recurso. As secções seguintes descrevem como anexar a conta de serviço que criou na secção anterior a vários recursos do Vertex AI.

Anexe uma conta de serviço a um recurso de treino personalizado

Para configurar o Vertex AI para usar a sua nova conta de serviço durante o treino personalizado, especifique o endereço de email da conta de serviço no campo serviceAccount de uma mensagem CustomJobSpec quando iniciar o treino personalizado. Consoante o tipo de recurso de preparação personalizado que está a criar, a colocação deste campo no seu pedido API é diferente:

  • Se estiver a criar um CustomJob, especifique o endereço de email da conta de serviço em CustomJob.jobSpec.serviceAccount.

    Saiba mais sobre como criar um CustomJob.

  • Se estiver a criar um HyperparameterTuningJob, especifique o endereço de email da conta de serviço em HyperparameterTuningJob.trialJobSpec.serviceAccount.

    Saiba como criar um HyperparameterTuningJob.

  • Se estiver a criar um TrainingPipeline personalizado sem ajuste de hiperparâmetros, especifique o endereço de email da conta de serviço em TrainingPipeline.trainingTaskInputs.serviceAccount.

  • Se estiver a criar um TrainingPipeline personalizado com o ajuste de hiperparâmetros, especifique o endereço de email da conta de serviço em TrainingPipeline.trainingTaskInputs.trialJobSpec.serviceAccount.

Anexe uma conta de serviço a um contentor que forneça previsões online

Para configurar o contentor de previsão do Model com preparação personalizada para usar a sua nova conta de serviço, especifique o endereço de email da conta de serviço quando implementar o Model num Endpoint:

Consola

Siga as instruções em Implementar um modelo através da Google Cloud consola. Quando especificar as definições do modelo, selecione a conta de serviço na lista pendente Conta de serviço.

gcloud

Siga as instruções em Implementar um modelo com a API Vertex AI. Quando executar o comando gcloud ai endpoints deploy-model, use a flag --service-account para especificar o endereço de email da sua conta de serviço.

Antes de usar qualquer um dos dados de comandos abaixo, faça as seguintes substituições:

  • ENDPOINT_ID: o ID do ponto final.
  • LOCATION_ID: a região onde está a usar o Vertex AI.
  • MODEL_ID: o ID do modelo a implementar.
  • DEPLOYED_MODEL_NAME: um nome para o DeployedModel. Também pode usar o nome a apresentar do Model para o DeployedModel.
  • MACHINE_TYPE: opcional. Os recursos da máquina usados para cada nó desta implementação. A predefinição é n1-standard-2. Saiba mais sobre os tipos de máquinas.
  • MIN_REPLICA_COUNT: o número mínimo de nós para esta implementação. O número de nós pode ser aumentado ou diminuído conforme necessário pela carga de inferência, até ao número máximo de nós e nunca inferior a este número de nós.
  • MAX_REPLICA_COUNT: o número máximo de nós para esta implementação. O número de nós pode ser aumentado ou diminuído conforme necessário pela carga de inferência, até este número de nós e nunca inferior ao número mínimo de nós.
  • CUSTOM_SERVICE_ACCOUNT: o endereço de email 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

Siga as instruções em Implementar um modelo com a API Vertex AI. Quando envia o pedido projects.locations.endpoints.deployModel, defina o campo deployedModel.serviceAccount para o endereço de email da conta de serviço.

Aceda Google Cloud aos serviços no seu código

Se configurar o Vertex AI para usar uma conta de serviço personalizada seguindo as instruções nas secções anteriores, o contentor de preparação ou o contentor de previsão podem aceder a quaisquer serviços e recursos aos quais a conta de serviço tenha acesso. Google Cloud

Para aceder aos Google Cloud serviços, escreva o seu código de preparação ou o seu código de publicação de previsões para usar as credenciais predefinidas da aplicação (ADC) e especifique explicitamente o ID do projeto ou o número do projeto do recurso ao qual quer aceder. Saiba como escrever o seu código para aceder a outros Google Cloud serviços.

O que se segue?