Un recurso persistente de Vertex AI es un clúster de larga duración que puedes usar para ejecutar trabajos de entrenamiento personalizados y ejecuciones de canalizaciones. Cuando usas un recurso persistente para una ejecución de canalización, puedes ayudar a garantizar la disponibilidad del recurso de procesamiento y reducir el tiempo de inicio de la tarea de canalización. Los recursos persistentes admiten todas las VMs y GPUs compatibles con los trabajos de entrenamiento personalizados. Obtén más información sobre los recursos persistentes.
Esta página te muestra cómo hacer lo siguiente:
Antes de comenzar
Antes de poder crear una ejecución de canalización con un recurso persistente, primero debes completar los siguientes requisitos previos.
Define y compila una canalización
Define tu canalización y, luego, compila la definición de la canalización en un archivo YAML. Para obtener más información sobre cómo definir y compilar una canalización, consulta Crea una canalización.
Roles de IAM obligatorios
Para obtener los permisos que necesitas para crear un recurso persistente,
pídele a tu administrador que te otorgue el
rol de IAM de administrador de Vertex AI (roles/aiplatform.admin
) en tu proyecto.
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
Este rol predefinido contiene el permiso aiplatform.persistentResources.create
, que se requiere para crear un recurso persistente.
También puedes obtener este permiso con roles personalizados o con otros roles predefinidos.
Crea un recurso persistente
Usa los siguientes ejemplos para crear un recurso persistente que puedas asociar con una ejecución de canalización. Para obtener más información sobre cómo crear recursos persistentes, consulta Crea un recurso persistente.
gcloud
Para crear un recurso persistente que puedas asociar con una ejecución de canalización, usa el comando gcloud ai persistent-resources create
junto con la marca --enable-custom-service-account
.
Un recurso persistente puede tener uno o más grupos de recursos. Para crear varios grupos de recursos en un recurso persistente, especifica varias marcas --resource-pool-spec
.
Puedes especificar todas las configuraciones del grupo de recursos como parte de la línea de comandos o usar la marca --config
para especificar la ruta de acceso a un archivo YAML que contiene las configuraciones.
Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: El ID del proyecto de Google Cloud en el que deseas crear el recurso persistente.
- LOCATION: la región en la que deseas crear el recurso persistente. Para obtener una lista de las regiones compatibles, consulta Disponibilidad de funciones.
- PERSISTENT_RESOURCE_ID: el ID del recurso persistente.
- DISPLAY_NAME: Opcional Es el nombre visible del recurso persistente.
- MACHINE_TYPE: Es el tipo de máquina virtual (VM) que se usará. Para obtener una lista de las VMs compatibles, consulta Tipos de máquinas.
Este campo corresponde al campo
machineSpec.machineType
en el mensaje de la API deResourcePool
. - REPLICA_COUNT: Opcional Es la cantidad de réplicas que se crearán para el grupo de recursos, si no deseas usar el ajuste de escala automático. Este campo corresponde al campo
replicaCount
en el mensaje de la API deResourcePool
. Debes especificar el recuento de réplicas si no especificas los campos MIN_REPLICA_COUNT y MAX_REPLICA_COUNT. - MIN_REPLICA_COUNT: Opcional Es la cantidad mínima de réplicas si usas el ajuste de escala automático para el grupo de recursos. Debes especificar MIN_REPLICA_COUNT y MAX_REPLICA_COUNT para usar el ajuste de escala automático.
- MAX_REPLICA_COUNT: Opcional Es la cantidad máxima de réplicas si usas el ajuste de escala automático para el grupo de recursos. Debes especificar MIN_REPLICA_COUNT y MAX_REPLICA_COUNT para usar el ajuste de escala automático.
- CONFIG: Es la ruta de acceso al archivo de configuración YAML del recurso persistente, que contiene una lista de especificaciones de
ResourcePool
. Si se especifica una opción en el archivo de configuración y en los argumentos de la línea de comandos, los argumentos de la línea de comandos anulan el archivo de configuración. Ten en cuenta que las claves con guiones bajos no son válidas.Archivo de configuración YAML de ejemplo:
resourcePoolSpecs: machineSpec: machineType: n1-standard-4 replicaCount: 1
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud ai persistent-resources create \ --persistent-resource-id=PERSISTENT_RESOURCE_ID \ --display-name=DISPLAY_NAME \ --project=PROJECT_ID \ --region=LOCATION \ --resource-pool-spec="replica-count=REPLICA_COUNT,machine-type=MACHINE_TYPE,min-replica-count=MIN_REPLICA_COUNT,max-replica-count=MAX_REPLICA_COUNT" \ --enable-custom-service-account
Windows (PowerShell)
gcloud ai persistent-resources create ` --persistent-resource-id=PERSISTENT_RESOURCE_ID ` --display-name=DISPLAY_NAME ` --project=PROJECT_ID ` --region=LOCATION ` --resource-pool-spec="replica-count=REPLICA_COUNT,machine-type=MACHINE_TYPE,min-replica-count=MIN_REPLICA_COUNT,max-replica-count=MAX_REPLICA_COUNT" ` --enable-custom-service-account
Windows (cmd.exe)
gcloud ai persistent-resources create ^ --persistent-resource-id=PERSISTENT_RESOURCE_ID ^ --display-name=DISPLAY_NAME ^ --project=PROJECT_ID ^ --region=LOCATION ^ --resource-pool-spec="replica-count=REPLICA_COUNT,machine-type=MACHINE_TYPE,min-replica-count=MIN_REPLICA_COUNT,max-replica-count=MAX_REPLICA_COUNT" ^ --enable-custom-service-account
Deberías recibir una respuesta similar a la que figura a continuación:
Using endpoint [https://us-central1-aiplatform.googleapis.com/] Operation to create PersistentResource [projects/PROJECT_NUMBER/locations/us-central1/persistentResources/mypersistentresource/operations/OPERATION_ID] is submitted successfully. You can view the status of your PersistentResource create operation with the command $ gcloud ai operations describe projects/sample-project/locations/us-central1/operations/OPERATION_ID
Comando gcloud
de ejemplo
gcloud ai persistent-resources create \ --persistent-resource-id=my-persistent-resource \ --region=us-central1 \ --resource-pool-spec="replica-count=4,machine-type=n1-standard-4" --enable-custom-service-account
Configuraciones gcloud
avanzadas
Si deseas especificar opciones de configuración que no están disponibles en los ejemplos anteriores, puedes usar la marca --config
para especificar la ruta a un archivo config.yaml
en tu entorno local que contiene los campos de persistentResources
. Por ejemplo:
gcloud ai persistent-resources create \ --persistent-resource-id=PERSISTENT_RESOURCE_ID \ --project=PROJECT_ID \ --region=LOCATION \ --config=CONFIG --enable-custom-service-account
Python
Antes de probar este ejemplo, sigue las instrucciones de configuración para Python incluidas en la guía de inicio rápido de Vertex AI sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Vertex AI Python.
Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Para crear un recurso persistente que puedas usar con una ejecución de canalización, establece el parámetroenable_custom_service_account
en True
en el objeto ResourceRuntimeSpec
mientras creas el recurso persistente.
my_example_resource = persistent_resource.PersistentResource.create(
persistent_resource_id=PERSISTENT_RESOURCE_ID,
display_name=DISPLAY_NAME,
resource_pools=[
resource_pool.ResourcePool(
machine_spec=machine_spec.MachineSpec(
machine_type=MACHINE_TYPE,
),
replica_count=REPLICA_COUNT,
)
],
resource_runtime_spec=resource_runtime_spec.ResourceRuntimeSpec(
enable_custom_service_account=True,
),
)
Reemplaza lo siguiente:
- PERSISTENT_RESOURCE_ID: El ID del recurso persistente.
- DISPLAY_NAME: Opcional Es el nombre visible del recurso persistente.
- MACHINE_TYPE: Es el tipo de máquina virtual (VM) que se usará. Para obtener una lista de las VMs compatibles, consulta Tipos de máquinas.
Este campo corresponde al campo
machineSpec.machineType
en el mensaje de la API deResourcePool
. - REPLICA_COUNT: Es la cantidad de réplicas que se crearán cuando se cree este grupo de recursos.
REST
Para crear un recurso PersistentResource
que puedas asociar con una ejecución de canalización, envía una solicitud POST con el método persistentResources/create
con el parámetro enable_custom_service_account
establecido en true
en el cuerpo de la solicitud.
Un recurso persistente puede tener uno o más grupos de recursos. Puedes configurar cada grupo de recursos para que use una cantidad fija de réplicas o el ajuste de escala automático.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: El ID del proyecto de Google Cloud en el que deseas crear el recurso persistente.
- LOCATION: la región en la que deseas crear el recurso persistente. Para obtener una lista de las regiones compatibles, consulta Disponibilidad de funciones.
- PERSISTENT_RESOURCE_ID: el ID del recurso persistente.
- DISPLAY_NAME: Opcional Es el nombre visible del recurso persistente.
- MACHINE_TYPE: Es el tipo de máquina virtual (VM) que se usará. Para obtener una lista de las VMs compatibles, consulta Tipos de máquinas.
Este campo corresponde al campo
machineSpec.machineType
en el mensaje de la API deResourcePool
. - REPLICA_COUNT: Opcional Es la cantidad de réplicas que se crearán para el grupo de recursos, si no deseas usar el ajuste de escala automático. Este campo corresponde al campo
replicaCount
en el mensaje de la API deResourcePool
. Debes especificar el recuento de réplicas si no especificas los campos MIN_REPLICA_COUNT y MAX_REPLICA_COUNT. - MIN_REPLICA_COUNT: Opcional Es la cantidad mínima de réplicas si usas el ajuste de escala automático para el grupo de recursos. Debes especificar MIN_REPLICA_COUNT y MAX_REPLICA_COUNT para usar el ajuste de escala automático.
- MAX_REPLICA_COUNT: Opcional Es la cantidad máxima de réplicas si usas el ajuste de escala automático para el grupo de recursos. Debes especificar MIN_REPLICA_COUNT y MAX_REPLICA_COUNT para usar el ajuste de escala automático.
Método HTTP y URL:
POST https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/persistentResources?persistent_resource_id=PERSISTENT_RESOURCE_ID
Cuerpo JSON de la solicitud:
{ "display_name": "DISPLAY_NAME", "resource_pools": [ { "machine_spec": { "machine_type": "MACHINE_TYPE" }, "replica_count": REPLICA_COUNT, "autoscaling_spec": { "min_replica_count": MIN_REPLICA_COUNT, "max_replica_count": MAX_REPLICA_COUNT } } ], "resource_runtime_spec": { "enable_custom_service_account: true } }
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_NUMBER/locations/LOCATION/persistentResources/mypersistentresource/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.aiplatform.v1.CreatePersistentResourceOperationMetadata", "genericMetadata": { "createTime": "2023-02-08T21:17:15.009668Z", "updateTime": "2023-02-08T21:17:15.009668Z" } } }
Crea una ejecución de canalización con el recurso persistente
Usa la siguiente muestra de código para crear una ejecución de canalización que use el recurso persistente:
job = aiplatform.PipelineJob(display_name = 'DISPLAY_NAME',
template_path = 'COMPILED_PIPELINE_PATH',
pipeline_root = 'PIPELINE_ROOT',
project = 'PROJECT_ID',
location = 'LOCATION',
default_runtime = {
"persistentResourceRuntimeDetail": {
"persistentResourceName": "PERSISTENT_RESOURCE_ID",
"taskResourceUnavailableWaitTimeMs": WAIT_TIME,
"taskResourceUnavailableTimeoutBehavior": TIMEOUT_BEHAVIOR,
}
}
Reemplaza lo siguiente:
DISPLAY_NAME: Es el nombre de la canalización. Aparecerá en la consola de Google Cloud.
COMPILED_PIPELINE_PATH: Es la ruta de acceso al archivo YAML de canalización compilado. Puede ser una ruta local o un URI de Cloud Storage.
PIPELINE_ROOT: Especifica un URI de Cloud Storage para almacenar los artefactos de la ejecución de tu canalización.
PROJECT_ID: Es el Google Cloud proyecto en el que se ejecuta esta canalización.
LOCATION: Es la región en la que se ejecuta la ejecución de la canalización. Para obtener más información sobre las regiones en las que está disponible Vertex AI Pipelines, consulta la guía de ubicaciones de Vertex AI. Si no configuras este parámetro, Vertex AI Pipelines usa la ubicación predeterminada establecida en
aiplatform.init
.PERSISTENT_RESOURCE_ID: Es el ID del recurso persistente que creaste.
WAIT_TIME: Es el tiempo en milisegundos que se esperará si el recurso persistente no está disponible.
TIMEOUT_BEHAVIOR: Especifica el comportamiento de resguardo de la tarea de canalización en caso de que se supere WAIT_TIME. Entre los valores posibles, se incluyen los siguientes:
FAIL
La tarea de canalización falla después de exceder el tiempo de espera.FALL_BACK_TO_ON_DEMAND
La tarea de canalización sigue ejecutándose con los recursos de entrenamiento predeterminados de Vertex AI, sin usar el recurso persistente.
¿Qué sigue?
- Obtén información sobre cómo ejecutar una canalización.