Utilizando Docker con GPU para Machine Learning con Pytorch y Tensorflow

Posted by


Introducción:

Docker es una herramienta de código abierto que permite empaquetar, distribuir e implementar aplicaciones de manera muy sencilla y eficiente. Permite a los desarrolladores encapsular sus aplicaciones junto con todas las dependencias en un contenedor independiente que se puede ejecutar en cualquier entorno.

En el ámbito del aprendizaje automático (machine learning), Docker también es una excelente herramienta para crear entornos de desarrollo consistentes y reproducibles. En este tutorial, te mostraré cómo usar Docker con tu GPU para ejecutar aplicaciones de aprendizaje automático utilizando las bibliotecas PyTorch y TensorFlow.

Paso 1: Instalar Docker y los controladores de la GPU:

Lo primero que necesitas hacer es instalar Docker en tu sistema. Puedes seguir las instrucciones específicas para tu sistema operativo en la página oficial de Docker: https://docs.docker.com/get-docker/

Una vez que hayas instalado Docker, también necesitarás instalar los controladores de la GPU en tu sistema. Estos controladores son necesarios para que Docker pueda acceder a la GPU. Puedes encontrar los controladores específicos para tu GPU en la página de soporte de tu fabricante (NVIDIA, AMD, etc.).

Paso 2: Crear un contenedor Docker con soporte para GPU:

Una vez que hayas instalado Docker y los controladores de la GPU, puedes crear un contenedor Docker que pueda acceder a la GPU. Para hacer esto, necesitas crear un fichero Dockerfile con las instrucciones necesarias. Aquí tienes un ejemplo de un Dockerfile básico que puedes utilizar:

FROM nvidia/cuda:11.4.0-cudnn8-runtime

RUN apt-get update && apt-get install -y python3 python3-pip

RUN pip3 install torch torchvision tensorflow

CMD ["python3"]

En este ejemplo, estamos utilizando la imagen base nvidia/cuda:11.4.0-cudnn8-runtime, que proporciona soporte para GPU con CUDA y cuDNN. También estamos instalando las bibliotecas PyTorch y TensorFlow utilizando pip.

Paso 3: Construir y ejecutar el contenedor Docker:

Una vez que tengas tu Dockerfile listo, puedes construir tu imagen Docker ejecutando el siguiente comando en el directorio donde se encuentra tu Dockerfile:

$ docker build -t mi-contenedor .

Este comando construirá la imagen Docker utilizando las instrucciones del Dockerfile. Una vez que la imagen se haya construido correctamente, puedes ejecutar tu contenedor Docker con el siguiente comando:

$ docker run --gpus all -it --rm mi-contenedor

Este comando ejecutará tu contenedor Docker y le dará acceso a todas las GPUs disponibles en tu sistema. Una vez que el contenedor esté en ejecución, puedes iniciar una sesión interactiva de Python y comenzar a utilizar las bibliotecas PyTorch y TensorFlow para el aprendizaje automático.

Conclusión:

En este tutorial, te he mostrado cómo usar Docker con tu GPU para ejecutar aplicaciones de aprendizaje automático utilizando las bibliotecas PyTorch y TensorFlow. Docker es una herramienta muy poderosa que te permite crear entornos de desarrollo consistentes y reproducibles, lo que facilita mucho el desarrollo y la implementación de aplicaciones de aprendizaje automático. Espero que este tutorial te haya sido útil y que te haya ayudado a comenzar a utilizar Docker en tu trabajo de aprendizaje automático. ¡Buena suerte!

0 0 votes
Article Rating
25 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
@joseleonardosanchezvasquez1514
1 month ago

Hola que mas, que paso que no hiciste mas vdeos los tuyos son bastante buenos, ya llevo dos años en este mundo de IA y realmente tu trabajo es bueno

@sirhoker3855
1 month ago

Muchas gracias por tu trabajo, está muy claro y accesible todo.

@johanngil5798
1 month ago

funciona en Windows en la versión de Docker Desktop?

@jacttp
1 month ago

¿Dónde te encuentro para darte unos besos? Llevaba todo el fin de semana sufriendo! Muchas gracias.

@diegodnk
1 month ago

muy bueno <3

@robertbarrios9969
1 month ago

Desde la versión 2.11 de tensorflow, ya no se puede conectar con la GPU Nvidia vía Windows nativo, toca usar WSL.

@xtralx
1 month ago

Buenas gente! Me encanta este canal y me fue tremendamente útil para hacer mi Master Thesis sobre Deep Learning. Ahora me quiero embarcar en otros proyectos con TensorFlow y por ello he seguido todos los pasos de este tutorial, pero cuando quiero probar la instalación:

sudo docker run –rm –gpus all nvidia/cuda:11.0.3-base-ubuntu20.04 nvidia-smi

Me aparece este mensaje como respuesta:

docker: Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error running hook #0: error running hook: exit status 1, stdout: , stderr: Auto-detected mode as 'legacy'

nvidia-container-cli: initialization error: nvml error: driver not loaded: unknown.

No sé si soy el único al que le ocurre.

Saludos y gracias!

@DavidCruz-mc3lh
1 month ago

si uno no tiene gpu se puede hacer con la tarjeta integrada que maneja el pc

@AlfredoGonzalez-qj4ng
1 month ago

MUchas gracias! una duda, tengo ubuntu 22.04, y habilite la extension de visual studio code para docker, y corre los contenedores muy bien pero no logro ligar mi jupyter lab a que agarre la GPU, sabras como puedo hacerlo? o donde encontrar la documentacion necesaria? saludos!

@alanluque3336
1 month ago

che y un tuto para amd gpu + wndows?

@AleMartir
1 month ago

Hola, el equipo donde tengo Docker tiene una gráfica integrada de Intel (Iris Graphics 6100) ¿se puede realizar? No lo busco para machine learning o IA, sino que para mejorar el rendimiento de Plex, yo sé, es un uso más «mortal» pero me gustaría saber si es posible, gran video por cierto 😀

@JuniorH
1 month ago

muchas gracias!,tengo una duda, es posible instalar las imagenes en otra partición?

@cauapaz
1 month ago

Te amo, solo eso

@joseheras7899
1 month ago

Amigo muchas gracias!! Conozco tu canal desde que vi que comenzaste a realizar un asistente tipo Jarvis, Ya fuiste a ver el proyecto Open Assistan, la comunidad no se debe quedar atrás.

@edsongreigcacerescardenas9830
1 month ago

@AMP Tech Que tal, luego se seguir los pasos del video, todo estaba OK. He querido correr un código ya mas extenso, pero me sale el siguiente error justo al correr el entrenamiento :s

Node: 'model/conv2d/Relu'

DNN library is not found.

[[{{node model/conv2d/Relu}}]] [Op:__inference_train_function_3324]

He probado varias imágenes de docker, pero en el error el común denominador sigue siendo "DNN library is not found"

por ahi dí "pip install dnn", y salía otro error…

Corriendo a puro CPU en conda corre normal.

HELP! u.u

@edsongreigcacerescardenas9830
1 month ago

Excelente video estimado, sigue así por favor :3
Pregunta rapida, también logré hacer el uso del GPU con conda en ubuntu (fui afortunado y no tuve problemas)
¿Alguna diferencia entre estas dos alternativas, en rendimiento, etc?
Saludos desde Perú.

@bugny
1 month ago

Gran video, tengo una duda, sí tengo una laptop M1 para entrenar y para desplegar modelos un servidor que solo tiene gráfica integrada de Intel, puedo usar el mismo contenedor en ambas computadoras?

@rubenf.7533
1 month ago

Parcero me gusto mucho tu video, me gustaria que me pudieras ayudar con configurar mi pc, tengo un acer nitro 5 con gpu gtx 1650, con windows 10 y ubuntu 22.04, quiero dejar solo ubuntu para machine learning y deep learning, pero he probado de todo para instalar tensorflow cuda y cudnn, y nada funciona, si me puedes ayudar por favor.

este metodo con docker tambien lo veo muy viable pero yo estoy acostumbrado a trabajar con notebooks ya sea google colab o jupyer, entonces como haria en este caso con docker. gracias

@guillermovc
1 month ago

Entonces por lo que veo no es posible instalar el nvidia container toolkit en windows?

@roman_ramos
1 month ago

Excelente video. Necesitaba esto. Gracias