Ubuntu + Pytorch + CUDA (opcional)
Para usar esta imagen debe tener instalado Docker Engine. Las instrucciones para configurar Docker Engine están disponibles en el sitio web de Docker.
Si tiene una tarjeta gráfica NVIDIA compatible con CUDA, puede usar una versión habilitada para CUDA de la imagen Pytorch para habilitar la aceleración de hardware. Solo he probado esto en Ubuntu Linux.
En primer lugar, asegúrese de instalar los controladores NVIDIA apropiados. En Ubuntu, descubrí que la forma más fácil de garantizar que tenga la versión correcta de los controladores configurados es instalar una versión de CUDA al menos tan nueva como la imagen que tiene la intención de usar a través de la página de descarga oficial de NVIDIA CUDA. Como ejemplo, si tiene la intención de usar la imagen cuda-10.1 , la configuración de CUDA 10.1 o CUDA 10.2 debe asegurarse de tener los controladores de gráficos correctos.
También deberá instalar el conjunto de herramientas de contenedores NVIDIA para habilitar el acceso al dispositivo GPU dentro de los contenedores Docker. Esto se puede encontrar en NVIDIA/NVIDIA-Docker.
Las imágenes preconstruidas están disponibles en Docker Hub bajo el nombre Anibali/Pytorch.
Por ejemplo, puede extraer una imagen con Pytorch 2.0.1 y CUDA 11.8 usando:
$ docker pull anibali/pytorch:2.0.1-cuda11.8 Es posible ejecutar programas de Pytorch dentro de un contenedor utilizando el comando python3 . Por ejemplo, si está dentro de un directorio que contiene algún proyecto Pytorch con EntryPoint main.py , puede ejecutarlo con el siguiente comando:
docker run --rm -it --init
--gpus=all
--ipc=host
--user= " $( id -u ) : $( id -g ) "
--volume= " $PWD :/app "
anibali/pytorch python3 main.pyAquí hay una descripción de las opciones de línea de comandos de Docker que se muestran arriba:
--gpus=all : requerido si usa cuda, opcional de lo contrario. Pasa las tarjetas gráficas del host al contenedor. También puede controlar con mayor precisión qué tarjetas gráficas están expuestas utilizando esta opción (consulte la documentación en https://github.com/nvidia/nvidia-docker).--ipc=host : requerido si se usa multiprocesamiento, como se explica en https://github.com/pytorch/pytorch#docker-image.--user="$(id -u):$(id -g)" : Establece al usuario dentro del contenedor para que coincida con su ID de usuario y grupo. Opcional, pero es útil para escribir archivos con la propiedad correcta.--volume="$PWD:/app" : monta el directorio de trabajo actual en el contenedor. El directorio de trabajo predeterminado dentro del contenedor es /app . Opcional.Si se ejecuta en un host de Linux, puede obtener un código que se ejecuta dentro del contenedor Docker para mostrar gráficos utilizando el servidor Host X (esto le permite usar IMSHOW de OpenCV, por ejemplo). Aquí describimos una forma rápida y sucia (pero insegura) de hacerlo. Para obtener una guía más completa sobre GUI y Docker, visite http://wiki.ros.org/docker/tutorials/gui.
En la ejecución del host:
sudo xhost +local:root Puede revocar estos permisos de acceso más tarde con sudo xhost -local:root . Ahora, cuando ejecute un contenedor, asegúrese de agregar las opciones -e "DISPLAY" y --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" . Esto proporcionará al contenedor su enchufe X11 para la comunicación y su ID de pantalla. Aquí hay un ejemplo:
docker run --rm -it --init
--gpus=all
-e " DISPLAY " --volume= " /tmp/.X11-unix:/tmp/.X11-unix:rw "
anibali/pytorch python3 -c " import tkinter; tkinter.Tk().mainloop() "La forma recomendada de agregar dependencias adicionales a una imagen es crear su propio Dockerfile utilizando una de las imágenes de Pytorch de este proyecto como base.
Por ejemplo, supongamos que necesita OpenCV y desea trabajar con Pytorch 2.0.1. Puede crear su propio Dockerfile usando anibali/pytorch:2.0.1-cuda11.8-ubuntu22.04 como la imagen base e instalar OpenCV usando pasos de compilación adicionales:
FROM anibali/pytorch:2.0.1-cuda11.8-ubuntu22.04
# Set up time zone.
ENV TZ=UTC
RUN sudo ln -snf /usr/share/zoneinfo/$TZ /etc/localtime
# Install system libraries required by OpenCV.
RUN sudo apt-get update
&& sudo apt-get install -y libgl1-mesa-glx libgtk2.0-0 libsm6 libxext6
&& sudo rm -rf /var/lib/apt/lists/*
# Install OpenCV from PyPI.
RUN pip install opencv-python==4.5.1.48 Los DockerFiles en dockerfiles/ Directorio son generados automáticamente por el script manager.py utilizando detalles en images.yml y las plantillas en templates/ .
Aquí hay un ejemplo de flujo de trabajo que ilustra cómo crear un nuevo Dockerfile.
templates/ Si ninguno de los existentes es apropiado.images.yml (consulte las entradas existentes para ver ejemplos).python manager.py . Se creará un nuevo directorio que contiene el DockerFile en dockerfiles/ .