Compartir comentarios
Las respuestas se generan en base a la documentación.

Acceso a la GPU

Acceder a una GPU de NVIDIA

Requisitos previos

Visita la página oficial de controladores de NVIDIA para descargar e instalar los controladores adecuados. Reinicia tu sistema una vez que lo hayas hecho.

Verifica que tu GPU esté funcionando y sea accesible.

Instalar NVIDIA Container Toolkit

Sigue las instrucciones de instalación oficiales de NVIDIA Container Toolkit.

Exponer GPUs para su uso

Incluye la bandera --gpus cuando inicies un contenedor para acceder a los recursos de la GPU.

Para exponer todas las GPUs disponibles:

$ docker run -it --rm --gpus all ubuntu nvidia-smi

La salida se ve de la siguiente manera:

+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 535.288.01             Driver Version: 535.288.01   CUDA Version: 12.2     |
|-----------------------------------------+----------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |         Memory-Usage | GPU-Util  Compute M. |
|                                         |                      |               MIG M. |
|=========================================+======================+======================|
|   0  NVIDIA L4                      Off | 00000000:31:00.0 Off |                    0 |
| N/A   40C    P0              27W /  72W |      0MiB / 23034MiB |      4%      Default |
|                                         |                      |                  N/A |
| +-----------------------------------------+----------------------+----------------------+
 
+---------------------------------------------------------------------------------------+
| Processes:                                                                            |
|  GPU   GI   CI        PID   Type   Process name                            GPU Memory |
|        ID   ID                                                             Usage      |
|=======================================================================================|
|  No running processes found                                                           |
+---------------------------------------------------------------------------------------+

La columna de más a la izquierda en la tabla de GPUs muestra el índice de cada GPU (0 para la NVIDIA L4 en el ejemplo anterior). Utiliza estos números de índice para apuntar a GPUs específicas con la opción device.

Para exponer una sola GPU por índice:

$ docker run -it --rm --gpus device=0 ubuntu nvidia-smi

Para exponer una GPU por su UUID, primero enumera los UUIDs con nvidia-smi -L:

$ nvidia-smi -L
GPU 0: NVIDIA L4 (UUID: GPU-3a23c669-1f69-c64e-cf85-44e9b07e7a2a)

Luego pasa el UUID a --gpus:

$ docker run -it --rm --gpus device=GPU-3a23c669-1f69-c64e-cf85-44e9b07e7a2a ubuntu nvidia-smi

En sistemas con múltiples GPUs, puedes exponer varias por índice. El valor de device debe estar entre comillas porque contiene una coma:

$ docker run -it --rm --gpus '"device=0,2"' ubuntu nvidia-smi

Esto expone las GPUs en los índices 0 y 2 (la primera y la tercera GPU listadas en la salida de nvidia-smi).

Note

Las GPUs de NVIDIA solo pueden ser accedidas por sistemas que ejecutan un único motor (engine).

Configurar las capacidades de NVIDIA

Puedes configurar las capacidades manualmente. Por ejemplo, en Ubuntu puedes ejecutar lo siguiente:

$ docker run --gpus 'all,capabilities=utility' --rm ubuntu nvidia-smi

Esto habilita la capacidad del controlador utility, la cual añade la herramienta nvidia-smi al contenedor.

Las capacidades y otras configuraciones se pueden establecer en las imágenes a través de variables de entorno. Para conocer las variables válidas, consulta la documentación de nvidia-container-toolkit. Estas variables se pueden establecer en un Dockerfile.

También puedes usar imágenes de CUDA, que configuran estas variables automáticamente. Consulta la página oficial del catálogo NGC de imágenes de CUDA.