En este documento, se explica cómo crear y ejecutar un trabajo que usa una unidad de procesamiento de gráficos (GPU).
Cuando creas un trabajo por lotes, tienes la opción de agregar una o más GPU a las VM que lo ejecutan. Los casos prácticos comunes para los trabajos que usan GPU incluyen cargas de trabajo de procesamiento intensivo de datos y aprendizaje automático (AA).
Antes de comenzar
- Si nunca usaste Batch, revisa Comienza a usar Batch y completa los requisitos previos para proyectos y usuarios a fin de habilitar Batch.
-
A fin de 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 cuenta de servicio (
roles/iam.serviceAccountUser
) en la cuenta de servicio del trabajo, que es la cuenta de servicio predeterminada de Compute Engine de forma predeterminada
Si quieres obtener más información para otorgar funciones, consulta Administra el acceso.
Es posible que también puedas obtener los permisos necesarios mediante funciones personalizadas, o bien otras funciones predefinidas.
-
Editor de trabajos por lotes (
Crea un trabajo que use GPU
Para crear un trabajo que use GPU, haz lo siguiente:
- Revisa la sección Requisitos para que un trabajo use GPU a fin de determinar los métodos que puedes usar para crear tu trabajo.
- Crea un trabajo con los métodos que seleccionaste. Para ver ejemplos de cómo crear un trabajo con los métodos recomendados, consulta la sección Crea un trabajo de ejemplo que use GPU.
Requisitos para que un trabajo use GPU
Para usar GPU, un trabajo debe hacer todo lo siguiente:
- Instala los controladores de GPU necesarios de forma automática o manual, según los requisitos del trabajo.
- Si tu trabajo especifica otros recursos para sus VM (directamente o mediante una plantilla de instancia de VM), el trabajo debe definir recursos de VM compatibles.
Una vez que hayas determinado cómo cumplir con estos requisitos para tu trabajo, también deberás definir las GPU y la ubicación del trabajo. Cada VM de un trabajo puede usar una o más GPU del tipo que especifiques. Las ubicaciones permitidas para las VMs del trabajo (o, si no están definidas, la ubicación del trabajo) deben tener el tipo de GPU especificado. Si deseas obtener más información sobre cómo definir el tipo de GPU, el número de GPU y una ubicación válida para un trabajo, consulta los ejemplos.
Instalar los controladores de GPU.
Para instalar los controladores de GPU necesarios, selecciona uno de los siguientes métodos:
Instalar controladores automáticamente (recomendado si es posible): Como se muestra en los ejemplos, para permitir que Batch recupere los controladores de GPU necesarios de una ubicación de terceros y los instale por ti, configura el campo
installGpuDrivers
del trabajo comotrue
. Se recomienda este método si tu trabajo no requiere que instales los controladores de forma manual.Instala controladores manualmente: Este método es obligatorio si se cumple alguna de las siguientes condiciones:
- Un trabajo usa ejecutables de contenedor y 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 por lotes.
- Un trabajo usa una imagen de VM personalizada. Para obtener más información sobre las imágenes de SO de VM y qué imágenes de SO de VM puedes usar, consulta Descripción general del entorno de SO de VM.
Para instalar de forma manual los controladores de GPU necesarios, se recomienda el siguiente método:
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 NVIDIA Container Toolkit
Crea y envía un trabajo con la imagen de VM personalizada mediante una plantilla de instancias de Compute Engine. Establece el campo
installGpuDrivers
del trabajo enfalse
(valor predeterminado).
Define recursos de VM compatibles
Si tu trabajo define cualquiera de los recursos de VM (cualquiera de los subcampos instances[]
) que no sean GPU, debes definir esos recursos de VM de una manera compatible.
Para definir los recursos de las VMs de un trabajo, incluidas las GPU, solo puedes usar los siguientes métodos:
- Definir recursos directamente (recomendado): Como se muestra en los ejemplos, a fin de definir los recursos para las VM de un trabajo directamente, usa el campo
policy
. - Definir recursos en una plantilla: Define los recursos para las VM de un trabajo mediante la especificación de una plantilla de instancias de Compute Engine.
Además, todos los recursos que definas deben ser compatibles con el tipo y la cantidad de GPU para el trabajo. Para obtener más información sobre los recursos de VM que puedes usar con GPU, consulta Plataformas de GPU en la documentación de Compute Engine.
Crea un trabajo de ejemplo que use GPU
Puedes crear un trabajo que use GPU con gcloud CLI o la API de Batch.
gcloud
Crea un archivo JSON que especifique los detalles de configuración del trabajo, los subcampos
type
ycount
del campoaccelerators[]
y una ubicación que tenga esos tipos de GPU.Por ejemplo, para crear un trabajo de secuencia de comandos básico que use GPU, instale automáticamente los controladores de GPU necesarios y especifique las ubicaciones permitidas para las VMs del trabajo, 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
: Opcional 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 Batch los instala por ti. Si configuras este campo comofalse
(predeterminado), debes instalar los controladores de GPU de forma manual a fin de usar cualquier GPU para este trabajo.GPU_TYPE
: Es el tipo de GPU. Puedes ver una lista de los tipos de GPU disponibles con el comandogcloud compute accelerator-types list
.GPU_COUNT
: Es la cantidad de GPU del tipo especificado.ALLOWED_LOCATIONS
: Opcional Las ubicaciones en las que se permiten las instancias de VM para tu trabajo, por ejemplo,regions/us-central1, zones/us-central1-a
permite la zonaus-central1-a
. Si especificas una ubicación permitida, debes seleccionar la región y, de forma opcional, una o más zonas. Las ubicaciones que elijas deben tener los tipos de GPU que deseas para este trabajo. De lo contrario, si omites este campo, la ubicación del trabajo debe tener los tipos de GPU. Para obtener más información, consulta el campoallowedLocations[]
.
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 de un archivo JSON con los detalles de configuración del trabajo.
API
Realiza una solicitud POST
al método jobs.create
que especifica los detalles de configuración del trabajo, los subcampos type
y count
del campo accelerators[]
, y una ubicación que tenga esos tipos de GPU.
Por ejemplo, para crear un trabajo de secuencia de comandos básico que use GPU, instale automáticamente los controladores de GPU necesarios y especifique las ubicaciones permitidas para las VMs del trabajo, crea un archivo JSON con el siguiente contenido:
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.LOCATION
: Es la ubicación del trabajo.JOB_NAME
: Es el nombre del trabajo.INSTALL_GPU_DRIVERS
: Opcional 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 Batch los instala por ti. Si configuras este campo comofalse
(predeterminado), debes instalar los controladores de GPU de forma manual a fin de usar cualquier GPU para este trabajo.GPU_TYPE
: Es el tipo de GPU. Puedes ver una lista de los tipos de GPU disponibles con el comandogcloud compute accelerator-types list
.GPU_COUNT
: Es la cantidad de GPU del tipo especificado.ALLOWED_LOCATIONS
: Opcional Las ubicaciones en las que se permiten las instancias de VM para tu trabajo, por ejemplo,regions/us-central1, zones/us-central1-a
permite la zonaus-central1-a
. Si especificas una ubicación permitida, debes seleccionar la región y, de forma opcional, una o más zonas. Las ubicaciones que elijas deben tener los tipos de GPU que deseas para este trabajo. De lo contrario, si omites este campo, la ubicación del trabajo debe tener los tipos de GPU. Para obtener más información, consulta el campoallowedLocations[]
.
¿Qué sigue?
- Si tienes problemas para crear o ejecutar un trabajo, consulta Solución de problemas.
- Consulta trabajos y tareas.
- Obtén más información sobre las opciones de creación de trabajos.