داکر از کانتینرهایی برای ایجاد محیط های مجازی استفاده می کند که نصب TensorFlow را از بقیه سیستم جدا می کند. برنامه های TensorFlow در این محیط مجازی اجرا می شوند که می توانند منابع را با دستگاه میزبان خود به اشتراک بگذارند (دسترسی به دایرکتوری ها، استفاده از GPU، اتصال به اینترنت و غیره). تصاویر TensorFlow Docker برای هر نسخه آزمایش می شوند.
Docker ساده ترین راه برای فعال کردن پشتیبانی از GPU TensorFlow در لینوکس است زیرا فقط درایور کارت گرافیک NVIDIA® در دستگاه میزبان مورد نیاز است (نیازی به نصب NVIDIA® CUDA® Toolkit نیست).
الزامات TensorFlow Docker
- Docker را روی دستگاه میزبان محلی خود نصب کنید.
- برای پشتیبانی از GPU در لینوکس، پشتیبانی NVIDIA Docker را نصب کنید .
- به نسخه Docker خود با
docker -v
توجه داشته باشید. نسخه های قبل از 19.03 به nvidia-docker2 و پرچم--runtime=nvidia
نیاز دارند. در نسخه هایی از جمله و بعد از 19.03، از بستهnvidia-container-toolkit
و پرچم--gpus all
استفاده خواهید کرد. هر دو گزینه در صفحه پیوند داده شده در بالا مستند شده اند.
- به نسخه Docker خود با
یک تصویر TensorFlow Docker را دانلود کنید
تصاویر رسمی TensorFlow Docker در مخزن تنسورفلو/تنسورفلو داکر هاب قرار دارند. تصاویر منتشر شده با استفاده از فرمت زیر برچسب گذاری می شوند :
برچسب بزنید | توضیحات |
---|---|
latest | آخرین انتشار تصویر باینری CPU TensorFlow. پیش فرض |
nightly | ساخت شبانه تصویر TensorFlow. (ناپایدار.) |
version | نسخه تصویر باینری TensorFlow را مشخص کنید، به عنوان مثال: 2.8.3 |
هر تگ پایه دارای انواعی است که عملکرد را اضافه یا تغییر می دهد:
انواع برچسب | توضیحات |
---|---|
tag -gpu | انتشار برچسب مشخص شده با پشتیبانی از GPU. ( زیر را ببینید ) |
tag -jupyter | انتشار برچسب مشخص شده با Jupyter (شامل نوت بوک های آموزشی TensorFlow) |
شما می توانید چندین نوع را به طور همزمان استفاده کنید. به عنوان مثال، موارد زیر تصاویر منتشر شده TensorFlow را در دستگاه شما دانلود می کنند:
docker pull tensorflow/tensorflow # latest stable release
docker pull tensorflow/tensorflow:devel-gpu # nightly dev release w/ GPU support
docker pull tensorflow/tensorflow:latest-gpu-jupyter # latest release w/ GPU support and Jupyter
یک ظرف TensorFlow Docker راه اندازی کنید
برای راه اندازی یک کانتینر با پیکربندی TensorFlow، از فرم دستور زیر استفاده کنید:
docker run [-it] [--rm] [-p hostPort:containerPort] tensorflow/tensorflow[:tag] [command]
برای جزئیات، به مرجع اجرای docker مراجعه کنید.
نمونه هایی با استفاده از تصاویر فقط CPU
بیایید نصب TensorFlow را با استفاده از latest
تصویر برچسبگذاری شده تأیید کنیم. Docker یک تصویر TensorFlow جدید را در اولین باری که اجرا میکند دانلود میکند:
docker run -it --rm tensorflow/tensorflow \ python -c "import tensorflow as tf; print(tf.reduce_sum(tf.random.normal([1000, 1000])))"
بیایید چند دستور العمل دیگر TensorFlow Docker را نشان دهیم. یک جلسه پوسته bash
را در یک ظرف پیکربندی شده با TensorFlow شروع کنید:
docker run -it tensorflow/tensorflow bash
در داخل کانتینر، میتوانید یک جلسه python
را شروع کنید و TensorFlow را وارد کنید.
برای اجرای یک برنامه TensorFlow که بر روی ماشین میزبان در داخل یک کانتینر توسعه یافته است، دایرکتوری میزبان را سوار کنید و دایرکتوری کاری کانتینر را تغییر دهید ( -v hostDir:containerDir -w workDir
):
docker run -it --rm -v $PWD:/tmp -w /tmp tensorflow/tensorflow python ./script.py
هنگامی که فایلهای ایجاد شده در یک کانتینر در معرض میزبان قرار میگیرند، مشکلات مجوز ممکن است ایجاد شود. معمولاً بهتر است فایل ها را در سیستم میزبان ویرایش کنید.
یک سرور نوت بوک Jupyter را با استفاده از ساخت شبانه TensorFlow راه اندازی کنید:
docker run -it -p 8888:8888 tensorflow/tensorflow:nightly-jupyter
دستورالعمل ها را دنبال کنید و URL را در مرورگر وب میزبان خود باز کنید: http://127.0.0.1:8888/?token=...
پشتیبانی از پردازنده گرافیکی
Docker سادهترین راه برای اجرای TensorFlow بر روی یک GPU است زیرا دستگاه میزبان فقط به درایور NVIDIA® نیاز دارد (به NVIDIA® CUDA® Toolkit نیازی نیست).
Nvidia Container Toolkit را نصب کنید تا پشتیبانی NVIDIA® GPU را به Docker اضافه کنید. nvidia-container-runtime
فقط برای لینوکس در دسترس است. برای جزئیات بیشتر به پرسشهای متداول پشتیبانی از پلتفرم nvidia-container-runtime
مراجعه کنید.
بررسی کنید که آیا یک GPU در دسترس است:
lspci | grep -i nvidia
نصب nvidia-docker
خود را تأیید کنید:
docker run --gpus all --rm nvidia/cuda nvidia-smi
نمونه هایی با استفاده از تصاویر مجهز به GPU
یک تصویر TensorFlow دارای GPU را دانلود و اجرا کنید (ممکن است چند دقیقه طول بکشد):
docker run --gpus all -it --rm tensorflow/tensorflow:latest-gpu \ python -c "import tensorflow as tf; print(tf.reduce_sum(tf.random.normal([1000, 1000])))"
تنظیم تصویر دارای GPU ممکن است کمی طول بکشد. اگر مکرراً اسکریپتهای مبتنی بر GPU اجرا میشوند، میتوانید از docker exec
برای استفاده مجدد از یک کانتینر استفاده کنید.
از آخرین تصویر GPU TensorFlow برای شروع یک جلسه bash
shell در کانتینر استفاده کنید:
docker run --gpus all -it tensorflow/tensorflow:latest-gpu bash