Cómo ejecutar DeepLearning benchmark
Ejecutar pruebas comparativas en servidores de aprendizaje automático no es la tarea más sencilla. Entre las pruebas más populares se encuentran benchmarks como MLperf, ai-benchmark y deeplearning-benchmark. El primero es un conjunto de pruebas dirigidas a fabricantes de equipos, no a usuarios normales. Por lo tanto, ejecutar pruebas del conjunto MLperf requiere profundos conocimientos de programación y experiencia con aplicaciones en contenedores.
El segundo benchmark mencionado es un poco más sencillo, pero existen ciertos matices debido a sus anticuadas instrucciones de instalación. El paquete tensorflow-gpu está declarado como "obsoleto", y el comando pip install tensorflow[and-cuda] sigue produciendo errores de inicialización. Por lo tanto, nos centraremos en el tercer benchmark. En primer lugar, vamos a actualizar la caché de paquetes e instalar automáticamente los controladores de la GPU. Estas instrucciones se aplican a Ubuntu 22.04
Requisitos previos
Actualización del sistema
sudo apt update && sudo apt -y upgrade && sudo apt ubuntu-drivers autoinstall
Reiniciar el servidor:
sudo shutdown -r now
Añadir repositorios
Dado que el paquete nvidia-container-toolkit y sus dependencias no forman parte del repositorio estándar, deberá añadir un repositorio independiente de acuerdo con la guía de NVIDIA®:
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
Actualizar la caché de paquetes:
sudo apt-get update
Docker y NVIDIA® Container Toolkit
Instala el motor Docker y NVIDIA® Container Toolkit:
sudo apt-get install docker.io nvidia-container-toolkit
Para evitar usar sudo cada vez con Docker, añade el usuario al grupo apropiado y créalo:
sudo usermod -aG docker $USER
newgrp docker
Preparar un contenedor
A continuación, tendrás que descargar una imagen de contenedor preparada desde el Registro de Contenedores de NVIDIA® llamada pytorch:22.10-py3. Para evitar escribir esto cada vez, vamos a utilizar la capacidad del shell de comandos para crear variables. Asignemos este valor a la variable NAME_NGC:
export NAME_NGC=pytorch:22.10-py3
Ahora, saca la imagen del registro usando la variable creada:
docker pull nvcr.io/nvidia/${NAME_NGC}
Una vez que la imagen del contenedor está en el servidor, necesitas descargar el contenido de dos repositorios. Clona el primer repositorio con ejemplos de código y cambia a la rama que necesitamos:
git clone https://github.com/LambdaLabsML/DeepLearningExamples.git && \
cd DeepLearningExamples && \
git checkout lambda/benchmark && \
cd ..
Clonar el segundo repositorio, que contiene la implementación en PyTorch del código del benchmark:
git clone https://github.com/lambdal/deeplearning-benchmark.git && \
cd deeplearning-benchmark/pytorch
Lanzar el contenedor creado, montando simultáneamente los directorios necesarios y llamando al script para preparar el conjunto de datos. Este comando puede tardar aproximadamente media hora en completarse, así que ten paciencia y espera a que termine:
docker run --gpus all --rm --shm-size=64g \
-v ~/DeepLearningExamples/PyTorch:/workspace/benchmark \
-v ~/data:/data \
-v $(pwd)"/scripts":/scripts \
nvcr.io/nvidia/${NAME_NGC} \
/bin/bash -c "cp -r /scripts/* /workspace; ./run_prepare.sh"
Ejecuta el benchmark
Por último, ejecuta las pruebas del benchmark. El directorio /deeplearning-benchmark/pytorch/scripts/ contiene muchas configuraciones típicas. Puedes elegir una de las ya preparadas o crear la tuya propia, la más adecuada para la configuración actual del servidor. Para este ejemplo, hemos utilizado la configuración 4xA100_SXM4_80GB_v1:
docker run \
--rm --shm-size=128g \
--gpus all \
-v ~/DeepLearningExamples/PyTorch:/workspace/benchmark \
-v ~/data:/data \
-v $(pwd)"/scripts":/scripts \
-v $(pwd)"/results":/results \
nvcr.io/nvidia/${NAME_NGC} \
/bin/bash -c "cp -r /scripts/* /workspace; ./run_benchmark.sh 4xA100_SXM4_80GB_v1 all 1500"
Una vez completados los benchmarks, encontrarás los resultados de las pruebas en el directorio del mismo nombre. También puedes utilizar scripts adicionales para convertirlos a otros formatos.
Véase también:
Actualizado: 28.03.2025
Publicado: 24.07.2024