Configurar o projeto do Google Cloud para o Vertex AI Pipelines

Antes de usar o Vertex AI Pipelines para orquestrar pipelines de machine learning (ML), é necessário configurar o projeto do Google Cloud. Alguns recursos, como o armazenamento de metadados usado pelo Vertex ML Metadata, são criados no projeto do Google Cloud na primeira vez em que você executa um pipeline.

Use as instruções a seguir para configurar o projeto para o Vertex AI Pipelines.

  1. Crie o projeto do Google Cloud e configure-o para uso com o Vertex AI Pipelines.

  2. Se você não especificar uma conta de serviço, o Vertex AI Pipelines usará a conta de serviço padrão do Compute Engine para executar os pipelines. Saiba mais sobre a conta de serviço padrão do Compute Engine em Usar a conta de serviço padrão do Compute Engine.

    Recomendamos que você crie uma conta de serviço para executar os pipelines e, em seguida, conceda a ela permissões granulares para os recursos do Google Cloud necessários para executar o pipeline.

  3. O Vertex AI Pipelines usa o Cloud Storage para armazenar os artefatos das execuções do pipeline. Crie um bucket do Cloud Storage e conceda à conta de serviço acesso a esse bucket.

  4. O Vertex AI Pipelines usa o Vertex ML Metadata para armazenar os metadados criados pelas execuções de pipeline. Ao executar um pipeline pela primeira vez, a Vertex AI cria o armazenamento de metadados do projeto, caso ele não exista.

    Se você quiser criptografar os dados com uma chave de criptografia gerenciada pelo cliente (CMEK), crie manualmente um armazenamento de metadados com uma chave CMEK antes de executar um pipeline. Caso contrário, se não houver um armazenamento de metadados padrão no projeto, a Vertex AI cria um com a chave CMEK usada ao executar o pipeline pela primeira vez. Depois de criado, o armazenamento de metadados usa uma chave CMEK diferente da que foi usada em uma execução de pipeline.

Configurar seu projeto do Google Cloud

Siga as instruções a seguir para criar um projeto do Google Cloud e configurá-lo para uso com o Vertex AI Pipelines.

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Vertex AI, Compute Engine, and Cloud Storage APIs.

    Enable the APIs

  5. Install the Google Cloud CLI.
  6. To initialize the gcloud CLI, run the following command:

    gcloud init
  7. Update and install gcloud components:

    gcloud components update
    gcloud components install beta
  8. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  9. Make sure that billing is enabled for your Google Cloud project.

  10. Enable the Vertex AI, Compute Engine, and Cloud Storage APIs.

    Enable the APIs

  11. Install the Google Cloud CLI.
  12. To initialize the gcloud CLI, run the following command:

    gcloud init
  13. Update and install gcloud components:

    gcloud components update
    gcloud components install beta

Configurar uma conta de serviço com permissões granulares

Ao executar um pipeline, é possível especificar uma conta de serviço. A execução do pipeline funciona com as permissões dessa conta de serviço.

Se você não especificar uma conta de serviço, a execução do pipeline usará a conta de serviço padrão do Compute Engine. Saiba mais sobre a conta de serviço padrão do Compute Engine em Usar a conta de serviço padrão do Compute Engine.

  • Use as instruções a seguir para criar uma conta de serviço e conceder a ela permissões granulares para os recursos do Google Cloud.

    1. Execute o seguinte comando para criar uma conta de serviço:

      gcloud iam service-accounts create SERVICE_ACCOUNT_ID \
          --description="DESCRIPTION" \
          --display-name="DISPLAY_NAME" \
          --project=PROJECT_ID
      

      Substitua os seguintes valores:

      • SERVICE_ACCOUNT_ID: o ID da conta de serviço.
      • DESCRIPTION: (opcional): uma descrição da conta de serviço.
      • DISPLAY_NAME: o nome de exibição dessa conta de serviço.
      • PROJECT_ID: o projeto em que a conta de serviço será criada.

      Saiba mais sobre como criar uma conta de serviço.

    2. Conceda à conta de serviço acesso à Vertex AI. Pode levar algum tempo para a mudança no acesso ser propagada. Para mais informações, consulte Propagação de alteração de acesso.

      gcloud projects add-iam-policy-binding PROJECT_ID \
          --member="serviceAccount:SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com" \
          --role="roles/aiplatform.user"
      

      Substitua os seguintes valores:

      • PROJECT_ID: o projeto em que a conta de serviço foi criada.
      • SERVICE_ACCOUNT_ID: o ID da conta de serviço.
    3. É possível usar o Artifact Registry para hospedar imagens de contêiner e modelos do Kubeflow Pipelines.

      Para mais informações sobre o Artifact Registry, consulte a documentação do Artifact Registry.

    4. Conceda à conta de serviço acesso a todos os recursos do Google Cloud que você usa nos pipelines.

      gcloud projects add-iam-policy-binding PROJECT_ID \
          --member="serviceAccount:SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com" \
          --role="ROLE_NAME"
      

      Substitua os seguintes valores:

      • PROJECT_ID: o projeto em que a conta de serviço foi criada.
      • SERVICE_ACCOUNT_ID: o ID da conta de serviço.
      • ROLE_NAME: o papel do Identity and Access Management a ser concedido a essa conta de serviço.
    5. Para usar o Vertex AI Pipelines para executar pipelines com essa conta de serviço, execute o seguinte comando para conceder à conta de usuário o papel roles/iam.serviceAccountUser para a conta de serviço.

      gcloud iam service-accounts add-iam-policy-binding \
          SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com \
          --member="user:USER_EMAIL" \
          --role="roles/iam.serviceAccountUser"
      

      Substitua os seguintes valores:

      • SERVICE_ACCOUNT_ID: o ID da conta de serviço.
      • PROJECT_ID: o projeto em que a conta de serviço foi criada.
      • USER_EMAIL: o endereço de e-mail do usuário que executa os pipelines como essa conta de serviço.
  • Se você preferir usar a conta de serviço padrão do Compute Engine para executar pipelines, ative a API Compute Engine e conceda à sua conta de serviço padrão acesso à Vertex AI. Pode levar algum tempo para a mudança no acesso ser propagada. Para mais informações, consulte Propagação de alteração de acesso.

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \
        --role="roles/aiplatform.user"
    

    Substitua os seguintes valores:

    • PROJECT_ID: o projeto em que a conta de serviço foi criada.
    • PROJECT_NUMBER: o projeto em que a conta de serviço foi criada.

    Enable the API

Configurar um bucket do Cloud Storage para artefatos de pipeline

O Vertex AI Pipelines armazena os artefatos das execuções de pipeline usando o Cloud Storage. Use as instruções a seguir para criar um bucket do Cloud Storage e conceder à sua conta de serviço (ou à conta de serviço padrão do Compute Engine) acesso para ler e gravar objetos nesse bucket.

  1. Execute o comando a seguir para criar um bucket do Cloud Storage na região em que você quer executar os pipelines.

    gcloud storage buckets create gs://BUCKET_NAME --location=BUCKET_LOCATION --project=PROJECT_ID
    

    Substitua os seguintes valores:

    • PROJECT_ID: especifique o projeto ao qual seu bucket está associado.
    • BUCKET_LOCATION: especifique o local do bucket. Por exemplo, US-CENTRAL1.
    • BUCKET_NAME é o nome que você quer dar ao bucket, sujeito aos requisitos de nomenclatura. Por exemplo, my-bucket.

    Leia mais sobre como criar buckets do Cloud Storage.

  2. Execute os comandos a seguir para conceder à conta de serviço acesso para ler e gravar artefatos de pipeline no bucket criado na etapa anterior.

    gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
    --member=serviceAccount:SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com \
    --role=roles/storage.objectUser
    

    Substitua os seguintes valores:

    • SERVICE_ACCOUNT_ID: o ID da conta de serviço.
    • PROJECT_ID: o projeto em que a conta de serviço foi criada.
    • BUCKET_NAME: o nome do bucket a que você está concedendo acesso para a conta de serviço.

    Se preferir usar a conta de serviço padrão do Compute Engine para executar os pipelines, execute o comando gcloud iam service-accounts list para localizar o número do projeto dessa conta.

    gcloud iam service-accounts list
    

    O nome da conta de serviço padrão do Compute Engine tem o seguinte formato: PROJECT_NUMBER-compute@developer.gserviceaccount.com.

    Execute o seguinte comando para conceder à conta de serviço padrão do Compute Engine acesso para ler e gravar artefatos de pipeline no bucket que você criou na etapa anterior.

    gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
    --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \
    --role=roles/storage.objectUser
    

    Substitua os seguintes valores:

    • PROJECT_NUMBER: o número do projeto da conta de serviço padrão do Compute Engine.
    • BUCKET_NAME: o nome do bucket a que você está concedendo acesso para a conta de serviço.

    Saiba mais sobre como controlar o acesso aos buckets do Cloud Storage.

Criar um armazenamento de metadados que use uma CMEK (opcional)

Use as instruções a seguir para criar uma CMEK e configurar um armazenamento de metadados do Vertex ML Metadata que usa essa CMEK.

  1. Use o Cloud Key Management Service para configurar uma chave de criptografia gerenciada pelo cliente.

  2. Use a seguinte chamada REST para criar o armazenamento de metadados padrão do projeto usando a CMEK.

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • LOCATION_ID: sua região.
    • PROJECT_ID: o ID do projeto.
    • KEY_RING: o nome do keyring do Cloud Key Management Service em que a chave de criptografia está ativada.
    • KEY_NAME: o nome da chave de criptografia que você quer usar nesse armazenamento de metadados.

    Método HTTP e URL:

    POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/metadataStores?metadata_store_id=default

    Corpo JSON da solicitação:

    {
      "encryption_spec": {
        "kms_key_name": "projects/PROJECT_ID/locations/LOCATION_ID/keyRings/KEY_RING/cryptoKeys/KEY_NAME"
      },
    }
    

    Para enviar a solicitação, expanda uma destas opções:

    Você receberá uma resposta JSON semelhante a esta:

    {
      "name": "projects/PROJECT_ID/locations/LOCATION_ID/operations/OPERATIONS_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.aiplatform.v1.CreateMetadataStoreOperationMetadata",
        "genericMetadata": {
          "createTime": "2021-05-18T18:47:14.494997Z",
          "updateTime": "2021-05-18T18:47:14.494997Z"
        }
      }
    }