En este documento, se explica cómo crear y ejecutar un trabajo que use una unidad de procesamiento gráfico (GPU).
Cuando creas un trabajo por lotes, tienes la opción de agregar una o más GPU a las VMs que lo ejecutan. Casos de uso comunes para trabajos que usan GPU incluyen procesamiento de datos intensivo cargas de trabajo de aprendizaje automático (AA).
Antes de comenzar
- Si nunca usaste Batch, revisa Comienza a usar Batch y habilitar Batch completando el requisitos previos para los 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 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 (
Crear un trabajo que use GPU
Para crear un trabajo que use GPU, haz lo siguiente:
- Revisa los Requisitos para que un trabajo use GPU. para 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 para crear un trabajo con los métodos recomendados, consulta la Crea un trabajo de ejemplo que use GPU.
Requisitos para que un trabajo use GPU
Para usar GPU, un trabajo debe realizar todas las siguientes acciones:
- Instala los controladores de GPU necesarios, ya sea de forma automática o manual, según los requisitos del trabajo.
- Si tu trabajo especifica otros recursos para sus VMs (directamente o con una plantilla de instancias de VM), el trabajo debe definen recursos de VM compatibles.
Después de que hayas determinado cómo cumplir con estos requisitos para tu trabajo, también debes definir las GPU y la ubicación del trabajo. Las VMs de un trabajo pueden usar una o más GPU del tipo que especifiques. Las ubicaciones permitidas para las VMs de un trabajo (o, si no está definida, la ubicación del trabajo) deben tener el tipo de GPU. Para 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 requeridos, 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 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.Instalar los controladores de forma manual:Este método es necesario si se realiza alguna de las siguientes acciones son verdaderas:
- 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 una tarea, 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 elemento ejecutable de contenedor y no usa el sistema operativo optimizado para contenedores, también debes instalar el kit de herramientas de 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).
Define recursos de VM compatibles
Si tu trabajo define alguno de los recursos de VM (cualquiera de
instances[]
subcampo)
aparte de las GPU, debes definir esos recursos de VM de manera compatible.
Para definir los recursos para las VMs de un trabajo, incluidas las GPU, puedes solo se pueden usar los siguientes métodos:
- Define los recursos directamente (recomendado): Como se muestra en la
ejemplos, hasta
definir los recursos para las VMs de un trabajo directamente, usa el
Campo
policy
. - Define los recursos en una plantilla: define los recursos para las VMs de un trabajo. si especificas lo siguiente: Plantilla de instancias de Compute Engine.
Además, todos los recursos que definas deben ser compatibles con el y la cantidad de GPU para el trabajo. Para obtener más información sobre el Recursos de VM que puedes usar con GPU, consulta Plataformas de GPU en la documentación de Compute Engine.
Crear un trabajo de ejemplo que use GPU
Puedes crear un trabajo que use GPU con gcloud CLI, la API de Batch, Java o Python.
gcloud
Crear un archivo JSON que especifique los detalles de configuración del trabajo, el Subcampos
type
ycount
del campoaccelerators[]
, y una ubicación que contenga las los tipos de GPU.Por ejemplo, para crear un trabajo de secuencia de comandos básico que usa GPU, instala automáticamente los controladores de GPU necesarios, y especifica 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 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
GPU_COUNT
: Es la cantidad de GPU de la el tipo especificado.ALLOWED_LOCATIONS
: Opcional Las ubicaciones en las que se permite ejecutar las instancias de VM de tu trabajo, por ejemplo,regions/us-central1, zones/us-central1-a
permite que la zonaus-central1-a
Si especificas una ubicación permitida, debes seleccionar la región y, de manera opcional, una o más zonas. Las ubicaciones en las que que elijas debe tener los tipos de GPU que necesitas 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 para 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, la
Subcampos type
y count
del campo accelerators[]
y una ubicación que contiene las
los tipos de GPU.
Por ejemplo, para crear un trabajo de secuencia de comandos básico que usa GPU, instala automáticamente los controladores de GPU necesarios, y especifica 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
: el ID del proyecto de tu 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 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
GPU_COUNT
: Es la cantidad de GPU de la el tipo especificado.ALLOWED_LOCATIONS
: Opcional Las ubicaciones en las que se permite ejecutar las instancias de VM de tu trabajo, por ejemplo,regions/us-central1, zones/us-central1-a
permite que 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 esta tarea. 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 la CampoallowedLocations[]
.
Java
Para crear un trabajo con GPU mediante Java, selecciona una de las siguientes opciones según el tipo de máquina para tu modelo de GPU:
- Cómo crear un trabajo que use GPUs con VMs optimizadas para aceleradores
- Crea un trabajo que use GPU con VMs N1
Crea un trabajo que use GPU 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
Para crear un trabajo con GPUs usando Python, 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
- Crea un trabajo que use GPU con VMs N1
Crea un trabajo que use GPU 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 GPUs con VMs N1, debes especificar la cantidad y el tipo de GPUs que deseas para cada una de las VMs de la tarea:
¿Qué sigue?
- Si tienes problemas para crear o ejecutar un trabajo, consulta Solución de problemas.
- Visualiza trabajos y tareas.
- Obtén más información sobre las opciones de creación de trabajos.