Ubuntu + Pytorch + CUDA (optional)
Um dieses Bild zu verwenden, müssen Docker Engine installiert sein. Anweisungen zum Einrichten von Docker Engine finden Sie auf der Docker -Website.
Wenn Sie eine CUDA-kompatible NVIDIA-Grafikkarte haben, können Sie eine Cuda-fähige Version des Pytorch-Images verwenden, um die Beschleunigung der Hardware zu aktivieren. Ich habe dies nur in Ubuntu Linux getestet.
Stellen Sie zunächst sicher, dass Sie die entsprechenden NVIDIA -Treiber installieren. Auf Ubuntu habe ich festgestellt, dass der einfachste Weg, um sicherzustellen, dass Sie die richtige Version der Treiber eingerichtet haben, darin besteht, eine Version von CUDA mindestens neu zu installieren wie das Bild, das Sie über die offizielle NVIDIA CUDA -Download -Seite verwenden möchten . Wenn Sie beispielsweise das cuda-10.1 -Bild verwenden möchten, sollte CUDA 10.1 oder CUDA 10.2 sicherstellen, dass Sie über die richtigen Grafiktreiber verfügen.
Sie müssen auch das NVIDIA -Container -Toolkit installieren, um den Zugriff auf den GPU -Gerät in Docker -Containern zu ermöglichen. Dies ist bei Nvidia/Nvidia-Docker zu finden.
Vorgebaute Bilder sind auf Docker Hub unter dem Namen Anibali/Pytorch verfügbar.
Sie können beispielsweise ein Bild mit Pytorch 2.0.1 und CUDA 11.8 mit:
$ docker pull anibali/pytorch:2.0.1-cuda11.8 Mit dem Befehl python3 ist es möglich, Pytorch -Programme in einem Container auszuführen. Wenn Sie beispielsweise in einem Verzeichnis mit einem Pytorch -Projekt mit EntryPoint main.py sind, können Sie es mit dem folgenden Befehl ausführen:
docker run --rm -it --init
--gpus=all
--ipc=host
--user= " $( id -u ) : $( id -g ) "
--volume= " $PWD :/app "
anibali/pytorch python3 main.pyHier finden Sie eine Beschreibung der oben gezeigten Befehlszeilenoptionen der Docker:
--gpus=all : Erforderlich, wenn sie CUDA verwendet, sonst optional. Übergibt die Grafikkarten vom Host an den Container. Sie können auch genauer steuern, welche Grafikkarten mit dieser Option ausgesetzt sind (siehe Dokumentation unter https://github.com/nvidia/nvidia-docker).--ipc=host : Erforderlich, wenn Sie Multiprocessing verwenden, wie unter https://github.com/pytorch/pytorch#docker-image erläutert.--user="$(id -u):$(id -g)" : Legt den Benutzer im Container so fest, dass Sie mit Ihrer Benutzer- und Gruppen -ID übereinstimmen. Optional, ist jedoch nützlich, um Dateien mit korrektem Eigentum zu schreiben.--volume="$PWD:/app" : montiert das aktuelle Arbeitsverzeichnis in den Container. Das Standard -Arbeitsverzeichnis im Container ist /app . Optional.Wenn Sie auf einem Linux -Host ausgeführt werden, können Sie den Code im Docker -Container ausführen, um Grafiken mit dem Host X -Server anzuzeigen. Hier beschreiben wir eine schnelle (aber unsichere) Art, dies zu tun. Eine umfassendere Anleitung zu GUIS und Docker finden Sie unter http://wiki.ros.org/docker/tutorials/gui.
Auf dem Host -Lauf:
sudo xhost +local:root Sie können diese Zugriffsberechtigungen später mit sudo xhost -local:root widerrufen. Wenn Sie nun einen Container ausführen, stellen Sie sicher, dass Sie die Optionen -e "DISPLAY" und --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" hinzufügen. Dadurch wird der Container Ihren X11 -Socket für die Kommunikation und Ihre Anzeige -ID zur Verfügung gestellt. Hier ist ein Beispiel:
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() "Die empfohlene Möglichkeit, einem Bild zusätzliche Abhängigkeiten hinzuzufügen, besteht darin, eine eigene Dockerfile mit einem der Pytorch -Bilder aus diesem Projekt als Basis zu erstellen.
Nehmen wir beispielsweise an, Sie benötigen OpenCV und möchten mit Pytorch 2.0.1 arbeiten. Sie können Ihre eigene Dockerfile mit anibali/pytorch:2.0.1-cuda11.8-ubuntu22.04 als Basisbild und installieren OpenCV mit zusätzlichen Build-Schritten:
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 Die DockerFiles im dockerfiles/ Verzeichnis werden automatisch vom Skript manager.py unter Verwendung von Details in images.yml und den Vorlagen in templates/ generiert.
Hier ist ein Beispiel Workflow, der veranschaulicht, wie man eine neue Dockerfile erstellt.
templates/ Wenn keiner der vorhandenen angemessen ist.images.yml (Beispiele finden Sie in den vorhandenen Einträgen).python manager.py ausführen. Ein neues Verzeichnis, das die Dockerfile enthält, wird in dockerfiles/ erstellt.