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 usa Vertex ML Metadatax, se crean en el proyecto de Google 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 Google 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. Para obtener más información sobre la cuenta de servicio predeterminada de Compute Engine, consulta Usa la cuenta de servicio predeterminada de Compute Engine.

    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. Cuando ejecutas una canalización por primera vez, si el almacén de metadatos de tu proyecto no existe, 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), puedes crear de forma manual tu almacén de metadatos con una clave de CMEK antes de ejecutar una canalización. De lo contrario, si no hay un almacén de metadatos predeterminado en tu proyecto, Vertex AI crea el almacén de metadatos de tu proyecto con la clave CMEK que se usa cuando ejecutas la canalización por primera vez. Después de crear el almacén de metadatos, usa una clave CMEK que es diferente de la clave CMEK que se usa en una ejecución de canalización.

Configura el proyecto de Google Cloud

Usa las siguientes instrucciones para crear un proyecto de Google 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. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.

  4. Enable the Vertex AI 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. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.

  10. Enable the Vertex AI 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

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. Para obtener más información sobre la cuenta de servicio predeterminada de Compute Engine, consulta Usa la cuenta de servicio predeterminada de Compute Engine.

  • 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. Ten en cuenta que el cambio de acceso puede tardar un poco 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"
      

      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. 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. 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 y otorga a tu cuenta de servicio predeterminada acceso a Vertex AI. Ten en cuenta que el cambio de acceso puede tardar un poco 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"
    

    Reemplaza los siguientes valores:

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

    Enable the 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.

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

    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 bukets 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.

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

    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.

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

    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.

    Para obtener más información sobre cómo controlar el acceso a los buckets 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_ID: Tu región.
    • PROJECT_ID: El 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_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, expande una de estas opciones:

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

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