Configura el proyecto de Google Cloud para Vertex AI Pipelines

Antes de usar Vertex AI Pipelines para organizar tus canalizaciones de aprendizaje automático (AA), debes configurar tu proyecto de Google Cloud. Algunos recursos, como el almacén de metadatos que usan los metadatos de Vertex ML Metadatax, se crean en el proyecto de Cloud la primera vez que ejecutas una canalización.

Usa las siguientes instrucciones a fin de configurar tu proyecto para Vertex AI Pipelines.

  1. Crea tu proyecto de Cloud y configúralo para usarlo con Vertex AI Pipelines.

  2. Si no especificas una cuenta de servicio, Vertex AI Pipelines usa la cuenta de servicio predeterminada de Compute Engine para ejecutar las canalizaciones. La cuenta de servicio predeterminada de Compute Engine tiene la función Editor de proyecto de forma predeterminada.

    Te recomendamos crear una cuenta de servicio para ejecutar las canalizaciones y, luego, otorgarle a esta cuenta permisos detallados sobre los recursos de Google Cloud necesarios para ejecutar la canalización.

  3. Vertex AI Pipelines usa Cloud Storage para almacenar los artefactos de las ejecuciones de tus canalizaciones. Crea un bucket de Cloud Storage y otorga a tu cuenta de servicio acceso a este bucket.

  4. Vertex AI Pipelines usa metadatos de AA de Vertex para almacenar los metadatos que crean las ejecuciones de canalizaciones. La primera vez que ejecutas una canalización, Vertex AI crea el almacén de metadatos de tu proyecto.

    Si deseas que tus datos se encripten mediante una clave de encriptación administrada por el cliente (CMEK), debes crear tu almacén de metadatos con una clave de CMEK antes de ejecutar una canalización.

    Después de crear el almacén de metadatos, la clave CMEK que usa el almacén de metadatos es independiente de la clave CMEK que se usa en la ejecución de una canalización.

Configura el proyecto de Google Cloud

Usa las siguientes instrucciones para crear un proyecto de Cloud y configurarlo para usarlo con Vertex AI Pipelines.

  1. Accede a tu cuenta de Google Cloud. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
  2. En la página del selector de proyectos de Google Cloud Console, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  3. Comprueba que la facturación esté habilitada en tu proyecto.

    Descubre cómo puedes habilitar la facturación

  4. Habilita las API de Vertex AI and Cloud Storage.

    Habilita las API

  5. Instala y, luego, inicializa Google Cloud CLI.
  6. Instala y actualiza los componentes de gcloud:
    gcloud components update &&
    gcloud components install beta
  7. En la página del selector de proyectos de Google Cloud Console, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  8. Comprueba que la facturación esté habilitada en tu proyecto.

    Descubre cómo puedes habilitar la facturación

  9. Habilita las API de Vertex AI and Cloud Storage.

    Habilita las API

  10. Instala y, luego, inicializa Google Cloud CLI.
  11. Instala y actualiza los componentes de gcloud:
    gcloud components update &&
    gcloud components install beta

Configura una cuenta de servicio con permisos detallados

Cuando ejecutas una canalización, puedes especificar una cuenta de servicio. La ejecución de tu canalización actúa con los permisos de esta cuenta de servicio.

Si no especificas una cuenta de servicio, la ejecución de la canalización usa la cuenta de servicio predeterminada de Compute Engine. La cuenta de servicio predeterminada de Compute Engine tiene la función Editor de proyecto de forma predeterminada.

  • Usa las siguientes instrucciones para crear una cuenta de servicio y otorgarle permisos detallados a los recursos de Google Cloud.

    1. Ejecute el siguiente comando para crear una cuenta de servicio:

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

      Reemplaza los siguientes valores:

      • SERVICE_ACCOUNT_ID: El ID para la cuenta de servicio.
      • DESCRIPTION: Una descripción de la cuenta de servicio.
      • DISPLAY_NAME: El nombre visible de esta cuenta de servicio.
      • PROJECT_ID es el proyecto en el que se creará la cuenta de servicio.

      Más información sobre cómo crear una cuenta de servicio.

    2. Otorga a tu cuenta de servicio acceso a Vertex AI.

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

      Reemplaza los siguientes valores:

      • PROJECT_ID es el proyecto en el que se creó tu cuenta de servicio.
      • SERVICE_ACCOUNT_ID: El ID para la cuenta de servicio.
    3. Si tus canalizaciones usan imágenes de contenedor alojadas en Container Registry, otorga acceso a tu cuenta de servicio para extraer imágenes.

    4. Otorga a tu cuenta de servicio acceso a cualquier recurso de Google Cloud que uses en tus canalizaciones.

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

      Reemplaza los siguientes valores:

      • PROJECT_ID es el proyecto en el que se creó tu cuenta de servicio.
      • SERVICE_ACCOUNT_ID: El ID para la cuenta de servicio.
      • ROLE_NAME: La función de Identity and Access Management que se otorgará a esta cuenta de servicio.
    5. Si deseas usar Vertex AI Pipelines para ejecutar canalizaciones con esta cuenta de servicio, ejecuta el siguiente comando a fin de otorgar a tu cuenta de usuario la función roles/iam.serviceAccountUser para tu cuenta de servicio.

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

      Reemplaza los siguientes valores:

      • SERVICE_ACCOUNT_ID: El ID para la cuenta de servicio.
      • PROJECT_ID es el proyecto en el que se creó tu cuenta de servicio.
      • USER_EMAIL es la dirección de correo electrónico del usuario que ejecuta canalizaciones como esta cuenta de servicio.
  • Si prefieres usar la cuenta de servicio predeterminada de Compute Engine para ejecutar las canalizaciones, habilita la API de Compute Engine.

    Habilita la API

Configura un bucket de Cloud Storage para artefactos de canalización

Vertex AI Pipelines almacena los artefactos de las ejecuciones de tu canalización mediante Cloud Storage. Usa las siguientes instrucciones a fin de crear un bucket de Cloud Storage y otorgar acceso a tu cuenta de servicio (o la cuenta de servicio predeterminada de Compute Engine) para leer y escribir objetos en ese bucket.

  1. Ejecuta el siguiente comando para crear un bucket de Cloud Storage en la región en la que deseas ejecutar las canalizaciones.

    gsutil mb -p PROJECT_ID -l BUCKET_LOCATION gs://BUCKET_NAME
    

    Reemplaza los siguientes valores:

    • PROJECT_ID especifica el proyecto con el que está asociado tu bucket.
    • BUCKET_LOCATION especifica la ubicación de tu bucket, por ejemplo, US-CENTRAL1.
    • BUCKET_NAME es el nombre que deseas asignar a tu bucket, sujeto a los requisitos para nombres. Por ejemplo, my-bucket.

    Obtén más información sobre cómo crear depósitos de Cloud Storage.

  2. Ejecuta los siguientes comandos a fin de otorgar a tu cuenta de servicio acceso para leer y escribir artefactos de canalización en el bucket que creaste en el paso anterior.

    gsutil iam ch \
    serviceAccount:SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com:roles/storage.objectCreator,objectViewer \
    gs://BUCKET_NAME
    
    gsutil iam ch \
    serviceAccount:SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com:roles/storage.objectViewer \
    gs://BUCKET_NAME
    

    Reemplaza los siguientes valores:

    • SERVICE_ACCOUNT_ID: El ID para la cuenta de servicio.
    • PROJECT_ID es el proyecto en el que se creó tu cuenta de servicio.
    • BUCKET_NAME: El nombre del bucket al que le otorgas acceso a tu cuenta de servicio.

    Como alternativa, si prefieres usar la cuenta de servicio predeterminada de Compute Engine para ejecutar tus canalizaciones, ejecuta el comando gcloud iam service-accounts list a fin de ubicar el número de proyecto para esa cuenta.

    gcloud iam service-accounts list
    

    La cuenta de servicio predeterminada de Compute Engine se llama de la siguiente manera: PROJECT_NUMBER-compute@developer.gserviceaccount.com.

    Ejecuta el siguiente comando para otorgar a la cuenta de servicio predeterminada de Compute Engine acceso para leer y escribir artefactos de canalización en el bucket que creaste en el paso anterior.

    gsutil iam ch \
    serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com:roles/storage.objectCreator,objectViewer \
    gs://BUCKET_NAME
    

    Reemplaza los siguientes valores:

    • PROJECT_NUMBER es el número de proyecto para la cuenta de servicio predeterminada de Compute Engine.
    • BUCKET_NAME: El nombre del bucket al que le otorgas acceso a tu cuenta de servicio.

    Obtén más información sobre cómo controlar el acceso a los depósitos de Cloud Storage.

Crea un almacén de metadatos que use CMEK (opcional)

Usa las siguientes instrucciones para crear una CMEK y configurar un almacén de metadatos de Vertex ML Metadata que use esta CMEK.

  1. Usa Cloud Key Management Service para configurar una clave de encriptación administrada por el cliente.

  2. Usa la siguiente llamada de REST para crear el almacén de metadatos predeterminado de tu proyecto mediante el uso de tu CMEK.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • LOCATION: Tu región.
    • PROJECT: ID del proyecto
    • KEY_RING: Es el nombre del llavero de claves de Cloud Key Management Service en el que está activada tu clave de encriptación.
    • KEY_NAME: Es el nombre de la clave de encriptación que deseas usar para este almacén de metadatos.

    Método HTTP y URL:

    POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT/locations/LOCATION/metadataStores?metadata_store_id=default

    Cuerpo JSON de la solicitud:

    {
      "encryption_spec": {
        "kms_key_name": "projects/PROJECT/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME"
      },
    }
    

    Para enviar tu solicitud, expande una de estas opciones:

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

    {
      "name": "projects/12345/locations/us-central1/operations/67890",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.aiplatform.v1beta1.CreateMetadataStoreOperationMetadata",
        "genericMetadata": {
          "createTime": "2021-05-18T18:47:14.494997Z",
          "updateTime": "2021-05-18T18:47:14.494997Z"
        }
      }
    }