¡Pregunte, nosotros le respondemos!

Pila MLperf: Slurm, Pyxis, Enroot

Ilustración principal de la pila MLPerf

El benchmark MLperf se considera uno de los conjuntos de pruebas que permiten juzgar con precisión el rendimiento de los servidores con GPUs y aceleradores de IA. Desafortunadamente, no es el benchmark al que todos están acostumbrados, en el que basta con ejecutar un archivo ejecutable y obtener el resultado final después de un tiempo. MLperf es un conjunto de scripts que permiten realizar pruebas con varios conjuntos de datos. Los propios conjuntos de datos no se incluyen en el kit de benchmark. Necesitas descargarlo por separado y prepararlo para trabajar.

En las versiones modernas de MLperf, este conjunto de scripts no puede ser ejecutado en un sistema limpio. Para probar el benchmark en acción, necesitarás preparar el entorno adecuadamente para la mayoría de las pruebas. Los autores de MLperf eligieron Slurm Workload Manager como una herramienta de gestión de trabajos, que se utiliza en la mayoría de los supercomputadores del mundo. Esta aplicación de código abierto permite una gestión flexible de las cargas de trabajo mediante la distribución de tareas informáticas entre todos los miembros del clúster.

Un clúster Slurm mínimo consta de un nodo de cálculo y un nodo de gestión. Idealmente, estos son dos servidores diferentes que se comunican entre sí usando nombres de host, que en el caso de Linux, se especifican en el archivo /etc/hosts. Además del clúster configurado, MLperf requiere dos plugins: Pyxis y Enroot. El primero es una extensión que permite a un usuario no privilegiado ejecutar cargas de trabajo contenerizadas. El segundo elimina la mayoría de los mecanismos de aislamiento de los contenedores regulares, eliminando así casi todos los costos de rendimiento mientras se mantiene la separación del sistema de archivos.

Paso 1. Preparar el sistema

Comienza por actualizar el repositorio de caché de paquetes y los paquetes instalados:

sudo apt update && sudo apt -y upgrade

No olvides instalar los controladores NVIDIA® usando el comando de autoinstalación o manualmente, usando nuestra guía paso a paso:

sudo ubuntu-drivers autoinstall

Reinicia el servidor:

sudo shutdown -r now

Paso 2. Instalar Slurm

Para estas instrucciones, se seleccionó Ubuntu 22.04 LTS como sistema operativo, por lo que Slurm puede ser instalado directamente desde el repositorio estándar. El paquete slurm-wlm contiene tanto slurmd para el nodo de cálculo como slurmctld para el nodo de control. Instala el paquete:

sudo apt install slurm-wlm

Por defecto, después de la instalación, ninguno de los demonios funcionará porque falta el archivo de configuración principal, slurm.conf. Los desarrolladores se han esforzado por reducir la barrera de entrada al crear una página web con un configurador. Aquí, puedes ensamblar de forma independiente el archivo de configuración en partes, utilizando las pistas proporcionadas para cada ítem.

Ten en cuenta que para una instalación estándar en Ubuntu 22.04 LTS, tiene sentido elegir LinuxProc en lugar de Cgroup. Después de hacer clic en el botón Enviar en la parte inferior de la página, recibirás el texto finalizado del archivo de configuración. Copia esto a tu portapapeles y ejecuta el siguiente comando:

sudo nano /etc/slurm/slurm.conf

Pega el contenido del portapapeles y guarda el archivo. Ahora, puedes iniciar el demonio del nodo de cálculo:

sudo systemctl start slurmd.service

Puedes verificar el estado del demonio utilizando el siguiente comando:

sudo systemctl status slurmd.service

Paso 3. Configurar el controlador Slurm

Antes de poder iniciar el demonio del controlador, necesitarás dar algunos pasos adicionales. Primero, necesitarás crear un directorio donde el demonio pueda almacenar información de servicio sobre trabajos en ejecución:

sudo mkdir -p /var/spool/slurmctld

El directorio fue creado con éxito, pero actualmente, el usuario slurm, en nombre del cual se está ejecutando el controlador, no puede escribir nada allí. Hagamos que sea el propietario del directorio:

sudo chown slurm:slurm /var/spool/slurmctld

Ahora, puedes iniciar el demonio del controlador:

sudo systemctl start slurmctld.service

Para comprobar el estado operativo del controlador, puedes utilizar el comando estándar:

sudo systemctl status slurmctld.service

También puedes ver inmediatamente el estado actual del sistema, en particular cuántos nodos de cálculo están conectados al controlador y determinar su estado actual:

sinfo
PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST                                                                                                                                                                                         
debug*       up   infinite      1   idle gpuserver

Paso 4. Instalar Pyxis

Slurm amplía sus capacidades utilizando el mecanismo SPANK (Arquitectura de Plugins de Slurm para Nodo y Control de Trabajos [K]). No necesita ser instalado ni configurado por separado de la aplicación principal. Sin embargo, es aconsejable detener temporalmente ambos demonios antes de cualquier instalación de plugin:

sudo systemctl stop slurmd.service && sudo systemctl stop slurmctld.service

Como el proceso de instalación de Pyxis implica la construcción a partir del código fuente, primero debes instalar un paquete que contenga las bibliotecas para desarrolladores:

sudo apt -y install libslurm-dev

El proceso de construcción de Pyxis supone que la aplicación se instala desde el código fuente y buscará algunos archivos en la ruta absoluta /use/include/slurm. En nuestro ejemplo, el paquete slurm-wlm los colocó en el directorio /usr/include/slurm-wlm. Para resolver este problema, basta con crear un enlace simbólico:

sudo ln -s /usr/include/slurm-wlm /usr/include/slurm

Clona el código fuente del plugin del repositorio oficial de Nvidia:

git clone https://github.com/NVIDIA/pyxis

Abre el directorio descargado:

cd pyxis

Inicia el proceso de compilación:

sudo make install

Una vez que la compilación se haya completado, tendrás que crear otro enlace simbólico:

sudo ln -s /usr/local/share/pyxis/pyxis.conf /etc/slurm/plugstack.conf.d/pyxis.conf

Ahora, todo está listo para lanzar ambos demonios:

sudo systemctl start slurmd.service && sudo systemctl start slurmctld.service

Si se ha realizado correctamente, cuando ejecutes el siguiente comando, verás nuevas opciones marcadas [pyxis]:

srun --help

Paso 5. Instalar Enroot

Al igual que con el plugin anterior, tiene sentido detener primero los demonios:

sudo systemctl stop slurmd.service && sudo systemctl stop slurmctld.service

A continuación, utiliza la función de comando shell para guardar los datos de la arquitectura de la CPU en una variable separada. Esto es conveniente para ejecutar los comandos siguientes, ya que sustituye automáticamente el valor guardado, en lugar de requerir una edición manual:

arch=$(dpkg --print-architecture)

Descarga el paquete DEB:

curl -fSsL -O https://github.com/NVIDIA/enroot/releases/download/v3.4.1/enroot_3.4.1-1_${arch}.deb

Puedes instalarlo usando la utilidad dpkg:

sudo dpkg -i enroot_3.4.1-1_${arch}.deb

Si el sistema informa que faltan algunas dependencias, puedes instalarlas manualmente:

sudo apt-get -f install

Finalmente, inicia ambos demonios:

sudo systemctl start slurmd.service && sudo systemctl start slurmctld.service

Este es el conjunto mínimo de pasos necesarios para implementar un simple clúster Slurm con los plugins Pyxis y Enroot. Puedes encontrar información adicional en la documentación oficial en el sitio web del proyecto.

Ver también:



Actualizado: 28.03.2025

Publicado: 09.07.2024


?Tiene más preguntas? ?Escribanos!

By clicking «I Accept» you confirm that you have read and accepted the website Terms and Conditions, Privacy Policy, and Moneyback Policy.