Gestionando múltiples versiones de CUDA en una sola máquina Una guía completa

Administrando múltiples versiones de CUDA en una sola máquina Una guía completa

Cómo manejar diferentes versiones de CUDA en tu entorno de desarrollo

Foto de Nikola Majksner en Unsplash

En uno de mis roles anteriores como consultor de IA, se me asignó la tarea de utilizar entornos virtuales como una herramienta para gestionar y aislar entornos de Python. Dado que el proyecto dependía de la aceleración GPU, me encontré en una situación en la que la versión de CUDA instalada difería de la versión requerida para el proyecto. Para solucionar esto, tuve que instalar la versión de CUDA necesaria y configurar mi entorno para usarla sin afectar la configuración de CUDA del sistema. Hasta donde yo sé, hay escasez de tutoriales completos que aborden esta necesidad específica. Por lo tanto, este tutorial sirve como un recurso valioso para aquellos que buscan comprender cómo gestionar de manera segura múltiples versiones del Toolkit CUDA en sus proyectos.

Tabla de contenidos:

· 1. Introducción· 2. Versiones disponibles de CUDA· 3. Descargar y extraer los binarios· 4. Instalar toolkit CUDA· 5. Configuración del proyecto· 6. Conclusión

1. Introducción

Instalar múltiples versiones del Toolkit CUDA en tu sistema puede tener varios efectos y consecuencias, algunos de los cuales pueden afectar tu sistema:

  • Puede haber conflictos en la variable de entorno PATH. Si no se gestionan correctamente, estos conflictos pueden afectar la versión de CUDA que se utiliza de forma predeterminada.
  • Puede requerir versiones específicas de los controladores de GPU para un rendimiento y compatibilidad óptimos. La instalación de una nueva versión podría requerir actualizar tu controlador de GPU.
  • Algunas bibliotecas y software pueden depender de una versión específica de CUDA. La instalación de una nueva versión podría interrumpir la compatibilidad con estas dependencias.
  • Las aplicaciones que dependen de CUDA pueden necesitar ajustes para funcionar con la nueva versión. Las incompatibilidades pueden causar errores o comportamiento inesperado.
  • Gestionar incorrectamente múltiples versiones de CUDA puede provocar inestabilidad del sistema o errores en aplicaciones aceleradas por GPU.

Por lo tanto, para gestionar de manera segura múltiples versiones del Toolkit CUDA para tu proyecto, sigue estos pasos:

  1. Verifica la versión actual de CUDA en tu sistema.
  2. Descarga y extrae los binarios de la versión deseada.
  3. Ejecuta el instalador para instalar solo el toolkit.

En este tutorial, proporcionaré un ejemplo detallado y paso a paso de cómo lograr esto. Además, te guiaré en la configuración de tu entorno virtual después de que los binarios se instalen correctamente.

2. Versiones disponibles de CUDA

Vejamos qué versión de CUDA se está utilizando actualmente en el sistema ejecutando el comando nvidia-smi:

Como puedes ver, la versión de CUDA es 12.1.

Ahora vamos a mostrar las versiones de CUDA disponibles en mi máquina:

$ ls /usr/local/ | grep cudacudacuda-11.7cuda-12cuda-12.1

Tengo tres versiones diferentes disponibles en mi máquina.

3. Descargar y extraer los binarios

Supongamos que el proyecto en el que trabajaré requiere la versión 11.8 del Toolkit CUDA. Para obtenerlo, comenzamos visitando el sitio web del Archivo del Toolkit CUDA de NVIDIA: aquí. Localizamos la versión específica del Toolkit CUDA que demanda nuestro proyecto. Es importante asegurarnos de seleccionar la versión compatible con nuestro sistema operativo. En mi caso, elegí la plataforma objetivo:

Mi plataforma objetivo: Linux — x86_64 — Ubuntu — 22.04

Elige la versión ‘runfile (local)’ del kit de herramientas de CUDA que corresponda a tu sistema operativo. Este archivo en particular generalmente tiene una extensión .run. Cuando seleccionas runfile (local), el sitio web te proporciona las instrucciones de instalación. En mi caso, las instrucciones proporcionadas son las siguientes:

wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.runsudo sh cuda_11.8.0_520.61.05_linux.run

Sin embargo, es importante tener en cuenta que nuestro objetivo no es instalar esta versión, ya que ya hay una versión más nueva. Por lo tanto, solo necesitamos seguir la primera instrucción para descargar el archivo:

wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run

La descarga se puede verificar al comparar el checksum MD5 publicado en este enlace con el del archivo descargado.

“Un instalador local es autocontenido. Es un archivo grande que solo necesita descargarse de Internet una vez y se puede instalar en varios sistemas. Los instaladores locales son el tipo de instalador recomendado para conexiones a Internet de baja velocidad, o donde no es posible utilizar un instalador de red (por ejemplo, debido a restricciones de firewall).” [1]

En esta etapa, abre una terminal, ve al directorio donde transferiste el archivo ejecutable de CUDA y hazlo ejecutable:

chmod +x cuda_11.8.0_520.61.05_linux.run

4. Instalar el kit de herramientas de CUDA

Ahora, ejecutamos el archivo de CUDA con las banderas --silent y --toolkit para realizar una instalación silenciosa del kit de herramientas de CUDA:

sudo ./cuda_11.8.0_520.61.05_linux.run --silent --toolkit

Donde:

  • --silent: realiza una instalación sin intervención adicional del usuario y con una salida de línea de comandos mínima.
  • --toolkit: instala solo el kit de herramientas de CUDA y mantiene tus controladores actuales.

Si se te solicita aceptar el acuerdo, acéptalo para continuar con la instalación.

Al finalizar, se extraen los archivos binarios del kit de herramientas de CUDA. Podemos asegurarnos ejecutando nuevamente el siguiente comando:

$ ls /usr/local/ | grep cudacudacuda-11.7cuda-11.8cuda-12cuda-12.1

Como puedes ver, cuda-11.8 ahora está disponible en mi máquina y la versión actual del sistema sigue siendo la misma (puedes confirmarlo ejecutando nvidia-smi).

Estos pasos te permiten instalar las versiones binarias de CUDA. En la siguiente sección, te mostraré cómo configurar tu proyecto para usar la versión de CUDA requerida.

5. Configuración del proyecto

Cuando trabajas con varios proyectos, se recomienda utilizar entornos virtuales. Comenzamos creando un entorno virtual. En mi caso, se requiere python3.8. Para crear un entorno virtual, podemos usar el siguiente comando. Creé un entorno llamado my_venv en venv, una carpeta donde guardé los entornos virtuales:

python3.8 -m venv venv/my_envsource venv/my_env/bin/activate

Veamos qué versión de CUDA se está utilizando actualmente:

$ nvcc --versionnvcc: NVIDIA (R) Cuda compiler driverCopyright (c) 2005-2021 NVIDIA CorporationBuilt on Thu_Nov_18_09:45:30_PST_2021Cuda compilation tools, release 11.5, V11.5.119Build cuda_11.5.r11.5/compiler.30672275_0

Como puedes ver, el entorno creado no está utilizando la versión CUDA requerida, por lo que debemos configurarlo manualmente actualizando el archivo de activación y agregando las siguientes líneas:

export PATH=/usr/local/cuda-11.8/bin:$PATHexport LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64:$LD_LIBRARY_PATH

Puedes actualizar el archivo de activación usando tu editor favorito, o simplemente ejecutar el siguiente comando para agregar texto al final del archivo:

echo "export PATH=/usr/local/cuda-11.8/bin:$PATH" >> venv/my_env/bin/activateecho "LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64:$LD_LIBRARY_PATH" >> venv/my_env/bin/activate

Finalmente, necesitamos reactivar el entorno y volver a ejecutar el comando nvcc:

$ source venv/nerfstudio/bin/activate$ nvcc --versionnvcc: Controlador del compilador NVIDIA (R) CudaDerechos de autor (c) 2005-2022 NVIDIA CorporationVersión compilada el Wed_Sep_21_10:33:58_PDT_2022Herramientas de compilación de Cuda, release 11.8, V11.8.89Construir cuda_11.8.r11.8/compiler.31833905_0

¡Y eso es todo! ¡Ahora el proyecto está configurado para ejecutar la versión CUDA requerida y sin conflictos!

6. Conclusion

Siguiendo los pasos descritos en este tutorial, puedes mantener con éxito múltiples versiones de CUDA en tu sistema sin encontrar conflictos entre las instalaciones. Esta flexibilidad permite a cada proyecto utilizar la versión CUDA exacta que necesita, lograda a través de la configuración de variables de entorno adaptadas a tus necesidades específicas.

Gracias por leer. Espero que hayas disfrutado este tutorial. Si aprecias mis tutoriales, por favor apóyame siguiéndome y suscribiéndote. De esta manera, recibirás notificaciones sobre mis nuevos artículos. Si tienes alguna pregunta o sugerencia, no dudes en dejar un comentario.

Referencias

[1] https://developer.nvidia.com/cuda-12-2-2-download-archive?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=22.04&target_type=runfile_local

Créditos de imagen

Todas las imágenes y figuras en este artículo cuya fuente no se menciona en la leyenda son del autor.

We will continue to update Zepes; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

Inteligencia Artificial

Investigadores de Microsoft Research y Georgia Tech revelan los límites estadísticos de las alucinaciones en los modelos de lenguaje

Un problema clave que ha surgido recientemente en los Modelos de Lenguaje es la alta tasa a la que proporcionan infor...

Inteligencia Artificial

Mejorando el procesamiento inteligente de documentos de AWS con IA generativa

La clasificación, extracción y análisis de datos puede ser un desafío para las organizaciones que manejan volúmenes d...

Inteligencia Artificial

Esta investigación de IA presenta métodos innovadores para adaptar modelos de lenguaje a la diseño de chips

ChipNeMo explora la utilización de LLMs para el diseño de chips industriales, empleando técnicas de adaptación de dom...

Aprendizaje Automático

La mochila que resuelve el sesgo de ChatGPT Los modelos de lenguaje Backpack son métodos de inteligencia artificial alternativos para los transformadores.

Los modelos de lenguaje de Inteligencia Artificial se están convirtiendo en una parte esencial de nuestras vidas. Hem...