En este documento, se explica cómo crear y ejecutar un trabajo que use una unidad de procesamiento de gráficos (GPU). Para obtener más información sobre las funciones y las restricciones de las GPUs, consulta Acerca de las GPUs en la documentación de Compute Engine.
Cuando creas un trabajo por lotes, tienes la opción de usar las GPU para acelerar cargas de trabajo específicas. Entre los casos de uso comunes para los trabajos que usan GPU, se incluyen los siguientes: procesamiento de datos intensivo y cargas de trabajo de inteligencia artificial (IA), como el aprendizaje automático (AA).
Antes de comenzar
- Si nunca antes usaste Batch, consulta Cómo comenzar a usar Batch y habilita Batch completando los requisitos previos para proyectos y usuarios.
-
Para obtener los permisos que necesitas para crear un trabajo, pídele a tu administrador que te otorgue los siguientes roles de IAM:
-
Editor de trabajos por lotes (
roles/batch.jobsEditor
) en el proyecto -
Usuario de la cuenta de servicio (
roles/iam.serviceAccountUser
) en la cuenta de servicio del trabajo, que de forma predeterminada es la cuenta de servicio predeterminada de Compute Engine
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.
-
Editor de trabajos por lotes (
Crea un trabajo que use GPUs
Para crear un trabajo que use GPUs, haz lo siguiente:
- Planifica los requisitos de un trabajo que use GPUs.
- Crea un trabajo con los requisitos y métodos que identificaste. Para ver ejemplos de cómo crear un trabajo con los métodos recomendados, consulta Crea un trabajo de ejemplo que use GPU en esta .
Planifica los requisitos de un trabajo que use GPUs
Antes de crear un trabajo que use GPUs, planifica los requisitos del trabajo como se explica en las siguientes secciones:
- Selecciona el tipo de máquina de la GPU
- Instala los controladores de GPU
- Define los recursos de VM compatibles
Paso 1: Selecciona el tipo de máquina de la GPU
Los tipos de máquinas de GPU disponibles (las combinaciones válidas de tipos de GPU, cantidades de GPU y tipo de máquina (CPU virtuales y memoria)) y sus casos de uso se enumeran en el La página Tipos de máquinas de GPU en Compute Engine en la documentación de Google Cloud.
Los campos obligatorios para que un trabajo especifique un tipo de máquina de GPU varían según la categorías en la siguiente tabla:
Tipos de máquinas de GPU y requisitos de trabajo | |
---|---|
GPUs para VMs optimizadas para aceleradores: Las VMs con un tipo de máquina de la familia de máquinas optimizadas para aceleradores tienen un tipo y una cantidad específicos de estas GPUs conectadas automáticamente. |
Para usar GPUs en VMs optimizadas para aceleradores, te recomendamos que especifiques el tipo de máquina. Cada tipo de máquina optimizada para aceleradores solo admite un tipo y una cantidad específicos de GPUs, por lo que es funcionalmente equivalente, ya sea que especifiques esos valores además del tipo de máquina optimizada para aceleradores. En concreto, Batch también admite especificar solo tipo y cantidad de GPU para las VMs con optimización de acelerador, pero el resultado Las opciones de CPU virtual y memoria suelen ser muy limitadas. Por eso, recomendamos verificas que las opciones disponibles de CPU virtual y memoria sean compatibles con los requisitos de la tarea del trabajo. |
GPU para VMs N1: Estas GPU requieren que especifiques el tipo y la cantidad para adjuntar a cada VM y debe conectarse a las VMs con una escribir desde Serie de máquinas N1. |
Si quieres usar GPU para las VMs N1, te recomendamos que especifiques al menos la el tipo de GPU y la cantidad de GPU. Asegúrate de que la combinación de de salida coincida con uno de los valores válidos Opciones de GPU para los tipos de máquina N1. Las opciones de CPU virtual y memoria para las VMs N1 que usan cualquier tipo específico GPU es bastante flexible, así que, si lo prefieres, puedes dejar que Batch seleccione una que cumple con los requisitos de la tarea del trabajo. |
Paso 2: Instala los controladores de GPU
Para instalar los controladores de GPU requeridos, selecciona uno de los siguientes métodos:
Instala los controladores automáticamente (recomendado si es posible): Como se muestra en los ejemplos, para permitir que Batch recupere los controladores de GPU necesarios desde una ubicación de terceros y los instale en tu nombre, configura el campo
installGpuDrivers
del trabajo comotrue
. Se recomienda este método si tu trabajo no requiere que instales controladores manualmente.De manera opcional, si necesitas especificar la versión del controlador de GPU que las instalaciones por lotes, también debes configurar Campo
driverVersion
.Instalar los controladores de forma manual: Este método es obligatorio si se cumple alguna de las siguientes condiciones:
- Un trabajo usa ejecutables del contenedor y la secuencia de comandos, y no tiene acceso a Internet. Para obtener más información sobre el acceso que tiene un trabajo, consulta Descripción general de las redes de lotes.
- Un trabajo usa una imagen de VM personalizada. Para obtener más información sobre las imágenes de SO de la VM Las imágenes de SO de VM que puedes usar, consulta Descripción general del entorno del SO de la VM.
Para instalar de forma manual los controladores de GPU necesarios, se usa el siguiente método: recomendado:
Crea una imagen de VM personalizada que incluya los controladores de GPU.
Para instalar controladores de GPU, ejecuta una secuencia de comandos de instalación según el SO que desees usar:
Si tu trabajo tiene algún contenedor ejecutable y no usa Container-Optimized OS, también debes instalar el Kit de herramientas para contenedores de NVIDIA
Crea y envía un trabajo con la imagen de VM personalizada Usar una plantilla de instancias de Compute Engine Establece el Campo
installGpuDrivers
del trabajo enfalse
(valor predeterminado).
Paso 3: Define los recursos de VM compatibles
Para obtener información sobre los requisitos y las opciones para definir los recursos de VM de un trabajo, consulta Recursos de trabajo.
En resumen, debes hacer todo lo siguiente cuando definas los recursos de VM para un trabajo que usa GPU:
Asegúrate de que el tipo de máquina de GPU esté disponible en la ubicación de las VMs de tu trabajo.
Para obtener información sobre dónde están disponibles los tipos de máquinas con GPU, consulta Disponibilidad de GPU por regiones y zonas en la documentación de Compute Engine.
Si especificas el tipo de máquina del trabajo, asegúrate de que tenga suficientes CPUs y memoria para los requisitos de la tarea del trabajo. Especificar el tipo de máquina del trabajo es obligatorio cuando se usan GPUs para VMs optimizadas para aceleradores y opcional cuando se usan GPUs para VMs N1.
Asegúrate de definir los recursos de VM para un trabajo con un método válido:
- Define los recursos de la VM directamente con el campo
instances[].policy
(recomendado si es posible). Este método se muestra en los ejemplos. - Define los recursos de VM a través de una plantilla con el campo
instances[].instanceTemplate
. Este método es necesario para instalar controladores de GPU de forma manual a través de un imagen. Para obtener más información, consulta Define los recursos de trabajo con una plantilla de instancia de VM.
- Define los recursos de la VM directamente con el campo
Crea un trabajo de ejemplo que use GPUs
En las siguientes secciones, se explica cómo crear un trabajo de ejemplo para diferentes tipos de máquinas de GPU. Los trabajos de ejemplo instalan controladores de GPU automáticamente y definir directamente los recursos de VM.
Usa GPU para las VMs con optimización de acelerador
Puedes crear un trabajo que use GPU para VMs con optimización de acelerador mediante el gcloud CLI, API de Batch, Java o Python.
gcloud
Crea un archivo JSON que instale controladores de GPU, defina el campo
machineType
con el tipo de máquina de la familia de máquinas optimizadas para aceleradores y use una ubicación que tenga el tipo de GPU especificado.Por ejemplo, para crear un trabajo de secuencia de comandos básico que use GPU para con las VMs optimizadas para aceleradores, crea un archivo JSON con los siguientes contenidos:
{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world from task ${BATCH_TASK_INDEX}." } } ] }, "taskCount": 3, "parallelism": 1 } ], "allocationPolicy": { "instances": [ { "installGpuDrivers": INSTALL_GPU_DRIVERS, "policy": { "machineType": "MACHINE_TYPE" } } ], "location": { "allowedLocations": [ "ALLOWED_LOCATIONS" ] } } }
Reemplaza lo siguiente:
INSTALL_GPU_DRIVERS
: Cuando se establece entrue
, Batch recupera los controladores necesarios para la Tipo de GPU que especificas en el campopolicy
desde una ubicación de terceros y Batch las instala por ti. Si estableces este campo enfalse
(configuración predeterminada), debes instalar los controladores de GPU de forma manual para usar cualquier GPU en esta tarea.MACHINE_TYPE
: Es un tipo de máquina del familia de máquinas con optimización de acelerador.ALLOWED_LOCATIONS
: El CampoallowedLocations[]
define una región y, opcionalmente, una o más zonas, donde la VM que tus instancias de trabajo pueden ejecutarse ejemplo,regions/us-central1, zones/us-central1-a
permite que la zonaus-central1-a
Asegúrate de especificar las ubicaciones que ofrecen el tipo de máquina con GPU que deseas para esta tarea. De lo contrario, si omites este campo, y asegurarte de que la ubicación del trabajo ofrezca el tipo de máquina de la GPU.
Para crear y ejecutar el trabajo, usa el Comando
gcloud batch jobs submit
:gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILE
Reemplaza lo siguiente:
JOB_NAME
: Es el nombre del trabajo.LOCATION
: Es la ubicación del trabajo.JSON_CONFIGURATION_FILE
: Es la ruta de acceso a un archivo JSON con los detalles de configuración de la tarea.
API
Realiza una solicitud POST
al método jobs.create
que instale los controladores de GPU, defina el campo machineType
con el tipo de máquina de la familia de máquinas optimizadas para aceleradores y use una ubicación que tenga el tipo de GPU especificado.
Por ejemplo, para crear un trabajo de secuencia de comandos básico que use GPU para con las VMs optimizadas para aceleradores, realiza la siguiente solicitud:
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello world from task ${BATCH_TASK_INDEX}."
}
}
]
},
"taskCount": 3,
"parallelism": 1
}
],
"allocationPolicy": {
"instances": [
{
"installGpuDrivers": INSTALL_GPU_DRIVERS,
"policy": {
"machineType": "MACHINE_TYPE"
}
}
],
"location": {
"allowedLocations": [
"ALLOWED_LOCATIONS"
]
}
}
}
Reemplaza lo siguiente:
PROJECT_ID
: el ID del proyecto de tu proyecto.LOCATION
: Es la ubicación del trabajo.JOB_NAME
: Es el nombre del trabajo.INSTALL_GPU_DRIVERS
: Cuando se establece entrue
, Batch recupera los controladores necesarios para el tipo de GPU que especificas en el campopolicy
desde una ubicación de terceros y los instala en tu nombre. Si configuras este campo comofalse
(predeterminado), necesitas para instalar controladores de GPU de forma manual y usar cualquier GPU para este trabajo.MACHINE_TYPE
: Es un tipo de máquina del familia de máquinas con optimización de acelerador.ALLOWED_LOCATIONS
: El campoallowedLocations[]
define una región y, de manera opcional, una o más zonas, en las que se pueden ejecutar las instancias de VM de tu trabajo. Por ejemplo,regions/us-central1, zones/us-central1-a
permite la zonaus-central1-a
. Asegúrate de especificar las ubicaciones que ofrecen el tipo de máquina con GPU que deseas para esta tarea. De lo contrario, si omites este campo, y asegurarte de que la ubicación del trabajo ofrezca el tipo de máquina de la GPU.
Java
Python
Usa GPUs para VMs N1
Puedes crear un trabajo que use GPUs para VMs N1 con gcloud CLI, la API de Batch, Java, Node.js o Python.
gcloud
Crea un archivo JSON que instale controladores de GPU, defina los subcampos
type
ycount
del campoaccelerators[]
y use una ubicación que tenga el tipo de GPU especificado.Por ejemplo, para crear un trabajo de secuencia de comandos básico que use GPU para VMs N1 y permite que Batch seleccione el tipo de máquina N1 exacto, crea un archivo JSON con el siguiente contenido:
{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world from task ${BATCH_TASK_INDEX}." } } ] }, "taskCount": 3, "parallelism": 1 } ], "allocationPolicy": { "instances": [ { "installGpuDrivers": INSTALL_GPU_DRIVERS, "policy": { "accelerators": [ { "type": "GPU_TYPE", "count": GPU_COUNT } ] } } ], "location": { "allowedLocations": [ "ALLOWED_LOCATIONS" ] } } }
Reemplaza lo siguiente:
INSTALL_GPU_DRIVERS
: Cuando se establece entrue
, Batch recupera los controladores necesarios para la Tipo de GPU que especificas en el campopolicy
desde una ubicación de terceros y Batch las instala por ti. Si estableces este campo enfalse
(configuración predeterminada), debes instalar los controladores de GPU de forma manual para usar cualquier GPU en esta tarea.GPU_TYPE
: La GPU el tipo de letra. Puedes ver una lista de los tipos de GPU disponibles con el comandogcloud compute accelerator-types list
. Usa este campo solo para las GPU de las VMs N1.GPU_COUNT
: Es la cantidad de GPU de la el tipo especificado. Para obtener más información sobre las opciones válidas, consulta los tipos de máquinas de GPU para la serie de máquinas N1. Usa este campo solo para las GPUs de las VMs N1.ALLOWED_LOCATIONS
: El CampoallowedLocations[]
define una región y, opcionalmente, una o más zonas, donde la VM que tus instancias de trabajo pueden ejecutarse ejemplo,regions/us-central1, zones/us-central1-a
permite que la zonaus-central1-a
Asegúrate de especificar las ubicaciones que ofrecen el tipo de máquina con GPU que deseas para esta tarea. De lo contrario, si omites este campo, asegúrate de que la ubicación del trabajo ofrezca el tipo de máquina de GPU.
Para crear y ejecutar la tarea, usa el comando
gcloud batch jobs submit
:gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILE
Reemplaza lo siguiente:
JOB_NAME
: Es el nombre del trabajo.LOCATION
: Es la ubicación del trabajo.JSON_CONFIGURATION_FILE
: Es la ruta de acceso para un Archivo JSON con los detalles de configuración del trabajo.
API
Realiza una solicitud POST
al
Método jobs.create
que instala controladores de GPU, define la
Subcampos type
y count
del campo accelerators[]
y usa una ubicación que tiene la ubicación
el tipo de GPU.
Por ejemplo, para crear un trabajo de secuencia de comandos básico que use GPUs para VMs N1 y permita que Batch seleccione el tipo de máquina N1 exacto, realiza la siguiente solicitud:
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello world from task ${BATCH_TASK_INDEX}."
}
}
]
},
"taskCount": 3,
"parallelism": 1
}
],
"allocationPolicy": {
"instances": [
{
"installGpuDrivers": INSTALL_GPU_DRIVERS,
"policy": {
"accelerators": [
{
"type": "GPU_TYPE",
"count": GPU_COUNT
}
]
}
}
],
"location": {
"allowedLocations": [
"ALLOWED_LOCATIONS"
]
}
}
}
Reemplaza lo siguiente:
PROJECT_ID
: Es el ID del proyecto de tu proyecto.LOCATION
: Es la ubicación del trabajo.JOB_NAME
: Es el nombre del trabajo.INSTALL_GPU_DRIVERS
: Cuando se establece entrue
, Batch recupera los controladores necesarios para la Tipo de GPU que especificas en el campopolicy
desde una ubicación de terceros y Batch las instala por ti. Si configuras este campo comofalse
(predeterminado), necesitas para instalar controladores de GPU de forma manual y usar cualquier GPU para este trabajo.GPU_TYPE
: La GPU el tipo de letra. Puedes ver una lista de los tipos de GPU disponibles con el comando Comandogcloud compute accelerator-types list
Usa este campo solo para las GPU de las VMs N1.GPU_COUNT
: Es la cantidad de GPU de la el tipo especificado. Para obtener más información sobre las opciones válidas, consulta Tipos de máquinas de GPU para la serie de máquinas N1. Usa este campo solo para las GPUs de las VMs N1.ALLOWED_LOCATIONS
: El campoallowedLocations[]
define una región y, de manera opcional, una o más zonas, en las que se pueden ejecutar las instancias de VM de tu trabajo. Por ejemplo,regions/us-central1, zones/us-central1-a
permite la zonaus-central1-a
. Asegúrate de especificar las ubicaciones que ofrecen el tipo de máquina con GPU que deseas para esta tarea. De lo contrario, si omites este campo, asegúrate de que la ubicación del trabajo ofrezca el tipo de máquina de GPU.
Java
Node.js
Para crear un trabajo con GPUs usando Node.js, selecciona una de las siguientes opciones según el tipo de máquina de tu modelo de GPU:
- Crea un trabajo que use GPU con VMs optimizadas para aceleradores
- Cómo crear un trabajo que use GPUs con VMs N1
Crea un trabajo que use GPUs con VMs optimizadas para aceleradores
Para usar GPU con VMs optimizadas para aceleradores, solo especifica el tipo de máquina que quieres para las VMs del trabajo:
Crear un trabajo que use GPU con VMs N1
Para usar GPU con VMs N1, debes especificar la cantidad y el tipo de GPU que deseas para cada una de las VMs del trabajo:
Python
¿Qué sigue?
- Si tienes problemas para crear o ejecutar un trabajo, consulta Solución de problemas.
- Ver trabajos y tareas.
- Obtén más información sobre las opciones de creación de trabajos.