Configurar un proyecto de Google Cloud para Vertex AI Pipelines

Antes de usar Vertex AI Pipelines para orquestar tus flujos de procesamiento de aprendizaje automático (ML), debes configurar tu Google Cloud proyecto. Algunos recursos, como el almacén de metadatos que usa Vertex ML Metadata, se crean en tuGoogle Cloud proyecto la primera vez que ejecutas una canalización.

Sigue estas instrucciones para configurar tu proyecto para Vertex AI Pipelines.

  1. Crea tu proyecto Google Cloud y configúralo para usarlo conVertex AI Pipelines.

  2. Si no especificas una cuenta de servicio, Vertex AI Pipelines usará la cuenta de servicio predeterminada de Compute Engine para ejecutar tus flujos de trabajo. Para obtener más información sobre la cuenta de servicio predeterminada de Compute Engine, consulta el artículo Usar la cuenta de servicio predeterminada de Compute Engine.

    Te recomendamos que crees una cuenta de servicio para ejecutar tus flujos de procesamiento y, a continuación, concedas a esta cuenta permisos específicos para los Google Cloud recursos que necesites para ejecutar tu flujo de procesamiento.

  3. Vertex AI Pipelines usa Cloud Storage para almacenar los artefactos de las ejecuciones de tu flujo de trabajo. Crea un segmento de Cloud Storage y concede acceso a tu cuenta de servicio a este segmento.

  4. Vertex AI Pipelines usa Vertex ML Metadata para almacenar los metadatos creados por las ejecuciones de tu flujo de procesamiento. Cuando ejecutas un flujo de trabajo por primera vez, si el almacén de metadatos de tu proyecto no existe, Vertex AI lo crea.

    Si quieres que tus datos se encripten con una clave de encriptado gestionada por el cliente (CMEK), puedes crear manualmente tu almacén de metadatos con una clave CMEK antes de ejecutar una canalización. De lo contrario, si no hay ningún almacén de metadatos predeterminado en tu proyecto, Vertex AI creará el almacén de metadatos de tu proyecto con la clave CMEK que se haya usado al ejecutar la canalización por primera vez. Una vez creado el almacén de metadatos, utiliza una clave CMEK diferente de la que se usa en una ejecución de una canalización.

Configurar un Google Cloud proyecto

Sigue estas instrucciones para crear un proyecto y configurarlo para usarlo con Vertex AI Pipelines. Google Cloud

  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.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

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

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  5. Install the Google Cloud CLI.

  6. Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

  7. Para inicializar gcloud CLI, ejecuta el siguiente comando:

    gcloud init
  8. Después de inicializar gcloud CLI, actualízala e instala los componentes necesarios:

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

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  10. Verify that billing is enabled for your Google Cloud project.

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

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  12. Install the Google Cloud CLI.

  13. Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

  14. Para inicializar gcloud CLI, ejecuta el siguiente comando:

    gcloud init
  15. Después de inicializar gcloud CLI, actualízala e instala los componentes necesarios:

    gcloud components update
    gcloud components install beta
  16. Configurar una cuenta de servicio con permisos granulares

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

    Si no especificas ninguna cuenta de servicio, la ejecución de tu canalización usará la cuenta de servicio predeterminada de Compute Engine. Para obtener más información sobre la cuenta de servicio predeterminada de Compute Engine, consulta el artículo Usar la cuenta de servicio predeterminada de Compute Engine.

    • Sigue estas instrucciones para crear una cuenta de servicio y concederle permisos granulares a los recursos de Google Cloud .

      1. Ejecuta 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
        

        Sustituye los siguientes valores:

        • SERVICE_ACCOUNT_ID: ID de la cuenta de servicio.
        • DESCRIPTION: (opcional). Una descripción de la cuenta de servicio.
        • DISPLAY_NAME: nombre visible de esta cuenta de servicio.
        • PROJECT_ID: el proyecto en el que crearás tu cuenta de servicio.

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

      2. Concede acceso a Vertex AI a tu cuenta de servicio. Ten en cuenta que el cambio de acceso puede tardar un tiempo en propagarse. Para obtener más información, consulta Propagación de cambios de acceso.

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

        Sustituye los siguientes valores:

        • PROJECT_ID: el proyecto en el que se creó tu cuenta de servicio.
        • SERVICE_ACCOUNT_ID: ID de la cuenta de servicio.
      3. Puedes usar Artifact Registry para alojar imágenes de contenedor y plantillas de Kubeflow Pipelines.

        Para obtener más información sobre Artifact Registry, consulta la documentación de Artifact Registry.

      4. Concede a tu cuenta de servicio acceso a los Google Cloud recursos que utilices en tus canalizaciones.

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

        Sustituye los siguientes valores:

        • PROJECT_ID: el proyecto en el que se creó tu cuenta de servicio.
        • SERVICE_ACCOUNT_ID: ID de la cuenta de servicio.
        • ROLE_NAME: el rol de gestión de identidades y accesos que se va a asignar a esta cuenta de servicio.
      5. Para usar Vertex AI Pipelines y ejecutar las pipelines con esta cuenta de servicio, ejecuta el siguiente comando para conceder a tu cuenta de usuario el rol roles/iam.serviceAccountUser de 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"
        

        Sustituye los siguientes valores:

        • SERVICE_ACCOUNT_ID: ID de la cuenta de servicio.
        • PROJECT_ID: el proyecto en el que se creó tu cuenta de servicio.
        • USER_EMAIL: la dirección de correo del usuario que ejecuta pipelines como esta cuenta de servicio.
    • Si prefieres usar la cuenta de servicio predeterminada de Compute Engine para ejecutar tus pipelines, habilita la API de Compute Engine y concede acceso a Vertex AI a tu cuenta de servicio predeterminada. Ten en cuenta que el cambio de acceso puede tardar un tiempo en propagarse. Para obtener más información, consulta Propagación de cambios de acceso.

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

      Sustituye los siguientes valores:

      • PROJECT_ID: el proyecto en el que se creó tu cuenta de servicio predeterminada.
      • PROJECT_NUMBER: el número del proyecto en el que se creó tu cuenta de servicio predeterminada.

      Roles required to enable APIs

      To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

      Enable the API

    Configurar un segmento de Cloud Storage para los artefactos de la canalización

    Vertex AI Pipelines almacena los artefactos de las ejecuciones de tu flujo de procesamiento en Cloud Storage. Sigue estas instrucciones para crear un segmento de Cloud Storage y conceder a tu cuenta de servicio (o a la cuenta de servicio predeterminada de Compute Engine) acceso para leer y escribir objetos en ese segmento.

    1. Ejecuta el siguiente comando para crear un segmento de Cloud Storage en la región en la que quieras ejecutar tus canalizaciones.

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

      Sustituye los siguientes valores:

      • PROJECT_ID: especifica el proyecto al que está asociado tu contenedor.
      • BUCKET_LOCATION: especifica la ubicación de tu contenedor. Por ejemplo, US-CENTRAL1.
      • BUCKET_NAME: el nombre que quieres dar al segmento, sujeto a los requisitos de nomenclatura. Por ejemplo, my-bucket.

      Más información sobre cómo crear cubos de Cloud Storage

    2. Ejecuta los siguientes comandos para conceder a tu cuenta de servicio acceso de lectura y escritura a los artefactos de la canalización en el segmento que has creado en el paso 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
      

      Sustituye los siguientes valores:

      • SERVICE_ACCOUNT_ID: ID de la cuenta de servicio.
      • PROJECT_ID: el proyecto en el que se creó tu cuenta de servicio.
      • BUCKET_NAME: nombre del contenedor al que quieres dar acceso a tu cuenta de servicio.

      Si prefieres usar la cuenta de servicio predeterminada de Compute Engine para ejecutar tus canalizaciones, ejecuta el comando gcloud iam service-accounts list para localizar el número de proyecto de esa cuenta.

      gcloud iam service-accounts list
      

      La cuenta de servicio predeterminada de Compute Engine tiene un nombre como el siguiente: PROJECT_NUMBER-compute@developer.gserviceaccount.com.

      Ejecuta el siguiente comando para conceder a la cuenta de servicio predeterminada de Compute Engine acceso de lectura y escritura a los artefactos de la canalización en el segmento que has creado en el paso anterior.

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

      Sustituye los siguientes valores:

      • PROJECT_NUMBER: número de proyecto de la cuenta de servicio predeterminada de Compute Engine.
      • BUCKET_NAME: nombre del contenedor al que quieres dar acceso a tu cuenta de servicio.

      Más información sobre cómo controlar el acceso a los contenedores de Cloud Storage

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

    Sigue estas instrucciones para crear una CMEK y configurar un almacén de metadatos de Vertex ML Metadata que la use.

    1. Usa Cloud Key Management Service para configurar una clave de cifrado gestionada por el cliente.

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

      Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

      • LOCATION_ID: tu región.
      • PROJECT_ID: tu ID de proyecto.
      • KEY_RING: nombre del conjunto de claves de Cloud Key Management Service en el que se encuentra tu clave de cifrado.
      • KEY_NAME: Nombre de la clave de cifrado que quieres usar en este almacén de metadatos.

      Método HTTP y URL:

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

      Cuerpo JSON de la solicitud:

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

      Para enviar tu solicitud, despliega una de estas opciones:

      Deberías recibir una respuesta JSON similar a la siguiente:

      {
        "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"
          }
        }
      }