Ubuntu + Pytorch + CUDA (اختياري)
من أجل استخدام هذه الصورة ، يجب أن يكون لديك محرك Docker مثبتًا. تتوفر تعليمات لإعداد محرك Docker على موقع Docker.
إذا كان لديك بطاقة رسومات NVIDIA المتوافقة مع CUDA ، فيمكنك استخدام إصدار تمكين CUDA من صورة Pytorch لتمكين تسريع الأجهزة. لقد اختبرت هذا فقط في Ubuntu Linux.
أولاً ، تأكد من تثبيت برامج تشغيل NVIDIA المناسبة. على Ubuntu ، لقد وجدت أن أسهل طريقة لضمان أن يكون لديك الإصدار المناسب من برامج التشغيل التي تم إعدادها عن طريق تثبيت إصدار من CUDA على الأقل على أنه جديد مثل الصورة التي تنوي استخدامها عبر صفحة تنزيل NVIDIA CUDA الرسمية. على سبيل المثال ، إذا كنت تنوي استخدام صورة cuda-10.1 ، فعليك إعداد CUDA 10.1 أو CUDA 10.2 أن لديك برامج تشغيل الرسومات الصحيحة.
ستحتاج أيضًا إلى تثبيت مجموعة أدوات حاوية NVIDIA لتمكين الوصول إلى جهاز GPU داخل حاويات Docker. يمكن العثور على هذا في Nvidia/Nvidia-Docker.
تتوفر الصور المسبقة على Docker Hub تحت اسم Anibali/Pytorch.
على سبيل المثال ، يمكنك سحب صورة باستخدام Pytorch 2.0.1 و CUDA 11.8 باستخدام:
$ docker pull anibali/pytorch:2.0.1-cuda11.8 من الممكن تشغيل برامج Pytorch داخل حاوية باستخدام أمر python3 . على سبيل المثال ، إذا كنت داخل دليل يحتوي على بعض مشروع Pytorch مع Entploint 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)" : تعيين المستخدم داخل الحاوية لمطابقة معرف المستخدم ومعرف المجموعة. اختياري ، ولكنه مفيد لكتابة الملفات مع الملكية الصحيحة.--volume="$PWD:/app" : يتصاعد دليل العمل الحالي في الحاوية. دليل العمل الافتراضي داخل الحاوية هو /app . خياري.إذا كنت تعمل على مضيف Linux ، فيمكنك تشغيل التعليمات البرمجية داخل حاوية Docker لعرض الرسومات باستخدام Server Host X (يتيح لك ذلك استخدام ImShow OpenCV ، على سبيل المثال). نحن هنا نصف طريقة سريعة ودائرية (ولكن غير آمنة) للقيام بذلك. للحصول على دليل أكثر شمولاً على واجهة المستخدم الرسومية و 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 الخاص بك للاتصال ومعرف العرض الخاص بك. هذا مثال:
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/ الدليل تلقائيًا بواسطة البرنامج النصي manager.py باستخدام التفاصيل في images.yml والقوالب في templates/ .
إليك مثال على سير العمل يوضح كيفية إنشاء Dockerfile جديد.
templates/ إذا لم يكن أي من القالب الموجود مناسبًا.images.yml .python manager.py . سيتم إنشاء دليل جديد يحتوي على Dockerfile في dockerfiles/ .