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).
NoteLas 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.