Ubuntu + pytorch + cuda (facultatif)
Pour utiliser cette image, vous devez installer le moteur Docker. Les instructions pour la configuration du moteur Docker sont disponibles sur le site Web de Docker.
Si vous avez une carte graphique NVIDIA compatible CUDA, vous pouvez utiliser une version compatible Cuda de l'image Pytorch pour activer l'accélération matérielle. Je n'ai testé cela que dans Ubuntu Linux.
Tout d'abord, assurez-vous d'installer les pilotes NVIDIA appropriés. Sur Ubuntu, j'ai trouvé que la façon la plus simple de s'assurer que vous avez la bonne version des pilotes configurée est d'installer une version de Cuda au moins aussi nouvelle que l'image que vous avez l'intention d'utiliser via la page de téléchargement officielle de Nvidia Cuda. Par exemple, si vous avez l'intention d'utiliser l'image cuda-10.1 , la configuration de CUDA 10.1 ou CUDA 10.2 devrait vous assurer que vous avez les bons pilotes graphiques.
Vous devrez également installer la boîte à outils Nvidia Container pour activer l'accès des périphériques GPU dans les conteneurs Docker. Cela peut être trouvé à Nvidia / Nvidia-Docker.
Des images prédéfinies sont disponibles sur Docker Hub sous le nom d'Anibali / Pytorch.
Par exemple, vous pouvez tirer une image avec Pytorch 2.0.1 et Cuda 11.8 en utilisant:
$ docker pull anibali/pytorch:2.0.1-cuda11.8 Il est possible d'exécuter des programmes Pytorch dans un conteneur à l'aide de la commande python3 . Par exemple, si vous êtes dans un répertoire contenant un projet Pytorch avec EntryPoint main.py , vous pouvez l'exécuter avec la commande suivante:
docker run --rm -it --init
--gpus=all
--ipc=host
--user= " $( id -u ) : $( id -g ) "
--volume= " $PWD :/app "
anibali/pytorch python3 main.pyVoici une description des options de ligne de commande Docker illustrées ci-dessus:
--gpus=all : requis si vous utilisez CUDA, facultatif autrement. Passe les cartes graphiques de l'hôte au conteneur. Vous pouvez également contrôler plus précisément les cartes graphiques exposées à l'aide de cette option (voir la documentation sur https://github.com/nvidia/nvidia-docker).--ipc=host : requis si vous utilisez le multiprocessement, comme expliqué à https://github.com/pytorch/pytorch#docker-image.--user="$(id -u):$(id -g)" : définit l'utilisateur à l'intérieur du conteneur pour correspondre à votre utilisateur et à votre ID de groupe. Facultatif, mais est utile pour écrire des fichiers avec une propriété correcte.--volume="$PWD:/app" : monte le répertoire de travail actuel dans le conteneur. Le répertoire de travail par défaut à l'intérieur du conteneur est /app . Facultatif.Si vous utilisez un hôte Linux, vous pouvez faire fonctionner le code à l'intérieur du conteneur Docker pour afficher les graphiques à l'aide du serveur Host X (cela vous permet d'utiliser IMShow d'OpenCV, par exemple). Ici, nous décrivons une façon rapide et sombre (mais peu sûre) de le faire. Pour un guide plus complet sur GUIS et Docker, consultez http://wiki.ros.org/docker/tutorials/gui.
Sur la course de l'hôte:
sudo xhost +local:root Vous pouvez révoquer ces autorisations d'accès plus tard avec sudo xhost -local:root . Maintenant, lorsque vous exécutez un conteneur, assurez-vous d'ajouter les options -e "DISPLAY" et --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" . Cela fournira au conteneur votre prise X11 pour la communication et votre ID d'affichage. Voici un exemple:
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 façon recommandée d'ajouter des dépendances supplémentaires à une image est de créer votre propre dockerfile à l'aide de l'une des images Pytorch à partir de ce projet en tant que base.
Par exemple, disons que vous avez besoin d'OpenCV et que vous souhaitez travailler avec Pytorch 2.0.1. Vous pouvez créer votre propre dockerfile à l'aide d' anibali/pytorch:2.0.1-cuda11.8-ubuntu22.04 comme image de base et installer OpenCV en utilisant des étapes de construction supplémentaires:
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 Les dockerfiles dans le dockerfiles/ Directory sont automatiquement générés par le script manager.py en utilisant des détails dans images.yml et les modèles dans templates/ .
Voici un exemple de workflow illustrant comment créer un nouveau dockerfile.
templates/ si aucun des existants n'est approprié.images.yml (voir les entrées existantes pour des exemples).python manager.py . Un nouveau répertoire contenant le dockerfile sera créé dans dockerfiles/ .