Ubuntu + Pytorch + CUDA(可選)
為了使用此圖像,您必須安裝Docker引擎。設置Docker Engine的說明可在Docker網站上找到。
如果您擁有與CUDA兼容的NVIDIA圖形卡,則可以使用啟用CUDA的Pytorch圖像的版本來啟用硬件加速度。我只在Ubuntu Linux中對此進行了測試。
首先,確保安裝合適的NVIDIA驅動程序。在Ubuntu上,我發現確保您擁有正確版本的驅動程序的最簡單方法是通過安裝CUDA版本,至少與打算通過官方NVIDIA CUDA下載頁面使用的圖像一樣新。例如,如果您打算使用cuda-10.1圖像,則設置CUDA 10.1或CUDA 10.2應確保您具有正確的圖形驅動程序。
您還需要安裝NVIDIA容器工具包,以在Docker容器中啟用GPU設備訪問。這可以在NVIDIA/NVIDIA-DOCKER上找到。
預先構建的圖像可在Docker Hub上以Anibali/Pytorch的名義獲得。
例如,您可以使用Pytorch 2.0.1和CUDA 11.8使用:
$ docker pull anibali/pytorch:2.0.1-cuda11.8可以使用python3命令在容器內運行Pytorch程序。例如,如果您在一個包含entrypoint main.py的Pytorch項目的目錄中,則可以使用以下命令運行:
docker run --rm -it --init
--gpus=all
--ipc=host
--user= " $( id -u ) : $( id -g ) "
--volume= " $PWD :/app "
anibali/pytorch python3 main.py這是上面顯示的Docker命令行選項的描述:
--gpus=all :如果使用CUDA,則需要可選。將圖形卡從主機傳遞到容器。您還可以更精確地控制使用此選項暴露了哪些圖形卡(請參閱https://github.com/nvidia/nvidia-docker的文檔)。--ipc=host :需要使用多處理,如https://github.com/pytorch/pytorch#docker-image所述。--user="$(id -u):$(id -g)" :將用戶設置在容器內,以匹配您的用戶和組ID。可選,但對於編寫具有正確所有權的文件很有用。--volume="$PWD:/app" :將當前的工作目錄安裝到容器中。容器中的默認工作目錄IS /app 。選修的。如果您在Linux主機上運行,則可以在Docker容器內部運行代碼,以使用主機X服務器顯示圖形(例如,您可以使用OpenCV的IMShow)。在這裡,我們描述了一種快速(但不安全的)方式。有關GUIS和Docker的更全面的指南,請查看http://wiki.ros.org/docker/tutorials/gui。
在主機運行中:
sudo xhost +local:root您可以稍後使用sudo xhost -local:root撤銷這些訪問權限。現在,當您運行一個容器時,請確保添加選項-e "DISPLAY"和--volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" 。這將為容器提供您的X11插座,以進行通信和顯示ID。這是一個例子:
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() "向圖像添加其他依賴關係的推薦方法是,使用該項目的Pytorch圖像之一創建自己的Dockerfile。
例如,假設您需要OpenCV並希望與Pytorch 2.0.1合作。您可以使用anibali/pytorch:2.0.1-cuda11.8-ubuntu22.04作為基本圖像,並使用其他構建步驟安裝OpenCV:
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.48dockerfiles/ Directory中的Dockerfiles是由manager.py腳本自動生成images.yml templates/
這是一個示例工作流,說明瞭如何創建新的Dockerfile。
templates/如果所有現有模板都不合適。images.yml中創建一個新條目(有關示例,請參見現有條目)。python manager.py來生成Dockerfile。將在dockerfiles/中創建一個包含Dockerfile的新目錄。