
Si tiene una GPU NVIDIA instalada en su servidor Proxmox VE, puede pasarla a un contenedor Proxmox VE LXC y usarla dentro del contenedor para aceleración CUDA/AI (es decir, TensorFlow, PyTorch). También puede utilizar las GPU NVIDIA para transcodificación de medios, transmisión de video, etc. en un contenedor Proxmox VE LXC con Plex Media Server o NextCloud (por ejemplo) instalado.
En este artículo, le mostraremos cómo pasar una GPU NVIDIA a un contenedor Proxmox VE 8 LXC para que pueda usarlo para aceleración CUDA/AI, transcodificación de medios u otras tareas que requieran una GPU NVIDIA.
Temas de contenido:
- Instale el controlador de GPU NVIDIA en Proxmox VE 8
- Asegúrese de que el módulo central de la GPU NVIDIA se cargue automáticamente en Proxmox VE 8
- Creación de un contenedor Proxmox VE 8 LXC para transferencia de GPU NVIDIA
- Configuración de contenedores LXC en Promox VE 8 para transferencia de GPU NVIDIA
- Instale el controlador de GPU NVIDIA en el contenedor Proxmox VE 8 LXC
- Instale NVIDIA CUDA y cuDNN en el contenedor Proxmox VE 8 LXC
- Compruebe si la aceleración NVIDIA CUDA se ejecuta en el contenedor Proxmox VE 8 LXC
- en conclusión
- Referirse a
Instale el controlador de GPU NVIDIA en Proxmox VE 8
Para entregar una GPU NVIDIA a un contenedor Proxmox VE LXC, debe instalar el controlador de GPU NVIDIA en el servidor Proxmox VE 8. Si necesita ayuda para instalar la última versión del controlador oficial de GPU NVIDIA en su servidor Proxmox VE 8, lea este artículo.
Asegúrese de que el módulo central de la GPU NVIDIA se cargue automáticamente en Proxmox VE 8
Después de instalar el controlador de GPU NVIDIA en el servidor Proxmox VE 8, debe asegurarse de que el módulo central de GPU NVIDIA se cargue automáticamente al inicio.
Primero, cree un nuevo archivo, como «nvidia.conf», en el directorio «/etc/modules-load.d/» y ábralo usando el editor de texto nano.
$ nanómetro /ETC/Cargando módulo.d/nvidia.conf

Añade las siguientes líneas y presiona


Para que los cambios surtan efecto, actualice el archivo «initramfs» usando el siguiente comando:


Por alguna razón, Proxmox VE 8 no crea los archivos de dispositivo GPU NVIDIA necesarios en el directorio «/dev/». Sin estos archivos de dispositivo, los contenedores Promox VE 8 LXC no podrán utilizar las GPU NVIDIA.
Para garantizar que Proxmox VE 8 cree el archivo del dispositivo GPU NVIDIA en el directorio «/dev/» al iniciar, cree un archivo de reglas udev «70-nvidia.rules» en «/etc/udev/rules.d/». directorio y ábralo usando el editor de texto nano como se muestra a continuación:
$ nanómetro /ETC/Udev/Reglas.d/70-nvidia.reglas


Ingrese las siguientes líneas en el archivo «70-nvidia.rules» y haga clic en
centro==«Nvidia»Ejecutar +=«/bin/bash -c ‘/usr/bin/nvidia-smi -L && /bin/chmod 0666 /dev/nvidia*'»
centro==«nvidia_uvm»Ejecutar +=«/bin/bash -c ‘/usr/bin/nvidia-modprobe -c0 -u && /bin/chmod 0666 /dev/nvidia-uvm*'»


Para que los cambios surtan efecto, reinicie el servidor Proxmox VE 8 de la siguiente manera:


Después de que se inicie el servidor Proxmox VE 8, los módulos principales de NVIDIA deberían cargarse automáticamente, como se muestra en la siguiente captura de pantalla:


Los archivos del dispositivo NVIDIA requeridos también deben completarse en el directorio «/dev» del servidor Proxmox VE 8. Tome nota del ID de grupo CG del perfil del dispositivo NVIDIA. Debe permitir que estos ID de CGroup en el contenedor LXC pasen las GPU NVIDIA desde el servidor Proxmox VE 8. En nuestro ejemplo, los ID de CGroup son 195, 237 y 226.
$ LS -lh /Desarrollador/Delhi


Creación de un contenedor Proxmox VE 8 LXC para transferencia de GPU NVIDIA
Usamos el contenedor Ubuntu 22.04 LTS Proxmox VE 8 LXC para la demostración en este artículo porque las bibliotecas NVIDIA CUDA y NVIDIA cuDNN son fáciles de instalar en Ubuntu 22.04 LTS desde el repositorio de paquetes de Ubuntu y es más fácil probar si la aceleración NVIDIA CUDA está funcionando correctamente. . También puede utilizar otras distribuciones de Linux si lo desea. En este caso, las instrucciones de instalación de NVIDIA CUDA y NVIDIA cuDNN serán diferentes. Asegúrese de seguir las instrucciones de instalación de NVIDIA CUDA y NVIDIA cuDNN para la distribución de Linux que desee.
Si necesita ayuda para configurar un contenedor Proxmox VE 8 LXC, Lee este artículo.
Configuración de contenedores LXC en Promox VE 8 para transferencia de GPU NVIDIA
Para configurar un contenedor LXC (por ejemplo, el contenedor 102) para el paso a través de GPU NVIDIA, use el editor de texto Nano para abrir el archivo de configuración del contenedor LXC desde el shell Proxmox VE, como se muestra a continuación:
$ nanómetro /ETC/Experiencia personal/Changshá/102.conf


Escriba las siguientes líneas al final del archivo de configuración del contenedor LXC:
lxc.cgrupo.dispositivos.permitir:c Capítulo 237:* rwm
lxc.cgrupo.dispositivos.permitir:c 226:* rwm
entrada.lxc.mount: /Desarrollador/desarrollador nvidia0/nvidia0 ninguno vinculanteelectivo,crear=documento
entrada.lxc.mount: /Desarrollador/nvidia desarrollo corp./sin virus vinculanteelectivo,crear=documento
entrada.lxc.mount: /Desarrollador/desarrollo de nvidia-modeset/nvidia-modeset Ninguno vinculanteelectivo,crear=documento
entrada.lxc.mount: /Desarrollador/desarrollo nvidia-uvm/nvidia-uvm Ninguno vinculanteelectivo,crear=documento
entrada.lxc.mount: /Desarrollador/desarrollo de herramientas nvidia-uvm/nvidia-uvm-herramientas ninguna vinculanteelectivo,crear=documento
entrada.de.montaje.lxc: /Desarrollador/desarrollo de delhi/Delhi Ninguno vinculanteelectivo,crear=Tabla de contenido
Asegúrese de reemplazar el ID de CGroup en la línea «lxc.cgroup.devices.allow» del archivo de configuración del contenedor LXC.Cuando termine, presione


Ahora, inicie el contenedor LXC desde el tablero de Proxmox VE 8.


Si la transferencia de GPU de NVIDIA se realiza correctamente, el contenedor LXC debería iniciarse sin errores y debería ver el archivo del dispositivo NVIDIA en el directorio «/dev» del contenedor.
$ LS -lh /Desarrollador/Delhi


Instale el controlador de GPU NVIDIA en el contenedor Proxmox VE 8 LXC
notas: Usamos el contenedor Ubuntu 22.04 LTS LXC en el servidor Proxmox VE 8 para demostración. Si está utilizando otra distribución de Linux en contenedores LXC, sus instrucciones serán ligeramente diferentes a las nuestras. Por lo tanto, asegúrese de ajustar los comandos según la distribución de Linux que esté utilizando en el contenedor.
Puede utilizar el comando «nvidia-smi» para encontrar la versión del controlador NVIDIA GPU instalada en el servidor Proxmox VE 8. Como puede ver, tenemos la versión 535.146.02 del controlador NVIDIA GPU instalada en nuestro servidor Proxmox VE 8. Por lo tanto, también debemos instalar el controlador NVIDIA GPU versión 535.146.02 en el contenedor LXC.


Primero, instale CURL en el contenedor LXC de la siguiente manera:
$ Fácil de actualizar && fácil Instalar ondulado -y


CURL debe instalarse en el contenedor LXC.


Para instalar la versión 535.146.02 del controlador NVIDIA GPU (suponiendo), exporte la variable de entorno NVIDIA_VERSION y ejecute el comando CURL (en el contenedor) para descargar la versión requerida del archivo de instalación del controlador NVIDIA GPU.
$ rizo -O «https://us.download.nvidia.com/XFree86/Linux-x86_64/${NVIDIA_VERSION}/NVIDIA-Linux-x86_64-${NVIDIA_VERSION}. correr»


Se debe descargar la versión correcta del archivo de instalación del controlador NVIDIA GPU en el contenedor LXC, como se muestra en la siguiente captura de pantalla:


Ahora agregue permisos ejecutables al archivo de instalación del controlador de la GPU NVIDIA en el contenedor de la siguiente manera:
$ chmod +x NVIDIA-Linux-x86_64-535.146.02.run
Para instalar el controlador de GPU NVIDIA en el contenedor, ejecute el archivo de instalación del controlador de GPU NVIDIA con «–no-kernel-module» Las opciones son las siguientes:
$ ./NVIDIA-Linux-x86_64-535.146.02.run –Sin módulo central
Una vez que vea esta opción, seleccione Aceptar y presione


Seleccione Aceptar y presione


Seleccione «Sí» y presione


Seleccione Aceptar y presione


El controlador de GPU NVIDIA se está instalando en el contenedor LXC. Tardará unos segundos en completarse.


Cuando vea este mensaje, seleccione «Sí» y presione


Seleccione Aceptar y presione


Para confirmar que el controlador de la GPU NVIDIA esté instalado y funcionando correctamente, ejecute el comando «nvidia-smi» en el contenedor LXC. Como puede ver, el controlador de GPU NVIDIA versión 535.146.02 está instalado en el contenedor LXC (la misma versión instalada en el servidor Proxmox VE 8) y detecta correctamente nuestra GPU NVIDIA RTX 4070.


Instale NVIDIA CUDA y cuDNN en el contenedor Proxmox VE 8 LXC
notas: Usamos el contenedor Ubuntu 22.04 LTS LXC en el servidor Proxmox VE 8 para demostración. Si está utilizando otra distribución de Linux en contenedores LXC, sus instrucciones serán ligeramente diferentes a las nuestras. Por lo tanto, asegúrese de ajustar los comandos según la distribución de Linux que esté utilizando en el contenedor.
Para instalar NVIDIA CUDA y cuDNN en el contenedor Ubuntu 22.04 LTS Proxmox VE 8, ejecute los siguientes comandos en el contenedor:
$ fácil Instalar Cree el kit de herramientas nvidia-cuda necesario nvidia-cudnn
Para confirmar la instalación, presione «Y» y luego


Descarga e instalación de los paquetes necesarios. Tardará un poco en completarse.


Una vez que vea esta ventana, seleccione Aceptar y haga clic


Selecciona «Acepto» y presiona


La instalación debería continuar.


El instalador está descargando el archivo de la biblioteca NVIDIA cuDNN de NVIDIA. El archivo es grande por lo que tardará bastante en completarse.


Después de descargar el archivo de la biblioteca NVIDIA cuDNN, la instalación debería continuar con normalidad.


En este punto, NVIDIA CUDA y cuDNN deberían estar instalados en el contenedor Ubuntu 22.04 LTS Proxmox VE 8 LXC.


Compruebe si la aceleración NVIDIA CUDA se ejecuta en el contenedor Proxmox VE 8 LXC
Para verificar que NVIDIA CUDA se haya instalado correctamente, verifique que el comando «nvcc» esté disponible en el contenedor Proxmox VE 8 de la siguiente manera:
Como podéis ver, tenemos NVIDIA CUDA 11.5 instalado en el contenedor Proxmox VE 8.


Ahora, escribamos, compilemos y ejecutemos un programa CUDA C simple para ver si todo funciona como se esperaba.
Primero, cree un directorio de proyecto «~/code» en el contenedor Proxmox VE 8 para mantener los archivos organizados.
Navegue hasta el directorio del proyecto «~/code» como se muestra a continuación:
Cree un nuevo archivo, como «hello.cu», en el directorio «~/code» del contenedor Proxmox VE 8 y ábralo usando el editor de texto nano:
Ingrese las siguientes líneas de código en el archivo «hello.cu»:
__global__ no válido decir Hola() {
Función de impresión(«¡Hola mundo GPU!\norte«);
}
maestro de enteros() {
Función de impresión(«¡Hola mundo de la CPU!\norte«);
di hola<1,1>>();
sincronización de dispositivos cuda();
devolver 0;
}
Cuando termine, presione


Para compilar el programa CUDA «hello.cu» en el contenedor Proxmox VE 8, ejecute el siguiente comando:
Ahora puede ejecutar el programa CUDA «hola» en el contenedor Proxmox VE 8 de la siguiente manera:
Si el contenedor Proxmox VE 8 puede usar GPU NVIDIA para la aceleración NVIDIA CUDA, el programa imprimirá dos líneas, como se muestra en la imagen a continuación.
Si no se puede acceder a la GPU NVIDIA desde el contenedor Proxmox VE 8, el programa solo imprimirá la primera línea «¡Hola mundo desde la CPU!» en lugar de la segunda línea.


en conclusión
En este artículo, le mostramos cómo pasar una GPU NVIDIA desde un host Proxmox VE 8 a un contenedor Proxmox VE 8 LXC. También le mostramos cómo instalar la misma versión del controlador de GPU NVIDIA en el contenedor Proxmox VE 8 como host de Proxmox VE. Finalmente, le mostramos cómo instalar NVIDIA CUDA y NVIDIA cuDNN en un contenedor Ubuntu 22.04 LTS Proxmox VE 8, y cómo compilar y ejecutar un programa NVIDIA CUDA simple en un contenedor Proxmox VE 8.









