Cuando realizas un entrenamiento personalizado, tu código de entrenamiento se ejecuta en una o más instancias de máquina virtual (VM). Puedes configurar qué tipos de VM usar para el entrenamiento: el uso de VM con más recursos de procesamiento puede acelerar el entrenamiento y te permite trabajar con conjuntos de datos más grandes, pero también pueden generar mayores costos de entrenamiento.
En algunos casos, también puedes usar las GPU para acelerar el entrenamiento. Las GPU generan costos adicionales.
De manera opcional, puedes personalizar el tipo y el tamaño de los discos de arranque de tus VM de entrenamiento.
En este documento, se describen los diferentes recursos de procesamiento que puedes usar para el entrenamiento personalizado y cómo configurarlos.
Dónde especificar recursos de procesamiento
Especifica los detalles de configuración dentro de un WorkerPoolSpec
. Según cómo realices el entrenamiento personalizado, coloca este WorkerPoolSpec
en uno de los siguientes campos de la API:
Si creas un recurso
CustomJob
, especifica elWorkerPoolSpec
enCustomJob.jobSpec.workerPoolSpecs
.Si usas la CLI de Google Cloud, puedes usar la marca
--worker-pool-spec
o--config
en el comandogcloud ai custom-jobs create
para lo siguiente: especificar las opciones del grupo de trabajadores.Obtén más información sobre cómo crear un
CustomJob
.Si creas un recurso
HyperparameterTuningJob
, especifica elWorkerPoolSpec
enHyperparameterTuningJob.trialJobSpec.workerPoolSpecs
.Si usas la CLI de gcloud, puedes usar la marca
--config
en el comandogcloud ai hpt-tuning-jobs create
para especificar las opciones de los grupos de trabajadores.Obtén más información sobre cómo crear un
HyperparameterTuningJob
.Si creas un recurso
TrainingPipeline
sin ajuste de hiperparámetros, especifica elWorkerPoolSpec
enTrainingPipeline.trainingTaskInputs.workerPoolSpecs
.Obtén más información sobre cómo crear un recurso
TrainingPipeline
personalizado.Si creas un
TrainingPipeline
con ajuste de hiperparámetros, especifica elWorkerPoolSpec
enTrainingPipeline.trainingTaskInputs.trialJobSpec.workerPoolSpecs
.
Si realizas un entrenamiento distribuido, puedes usar opciones de configuración diferentes para cada grupo de trabajadores.
Tipos de máquina
En tu WorkerPoolSpec
, debes especificar uno de los siguientes tipos de máquina en el campo machineSpec.machineType
. Cada réplica en el grupo de trabajadores se ejecuta en una VM independiente que tiene el tipo de máquina especificado.
a2-ultragpu-1g
*a2-ultragpu-2g
*a2-ultragpu-4g
*a2-ultragpu-8g
*a2-highgpu-1g
*a2-highgpu-2g
*a2-highgpu-4g
*a2-highgpu-8g
*a2-megagpu-16g
*a3-highgpu-8g
*e2-standard-4
e2-standard-8
e2-standard-16
e2-standard-32
e2-highmem-2
e2-highmem-4
e2-highmem-8
e2-highmem-16
e2-highcpu-16
e2-highcpu-32
n2-standard-4
n2-standard-8
n2-standard-16
n2-standard-32
n2-standard-48
n2-standard-64
n2-standard-80
n2-highmem-2
n2-highmem-4
n2-highmem-8
n2-highmem-16
n2-highmem-32
n2-highmem-48
n2-highmem-64
n2-highmem-80
n2-highcpu-16
n2-highcpu-32
n2-highcpu-48
n2-highcpu-64
n2-highcpu-80
n1-standard-4
n1-standard-8
n1-standard-16
n1-standard-32
n1-standard-64
n1-standard-96
n1-highmem-2
n1-highmem-4
n1-highmem-8
n1-highmem-16
n1-highmem-32
n1-highmem-64
n1-highmem-96
n1-highcpu-16
n1-highcpu-32
n1-highcpu-64
n1-highcpu-96
c2-standard-4
c2-standard-8
c2-standard-16
c2-standard-30
c2-standard-60
ct5lp-hightpu-1t
*ct5lp-hightpu-4t
*ct5lp-hightpu-8t
*c2-standard-60
c2-standard-60
c2-standard-60
c2-standard-60
m1-ultramem-40
m1-ultramem-80
m1-ultramem-160
m1-megamem-96
g2-standard-4
*g2-standard-8
*g2-standard-12
*g2-standard-16
*g2-standard-24
*g2-standard-32
*g2-standard-48
*g2-standard-96
*cloud-tpu
*
* Los tipos de máquina marcados con asteriscos en la lista anterior deben usarse con ciertas GPU o TPU. Consulta las siguientes secciones de esta guía.
Para obtener más información sobre las especificaciones técnicas de cada tipo de máquina, consulta la documentación de Compute Engine sobre tipos de máquinas. Si deseas obtener información sobre el costo del uso de cada tipo de máquina para el entrenamiento personalizado, lee Precios.
En los siguientes ejemplos, se indica dónde debes especificar el tipo de máquina cuando creas un CustomJob
:
Consola
En la consola de Google Cloud, no puedes crear un CustomJob
directamente. Sin embargo, puedes crear un TrainingPipeline
que cree un CustomJob
. Cuando crees una TrainingPipeline
en la consola de Google Cloud, especifica un tipo de máquina para cada grupo de trabajadores en el paso Procesamiento y precios, en el campo Tipo de máquina.
gcloud
gcloud ai custom-jobs create \
--region=LOCATION \
--display-name=JOB_NAME \
--worker-pool-spec=machine-type=MACHINE_TYPE,replica-count=REPLICA_COUNT,container-image-uri=CUSTOM_CONTAINER_IMAGE_URI
Java
Antes de probar este ejemplo, sigue las instrucciones de configuración para Java 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 Java.
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.
Node.js
Antes de probar este ejemplo, sigue las instrucciones de configuración para Node.js 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 Node.js.
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.
Python
Si deseas obtener información para instalar o actualizar el SDK de Vertex AI para Python, consulta Instala el SDK de Vertex AI para Python. Si deseas obtener más información, consulta la documentación de referencia de la API de Python.
Para obtener más información, lee la guía para crear un CustomJob
.
GPU
Si escribiste tu código de entrenamiento para usar GPU, puedes configurar tu grupo de trabajadores a fin de que use una o más GPU en cada VM. Para usar las GPU, debes usar un tipo de máquina A2, N1 o G2. Además, el uso de tipos de máquinas más pequeños, como n1-highmem-2
con GPU, puede hacer que el registro falle en algunas cargas de trabajo debido a restricciones de CPU. Si tu trabajo de entrenamiento deja de mostrar registros, considera seleccionar un tipo de máquina más grande.
Vertex AI es compatible con los siguientes tipos de GPU para el entrenamiento personalizado:
NVIDIA_H100_80GB
NVIDIA_A100_80GB
NVIDIA_TESLA_A100
(NVIDIA A100 40 GB)NVIDIA_TESLA_P4
NVIDIA_TESLA_P100
NVIDIA_TESLA_T4
NVIDIA_TESLA_V100
NVIDIA_L4
Si deseas obtener más información sobre la especificación técnica para cada tipo de GPU, consulta la documentación breve de Compute Engine sobre GPU para cargas de trabajo de procesamiento. Si deseas obtener información sobre el costo del uso de cada tipo de máquina para el entrenamiento personalizado, lee Precios.
En tu WorkerPoolSpec
, especifica el tipo de GPU que deseas usar en el campo machineSpec.acceleratorType
y la cantidad de GPU que quieres que cada VM en el grupo de trabajadores use en el campomachineSpec.acceleratorCount
. Sin embargo, tus elecciones para estos campos deben cumplir con las siguientes restricciones:
El tipo de GPU que elijas debe estar disponible en la ubicación en la que realizas el entrenamiento personalizado. No todos los tipos de GPU están disponibles en todas las regiones. Obtén información sobre la disponibilidad regional.
Solo puedes usar una cantidad determinada de GPU en tu configuración. Por ejemplo, puedes usar 2 o 4 GPU
NVIDIA_TESLA_T4
en una VM, pero no 3. A fin de averiguar qué valores deacceleratorCount
son válidos para cada tipo de GPU, consulta la siguiente tabla de compatibilidad.Debes asegurarte de que tu configuración de GPU proporcione suficientes CPU virtuales y memoria para el tipo de máquina con el que la uses. Por ejemplo, si usas el tipo de máquina
n1-standard-32
en tu grupo de trabajadores, cada VM tiene 32 CPU virtuales y 120 GB de memoria. Debido a que cada GPUNVIDIA_TESLA_V100
puede proporcionar hasta 12 CPU virtuales y 76 GB de memoria, debes usar al menos 4 GPU para cada VMn1-standard-32
a fin de cumplir con sus requisitos. (2 GPU no proporcionan los recursos suficientes y no puedes especificar 3 GPU).En la siguiente tabla de compatibilidad, se explica este requisito.
Ten en cuenta la limitación siguiente adicional sobre el uso de GPU para el entrenamiento personalizado que difiere del uso de GPU con Compute Engine:
- Una configuración con 4 GPU
NVIDIA_TESLA_P100
solo proporciona hasta 64 CPU virtuales y 208 GB de memoria en todas las regiones y zonas.
- Una configuración con 4 GPU
En la siguiente tabla de compatibilidad, se enumeran los valores válidos de machineSpec.acceleratorCount
según tus elecciones para machineSpec.machineType
y machineSpec.acceleratorType
:
Números válidos de GPU para cada tipo de máquina | |||||||||
---|---|---|---|---|---|---|---|---|---|
Tipo de máquina | NVIDIA_H100_80GB |
NVIDIA_A100_80GB |
NVIDIA_TESLA_A100 |
NVIDIA_TESLA_P4 |
NVIDIA_TESLA_P100 |
NVIDIA_TESLA_T4 |
NVIDIA_TESLA_V100 |
NVIDIA_L4 |
|
a3-highgpu-8g |
8 | ||||||||
a2-ultragpu-1g |
1 | ||||||||
a2-ultragpu-2g |
2 | ||||||||
a2-ultragpu-4g |
4 | ||||||||
a2-ultragpu-8g |
8 | ||||||||
a2-highgpu-1g |
1 | ||||||||
a2-highgpu-2g |
2 | ||||||||
a2-highgpu-4g |
4 | ||||||||
a2-highgpu-8g |
8 | ||||||||
a2-megagpu-16g |
16 | ||||||||
n1-standard-4 |
1, 2, 4 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4, 8 | |||||
n1-standard-8 |
1, 2, 4 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4, 8 | |||||
n1-standard-16 |
1, 2, 4 | 1, 2, 4 | 1, 2, 4 | 2, 4, 8 | |||||
n1-standard-32 |
2, 4 | 2, 4 | 2, 4 | 4, 8 | |||||
n1-standard-64 |
4 | 4 | 8 | ||||||
n1-standard-96 |
4 | 4 | 8 | ||||||
n1-highmem-2 |
1, 2, 4 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4, 8 | |||||
n1-highmem-4 |
1, 2, 4 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4, 8 | |||||
n1-highmem-8 |
1, 2, 4 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4, 8 | |||||
n1-highmem-16 |
1, 2, 4 | 1, 2, 4 | 1, 2, 4 | 2, 4, 8 | |||||
n1-highmem-32 |
2, 4 | 2, 4 | 2, 4 | 4, 8 | |||||
n1-highmem-64 |
4 | 4 | 8 | ||||||
n1-highmem-96 |
4 | 4 | 8 | ||||||
n1-highcpu-16 |
1, 2, 4 | 1, 2, 4 | 1, 2, 4 | 2, 4, 8 | |||||
n1-highcpu-32 |
2, 4 | 2, 4 | 2, 4 | 4, 8 | |||||
n1-highcpu-64 |
4 | 4 | 4 | 8 | |||||
n1-highcpu-96 |
4 | 4 | 8 | ||||||
g2-standard-4 |
1 | ||||||||
g2-standard-8 |
1 | ||||||||
g2-standard-12 |
1 | ||||||||
g2-standard-16 |
1 | ||||||||
g2-standard-24 |
2 | ||||||||
g2-standard-32 |
1 | ||||||||
g2-standard-48 |
4 | ||||||||
g2-standard-96 |
8 |
En los ejemplos siguientes, se indica dónde puedes especificar las GPU cuando creas un CustomJob
:
Consola
En la consola de Google Cloud, no puedes crear un CustomJob
directamente.
Sin embargo, puedes crear un TrainingPipeline
que cree un CustomJob
. Cuando creas un TrainingPipeline
en la consola de Google Cloud, puedes especificar GPU para cada grupo de trabajadores en el paso Procesamiento y precios. Primero especifica un tipo de máquina. Luego, puedes especificar los detalles de la GPU en los campos Tipo de acelerador y Recuento de aceleradores.
gcloud
Para especificar las GPU mediante la herramienta Google Cloud CLI, debes usar un archivo config.yaml
. Por ejemplo:
config.yaml
workerPoolSpecs:
machineSpec:
machineType: MACHINE_TYPE
acceleratorType: ACCELERATOR_TYPE
acceleratorCount: ACCELERATOR_COUNT
replicaCount: REPLICA_COUNT
containerSpec:
imageUri: CUSTOM_CONTAINER_IMAGE_URI
Luego, ejecuta un comando como el siguiente:
gcloud ai custom-jobs create \
--region=LOCATION \
--display-name=JOB_NAME \
--config=config.yaml
Node.js
Antes de probar este ejemplo, sigue las instrucciones de configuración para Node.js 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 Node.js.
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.
Python
Si deseas obtener información para instalar o actualizar el SDK de Vertex AI para Python, consulta Instala el SDK de Vertex AI para Python. Si deseas obtener más información, consulta la documentación de referencia de la API de Python.
Para obtener más información, lee la guía para crear un CustomJob
.
TPU
Si deseas usar las Unidades de procesamiento tensorial (TPU) para el entrenamiento personalizado en Vertex AI, puedes configurar un grupo de trabajadores a fin de usar una VM de TPU.
Cuando usas una VM de TPU en Vertex AI, solo debes usar un grupo de trabajadores para el entrenamiento personalizado y debes configurar este grupo de trabajadores a fin de que use solo una réplica.
TPU v2 y v3
Para usar VMs de TPU v2 o v3 en tu grupo de trabajadores, debes usar una de las siguientes configuraciones:
Para configurar una VM de TPU con TPU v2, especifica los siguientes campos en
WorkerPoolSpec
:- Establece
machineSpec.machineType
encloud-tpu
. - Establece
machineSpec.acceleratorType
enTPU_V2
. - Establece
machineSpec.acceleratorCount
en8
para una sola TPU o32 or multiple of 32
en Pods de TPU. - Establece
replicaCount
en1
.
- Establece
Para configurar una VM de TPU con TPU v3, especifica los siguientes campos en
WorkerPoolSpec
:- Establece
machineSpec.machineType
encloud-tpu
. - Establece
machineSpec.acceleratorType
enTPU_V3
. - Establece
machineSpec.acceleratorCount
en8
para una sola TPU o32+
en Pods de TPU. - Establece
replicaCount
en1
.
- Establece
TPU v5e
La TPU v5e requiere JAX 0.4.6+, TensorFlow 2.15+ o PyTorch 2.1+. Para configurar una VM de TPU con TPU v5e, especifica los siguientes campos en WorkerPoolSpec
:
- Establece
machineSpec.machineType
comoct5lp-hightpu-1t
,ct5lp-hightpu-4t
oct5lp-hightpu-8t
. - Establece
machineSpec.tpuTopology
en una topología compatible para el tipo de máquina. Para obtener más información, consulta la siguiente tabla: - Establece
replicaCount
en1
.
En la siguiente tabla, se muestran los tipos de máquinas y las topologías de TPU v5e que son compatibles con el entrenamiento personalizado:
Tipo de máquina | Topología | Cantidad de chips TPU | Cantidad de VM | Caso práctico recomendado |
---|---|---|---|---|
ct5lp-hightpu-1t |
1x1 | 1 | 1 | Entrenamiento de escala pequeña a mediana |
ct5lp-hightpu-4t |
2x2 | 4 | 1 | Entrenamiento de escala pequeña a mediana |
ct5lp-hightpu-8t |
2x4 | 8 | 1 | Entrenamiento de escala pequeña a mediana |
ct5lp-hightpu-4t |
2x4 | 8 | 2 | Entrenamiento de escala pequeña a mediana |
ct5lp-hightpu-4t |
4x4 | 16 | 4 | Entrenamiento a gran escala |
ct5lp-hightpu-4t |
4x8 | 32 | 8 | Entrenamiento a gran escala |
ct5lp-hightpu-4t |
8x8 | 64 | 16 | Entrenamiento a gran escala |
ct5lp-hightpu-4t |
8x16 | 128 | 32 | Entrenamiento a gran escala |
ct5lp-hightpu-4t |
16x16 | 256 | 64 | Entrenamiento a gran escala |
Los trabajos de entrenamiento personalizados que se ejecutan en las VMs de TPU v5e están optimizados para la capacidad de procesamiento y la disponibilidad. Para obtener más información, consulta los tipos de aceleradores de entrenamiento v5e.
Las máquinas TPU v5e están disponibles en us-west1
y us-west4
para el entrenamiento personalizado de Vertex AI. Para obtener más información sobre TPU v5e, consulta Entrenamiento de Cloud TPU v5e.
Comparación del tipo de máquina:
Tipo de máquina | ct5lp-hightpu-1t | ct5lp-hightpu-4t | ct5lp-hightpu-8t |
---|---|---|---|
Cantidad de chips v5e | 1 | 4 | 8 |
Cantidad de CPU virtuales | 24 | 112 | 224 |
RAM (GB) | 48 | 192 | 384 |
Cantidad de nodos de NUMA | 1 | 1 | 2 |
Probabilidad de interrupción | Alta | Medio | Baja |
Ejemplo CustomJob
que especifica una VM de TPU
En el siguiente ejemplo, se destaca cómo especificar una VM de TPU cuando se crea un CustomJob
:
gcloud
Para especificar una VM de TPU con la herramienta de la CLI de gcloud, debes usar un archivo config.yaml
.
Selecciona una de las siguientes pestañas para ver un ejemplo:
TPU v2/v3
workerPoolSpecs:
machineSpec:
machineType: cloud-tpu
acceleratorType: TPU_V2
acceleratorCount: 8
replicaCount: 1
containerSpec:
imageUri: CUSTOM_CONTAINER_IMAGE_URI
TPU v5e
workerPoolSpecs:
machineSpec:
machineType: ct5lp-hightpu-4t
tpuTopology: 4x4
replicaCount: 1
containerSpec:
imageUri: CUSTOM_CONTAINER_IMAGE_URI
Luego, ejecuta un comando como el siguiente:
gcloud ai custom-jobs create \
--region=LOCATION \
--display-name=JOB_NAME \
--config=config.yaml
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.
Si deseas especificar una VM de TPU con el SDK de Vertex AI para Python, consulta el siguiente ejemplo:
from google.cloud.aiplatform import aiplatform job = aiplatform.CustomContainerTrainingJob( display_name='DISPLAY_NAME', location='us-west1', project='PROJECT_ID', staging_bucket="gs://CLOUD_STORAGE_URI", container_uri='CONTAINER_URI') job.run(machine_type='ct5lp-hightpu-4t', tpu_topology='2x2')
Para obtener más información sobre cómo crear un trabajo de entrenamiento personalizado, consulta Crea trabajos de entrenamiento personalizados.
Opciones de disco de arranque
De manera opcional, puedes personalizar los discos de arranque para tus VM de entrenamiento. Todas las VM en un grupo de trabajadores usan el mismo tipo y tamaño de disco de arranque.
Para personalizar el tipo de disco de arranque que usa cada VM de entrenamiento, especifica el campo
diskSpec.bootDiskType
en tuWorkerPoolSpec
.Puedes configurar este campo como
pd-standard
para usar un disco persistente estándar respaldado por un disco duro estándar, o puedes configurarlo comopd-ssd
a fin de usar un disco persistente SSD respaldado por una unidad de estado sólido. El valor predeterminado espd-ssd
.Usar
pd-ssd
puede mejorar el rendimiento si tu código de entrenamiento lee y escribe en el disco. Obtén más información sobre los tipos de discos.Para personalizar el tamaño (en GB) del disco de arranque que usa cada VM de entrenamiento, especifica el campo
diskSpec.bootDiskSizeGb
en tuWorkerPoolSpec
.Puedes configurar este campo en un número entero entre 100 y 64,000, inclusive. El valor predeterminado es
100
.Es posible que quieras aumentar el tamaño del disco de arranque si tu código de entrenamiento escribe muchos datos temporales en el disco. Ten en cuenta que los datos que escribas en el disco de arranque son temporales y no podrás recuperarlos después de completar el entrenamiento.
Cambiar el tipo y el tamaño de los discos de arranque afecta el precio del entrenamiento personalizado.
En los siguientes ejemplos, se destaca dónde puedes especificar opciones del disco de arranque cuando creas un CustomJob
:
Consola
En la consola de Google Cloud, no puedes crear un CustomJob
directamente.
Sin embargo, puedes crear un TrainingPipeline
que cree un CustomJob
. Cuando creas un TrainingPipeline
en la consola de Google Cloud, puedes especificar opciones del disco de arranque para cada grupo de trabajadores en el paso Procesamiento y precios, en la lista desplegable Tipo de disco y el campo Tamaño del disco (GB).
gcloud
Para especificar las opciones del disco de arranque mediante la herramienta Google Cloud CLI, debes usar un archivo config.yaml
. Por ejemplo:
config.yaml
workerPoolSpecs:
machineSpec:
machineType: MACHINE_TYPE
diskSpec:
bootDiskType: DISK_TYPE
bootDiskSizeGb: DISK_SIZE
replicaCount: REPLICA_COUNT
containerSpec:
imageUri: CUSTOM_CONTAINER_IMAGE_URI
Luego, ejecuta un comando como el siguiente:
gcloud ai custom-jobs create \
--region=LOCATION \
--display-name=JOB_NAME \
--config=config.yaml
Para obtener más información, lee la guía para crear un CustomJob
.
¿Qué sigue?
- Obtén información sobre cómo crear un recurso persistente para ejecutar trabajos de entrenamiento personalizados.
- Obtén información sobre cómo realizar un entrenamiento personalizado mediante la creación de un
CustomJob
.