Ubuntu + Pytorch + Cuda (ไม่บังคับ)
ในการใช้ภาพนี้คุณต้องติดตั้งเครื่องยนต์ Docker คำแนะนำสำหรับการตั้งค่า Docker Engine มีอยู่ในเว็บไซต์ Docker
หากคุณมีการ์ดกราฟิก NVIDIA ที่เข้ากันได้กับ CUDA คุณสามารถใช้ภาพ Pytorch เวอร์ชัน CUDA เพื่อเปิดใช้งานการเร่งความเร็วฮาร์ดแวร์ ฉันได้ทดสอบสิ่งนี้ใน Ubuntu Linux เท่านั้น
ประการแรกให้แน่ใจว่าคุณติดตั้งไดรเวอร์ Nvidia ที่เหมาะสม ใน Ubuntu ฉันพบว่าวิธีที่ง่ายที่สุดในการทำให้มั่นใจว่าคุณมีรุ่นที่ถูกต้องของไดรเวอร์ที่ตั้งค่าคือการติดตั้ง Cuda เวอร์ชัน ใหม่อย่างน้อยเป็นภาพที่คุณตั้งใจจะใช้ ผ่านหน้าดาวน์โหลด Nvidia Cuda อย่างเป็นทางการ ตัวอย่างเช่นหากคุณตั้งใจจะใช้ภาพ cuda-10.1 การตั้งค่า CUDA 10.1 หรือ CUDA 10.2 ควรตรวจสอบให้แน่ใจว่าคุณมีไดรเวอร์กราฟิกที่ถูกต้อง
คุณจะต้องติดตั้งชุดเครื่องมือคอนเทนเนอร์ NVIDIA เพื่อเปิดใช้งานการเข้าถึงอุปกรณ์ GPU ภายในคอนเทนเนอร์ Docker สามารถพบได้ที่ Nvidia/Nvidia-Docker
รูปภาพ prebuilt มีอยู่ใน Docker Hub ภายใต้ชื่อ Anibali/Pytorch
ตัวอย่างเช่นคุณสามารถดึงภาพด้วย Pytorch 2.0.1 และ Cuda 11.8 โดยใช้:
$ docker pull anibali/pytorch:2.0.1-cuda11.8 เป็นไปได้ที่จะเรียกใช้โปรแกรม Pytorch ภายในคอนเทนเนอร์โดยใช้คำสั่ง python3 ตัวอย่างเช่นหากคุณอยู่ในไดเรกทอรีที่มีโครงการ pytorch บางส่วนด้วย entrypoint main.py คุณสามารถเรียกใช้ด้วยคำสั่งต่อไปนี้:
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" : ติดตั้งไดเรกทอรีการทำงานปัจจุบันลงในคอนเทนเนอร์ ไดเรกทอรีการทำงานเริ่มต้นภายในคอนเทนเนอร์คือ /app ไม่จำเป็น.หากคุณใช้งานบนโฮสต์ Linux คุณสามารถใช้รหัสที่ทำงานภายในคอนเทนเนอร์ Docker เพื่อแสดงกราฟิกโดยใช้เซิร์ฟเวอร์โฮสต์ X (ซึ่งจะช่วยให้คุณใช้ IMShow ของ OpenCV) ที่นี่เราอธิบายวิธีที่รวดเร็วและสกปรก (แต่ไม่ปลอดภัย) ในการทำสิ่งนี้ สำหรับคู่มือที่ครอบคลุมมากขึ้นเกี่ยวกับ 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() "วิธีที่แนะนำในการเพิ่มการพึ่งพาเพิ่มเติมให้กับรูปภาพคือการสร้าง Dockerfile ของคุณเองโดยใช้หนึ่งในภาพ pytorch จากโครงการนี้เป็นฐาน
ตัวอย่างเช่นสมมติว่าคุณต้องการ OpenCV และต้องการทำงานกับ Pytorch 2.0.1 คุณสามารถสร้าง DockerFile ของคุณเองโดยใช้ 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.48 DockerFiles ใน dockerfiles/ Directory จะถูกสร้างขึ้นโดยอัตโนมัติโดยสคริปต์ manager.py โดยใช้รายละเอียดใน images.yml และเทมเพลตใน templates/
นี่คือตัวอย่างเวิร์กโฟลว์ที่แสดงวิธีสร้าง DockerFile ใหม่
templates/ หากไม่มีไฟล์ที่มีอยู่ที่เหมาะสมimages.yml (ดูรายการที่มีอยู่สำหรับตัวอย่าง)python manager.py ไดเรกทอรีใหม่ที่มี DockerFile จะถูกสร้างขึ้นใน dockerfiles/