داکر

داکر از کانتینرهایی برای ایجاد محیط های مجازی استفاده می کند که نصب TensorFlow را از بقیه سیستم جدا می کند. برنامه های TensorFlow در این محیط مجازی اجرا می شوند که می توانند منابع را با دستگاه میزبان خود به اشتراک بگذارند (دسترسی به دایرکتوری ها، استفاده از GPU، اتصال به اینترنت و غیره). تصاویر TensorFlow Docker برای هر نسخه آزمایش می شوند.

Docker ساده ترین راه برای فعال کردن پشتیبانی از GPU TensorFlow در لینوکس است زیرا فقط درایور کارت گرافیک NVIDIA® در دستگاه میزبان مورد نیاز است (نیازی به نصب NVIDIA® CUDA® Toolkit نیست).

الزامات TensorFlow Docker

  1. Docker را روی دستگاه میزبان محلی خود نصب کنید.
  2. برای پشتیبانی از GPU در لینوکس، پشتیبانی NVIDIA Docker را نصب کنید .
    • به نسخه Docker خود با docker -v توجه داشته باشید. نسخه های قبل از 19.03 به nvidia-docker2 و پرچم --runtime=nvidia نیاز دارند. در نسخه هایی از جمله و بعد از 19.03، از بسته nvidia-container-toolkit و پرچم --gpus all استفاده خواهید کرد. هر دو گزینه در صفحه پیوند داده شده در بالا مستند شده اند.

یک تصویر 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