Google I/O is a wrap! Catch up on TensorFlow sessions View sessions

ساخت از منبع

یک بسته Pip TensorFlow از منبع بسازید و آن را روی لینوکس اوبونتو و macOS نصب کنید. در حالی که دستورالعمل ها ممکن است برای سیستم های دیگر کار کنند، فقط برای اوبونتو و macOS آزمایش و پشتیبانی می شود.

راه اندازی برای لینوکس و macOS

ابزارهای ساخت زیر را برای پیکربندی محیط توسعه خود نصب کنید.

وابستگی های بسته Python و TensorFlow را نصب کنید

اوبونتو

sudo apt install python3-dev python3-pip

سیستم عامل مکینتاش

به Xcode 9.2 یا بالاتر نیاز دارد.

با استفاده از مدیر بسته Homebrew نصب کنید:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
# if you are on macOS 10.12 (Sierra) use export PATH="/usr/local/bin:/usr/local/sbin:$PATH"
brew install python

وابستگی های بسته Pip TensorFlow را نصب کنید (اگر از یک محیط مجازی استفاده می کنید، آرگومان --user را حذف کنید):

pip install -U --user pip numpy wheel packaging
pip install -U --user keras_preprocessing --no-deps

Bazel را نصب کنید

برای ساخت TensorFlow، باید Bazel را نصب کنید. Bazelisk یک راه آسان برای نصب Bazel است و به طور خودکار نسخه صحیح Bazel را برای TensorFlow دانلود می کند. برای سهولت استفاده، Bazelisk را به عنوان bazel قابل اجرا در PATH خود اضافه کنید.

اگر Bazelisk در دسترس نیست، می توانید Bazel را به صورت دستی نصب کنید . مطمئن شوید که یک نسخه Bazel پشتیبانی شده را نصب کنید: هر نسخه بین _TF_MIN_BAZEL_VERSION و _TF_MAX_BAZEL_VERSION همانطور که در tensorflow/configure.py مشخص شده است.

نصب پشتیبانی از GPU (اختیاری، فقط لینوکس)

هیچ پشتیبانی GPU برای macOS وجود ندارد.

راهنمای پشتیبانی GPU را برای نصب درایورها و نرم افزارهای اضافی مورد نیاز برای اجرای TensorFlow بر روی GPU بخوانید.

کد منبع TensorFlow را دانلود کنید

از Git برای کلون کردن مخزن TensorFlow استفاده کنید:

git clone https://github.com/tensorflow/tensorflow.git
cd tensorflow

مخزن به طور پیش فرض به شاخه توسعه master است. شما همچنین می توانید یک شعبه انتشار را برای ساخت بررسی کنید:

git checkout branch_name  # r2.2, r2.3, etc.

ساخت را پیکربندی کنید

با اجرای ./configure در ریشه درخت منبع TensorFlow، ساخت سیستم خود را پیکربندی کنید. این اسکریپت مکان وابستگی‌های TensorFlow را از شما می‌خواهد و گزینه‌های پیکربندی ساخت اضافی (برای مثال پرچم‌های کامپایلر) را می‌خواهد.

./configure

در صورت استفاده از یک محیط مجازی، python configure.py مسیرهای داخل محیط را اولویت بندی می کند، در حالی که ./configure مسیرهای خارج از محیط را اولویت بندی می کند. در هر دو مورد می توانید پیش فرض را تغییر دهید.

جلسه نمونه

شکل زیر یک نمونه اجرا از اسکریپت ./configure را نشان می دهد (ممکن است جلسه شما متفاوت باشد):

گزینه های پیکربندی

پشتیبانی از پردازنده گرافیکی

برای پشتیبانی از GPU ، cuda=Y را در طول پیکربندی تنظیم کنید و نسخه‌های CUDA و cuDNN را مشخص کنید. اگر سیستم شما چندین نسخه از CUDA یا cuDNN را نصب کرده است، به جای تکیه بر پیش فرض، صریحاً نسخه را تنظیم کنید. ./configure پیوندهای نمادین به کتابخانه های CUDA سیستم شما ایجاد می کند—بنابراین اگر مسیرهای کتابخانه CUDA خود را به روز کنید، این مرحله پیکربندی باید قبل از ساخت دوباره اجرا شود.

بهینه سازی ها

برای پرچم‌های بهینه‌سازی کامپایل، پیش‌فرض ( -march=native ) کد تولید شده را برای نوع CPU دستگاه شما بهینه می‌کند. با این حال، اگر TensorFlow را برای یک نوع CPU متفاوت می‌سازید، یک پرچم بهینه‌سازی خاص‌تر را در نظر بگیرید. برای مثال، راهنمای GCC را بررسی کنید.

تنظیمات از پیش تنظیم شده

برخی از پیکربندی های ساخت از پیش تنظیم شده در دسترس هستند که می توانند به دستور bazel build اضافه شوند، به عنوان مثال:

  • --config=dbg ساخت با اطلاعات اشکال زدایی. برای جزئیات بیشتر به CONTRIBUTING.md مراجعه کنید.
  • --config=mkl —پشتیبانی از Intel® MKL-DNN .
  • --config=monolithic برای یک ساخت عمدتا ثابت و یکپارچه.
  • --config=v1 به جای 2.x، TensorFlow 1.x را بسازید.

بسته پیپ را بسازید

TensorFlow 2.x

Bazel را نصب کنید و از bazel build برای ایجاد بسته TensorFlow 2.x با پشتیبانی فقط از CPU استفاده کنید:

bazel build [--config=option] //tensorflow/tools/pip_package:build_pip_package

پشتیبانی از پردازنده گرافیکی

برای ساخت بسته ساز TensorFlow با پشتیبانی GPU:

bazel build --config=cuda [--config=option] //tensorflow/tools/pip_package:build_pip_package

TensorFlow 1.x

برای ساختن یک بسته قدیمی تر TensorFlow 1.x، از گزینه --config=v1 استفاده کنید:

bazel build --config=v1 [--config=option] //tensorflow/tools/pip_package:build_pip_package

گزینه های ساخت Bazel

برای گزینه های ساخت به مرجع خط فرمان Bazel مراجعه کنید.

ساخت TensorFlow از منبع می تواند از مقدار زیادی رم استفاده کند. اگر سیستم شما دارای محدودیت حافظه است، استفاده از رم Bazel را با استفاده از: --local_ram_resources=2048 محدود کنید.

بسته‌های رسمی TensorFlow با یک زنجیره ابزار GCC 7.3 ساخته شده‌اند که با استاندارد بسته manylinux2010 مطابقت دارد.

برای GCC 5 و جدیدتر، سازگاری با ABI قدیمی‌تر را می‌توان با استفاده از: --cxxopt="-D_GLIBCXX_USE_CXX11_ABI=0" ایجاد کرد. سازگاری ABI تضمین می کند که عملیات سفارشی ساخته شده در برابر بسته رسمی TensorFlow همچنان با بسته ساخته شده GCC 5 کار می کند.

بسته را بسازید

دستور bazel build bazel یک فایل اجرایی به نام build_pip_package ایجاد می کند — این برنامه ای است که بسته pip را می سازد. فایل اجرایی را مطابق شکل زیر اجرا کنید تا یک بسته whl. در پوشه /tmp/tensorflow_pkg .whl

برای ساخت از شاخه انتشار:

./bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg

برای ساختن از master، از --nightly_flag استفاده کنید تا وابستگی های مناسب را بدست آورید:

./bazel-bin/tensorflow/tools/pip_package/build_pip_package --nightly_flag /tmp/tensorflow_pkg

اگرچه امکان ساخت هر دو پیکربندی CUDA و غیر CUDA در زیر درخت منبع یکسان وجود دارد، توصیه می‌شود هنگام جابجایی بین این دو پیکربندی در درخت منبع یکسان، bazel clean کنید.

بسته را نصب کنید

نام فایل فایل whl. تولید شده به نسخه .whl و پلتفرم شما بستگی دارد. برای نصب بسته از pip install استفاده کنید، به عنوان مثال:

pip install /tmp/tensorflow_pkg/tensorflow-version-tags.whl

Docker Linux builds

تصاویر توسعه Docker TensorFlow راهی آسان برای راه‌اندازی محیطی برای ساخت بسته‌های لینوکس از منبع است. این تصاویر قبلاً حاوی کد منبع و وابستگی های مورد نیاز برای ساخت TensorFlow هستند. برای دستورالعمل‌های نصب و فهرست برچسب‌های تصویر موجود ، به راهنمای TensorFlow Docker بروید.

فقط CPU

مثال زیر از تصویر :devel برای ساخت یک بسته فقط CPU از آخرین کد منبع TensorFlow استفاده می کند. راهنمای Docker را برای تگ های -devel موجود بررسی کنید.

آخرین تصویر توسعه را دانلود کنید و یک ظرف Docker را راه اندازی کنید که از آن برای ساخت بسته پیپ استفاده خواهید کرد:

docker pull tensorflow/tensorflow:devel
docker run -it -w /tensorflow_src -v $PWD:/mnt -e HOST_PERMS="$(id -u):$(id -g)" \
    tensorflow/tensorflow:devel bash

git pull  # within the container, download the latest source code

دستور docker run docker بالا یک پوسته را در پوشه /tensorflow_src ریشه درخت منبع راه‌اندازی می‌کند. دایرکتوری فعلی میزبان را در پوشه /mnt کانتینر نصب می‌کند و اطلاعات کاربر میزبان را از طریق یک متغیر محیطی به کانتینر ارسال می‌کند (برای تنظیم مجوزها استفاده می‌شود - Docker می‌تواند این کار را دشوار کند).

از طرف دیگر، برای ساختن یک کپی میزبان از TensorFlow در یک ظرف، درخت منبع میزبان را در پوشه /tensorflow کانتینر سوار کنید:

docker run -it -w /tensorflow -v /path/to/tensorflow:/tensorflow -v $PWD:/mnt \
    -e HOST_PERMS="\\((id -u):\\)(id -g)" tensorflow/tensorflow:devel bash

با تنظیم درخت منبع، بسته TensorFlow را در محیط مجازی کانتینر بسازید:

  1. پیکربندی ساخت - این امر از کاربر می خواهد به سؤالات پیکربندی ساخت پاسخ دهد.
  2. ابزار مورد استفاده برای ایجاد بسته پیپ را بسازید.
  3. ابزار را برای ایجاد بسته پیپ اجرا کنید.
  4. مجوزهای مالکیت فایل را برای خارج از کانتینر تنظیم کنید.
./configure  # answer prompts or use defaults

bazel build --config=opt //tensorflow/tools/pip_package:build_pip_package

./bazel-bin/tensorflow/tools/pip_package/build_pip_package /mnt  # create package

chown $HOST_PERMS /mnt/tensorflow-version-tags.whl

بسته را در کانتینر نصب و تأیید کنید:

pip uninstall tensorflow  # remove current version

pip install /mnt/tensorflow-version-tags.whl
cd /tmp  # don't import from source directory
python -c "import tensorflow as tf; print(tf.__version__)"

در دستگاه میزبان شما، بسته Pip TensorFlow در دایرکتوری فعلی است (با مجوزهای کاربر میزبان): ./tensorflow- version - tags .whl

پشتیبانی از پردازنده گرافیکی

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

مثال زیر تصویر TensorFlow :devel-gpu را دانلود می کند و از nvidia-docker برای اجرای کانتینر مجهز به GPU استفاده می کند. این تصویر توسعه برای ساخت یک بسته پیپ با پشتیبانی GPU پیکربندی شده است:

docker pull tensorflow/tensorflow:devel-gpu
docker run --gpus all -it -w /tensorflow -v $PWD:/mnt -e HOST_PERMS="$(id -u):$(id -g)" \
    tensorflow/tensorflow:devel-gpu bash
git pull  # within the container, download the latest source code

سپس، در محیط مجازی کانتینر، بسته TensorFlow را با پشتیبانی از GPU بسازید:

./configure  # answer prompts or use defaults

bazel build --config=opt --config=cuda //tensorflow/tools/pip_package:build_pip_package

./bazel-bin/tensorflow/tools/pip_package/build_pip_package /mnt  # create package

chown $HOST_PERMS /mnt/tensorflow-version-tags.whl

بسته را در کانتینر نصب و تأیید کنید و GPU را بررسی کنید:

pip uninstall tensorflow  # remove current version

pip install /mnt/tensorflow-version-tags.whl
cd /tmp  # don't import from source directory
python -c "import tensorflow as tf; print(\"Num GPUs Available: \", len(tf.config.list_physical_devices('GPU')))"

تنظیمات ساخت تست شده

لینوکس

CPU

نسخه نسخه پایتون کامپایلر ابزار بسازید
tensorflow-2.9.0 3.7-3.10 GCC 9.3.1 Bazel 5.0.0
tensorflow-2.8.0 3.7-3.10 GCC 7.3.1 Bazel 4.2.1
tensorflow-2.7.0 3.7-3.9 GCC 7.3.1 بازل 3.7.2
tensorflow-2.6.0 3.6-3.9 GCC 7.3.1 بازل 3.7.2
tensorflow-2.5.0 3.6-3.9 GCC 7.3.1 بازل 3.7.2
tensorflow-2.4.0 3.6-3.8 GCC 7.3.1 Bazel 3.1.0
tensorflow-2.3.0 3.5-3.8 GCC 7.3.1 Bazel 3.1.0
tensorflow-2.2.0 3.5-3.8 GCC 7.3.1 Bazel 2.0.0
tensorflow-2.1.0 2.7، 3.5-3.7 GCC 7.3.1 Bazel 0.27.1
tensorflow-2.0.0 2.7، 3.3-3.7 GCC 7.3.1 Bazel 0.26.1
tensorflow-1.15.0 2.7، 3.3-3.7 GCC 7.3.1 Bazel 0.26.1
tensorflow-1.14.0 2.7، 3.3-3.7 GCC 4.8 Bazel 0.24.1
tensorflow-1.13.1 2.7، 3.3-3.7 GCC 4.8 Bazel 0.19.2
tensorflow-1.12.0 2.7، 3.3-3.6 GCC 4.8 Bazel 0.15.0
tensorflow-1.11.0 2.7، 3.3-3.6 GCC 4.8 Bazel 0.15.0
tensorflow-1.10.0 2.7، 3.3-3.6 GCC 4.8 Bazel 0.15.0
tensorflow-1.9.0 2.7، 3.3-3.6 GCC 4.8 Bazel 0.11.0
tensorflow-1.8.0 2.7، 3.3-3.6 GCC 4.8 Bazel 0.10.0
tensorflow-1.7.0 2.7، 3.3-3.6 GCC 4.8 Bazel 0.10.0
tensorflow-1.6.0 2.7، 3.3-3.6 GCC 4.8 Bazel 0.9.0
tensorflow-1.5.0 2.7، 3.3-3.6 GCC 4.8 Bazel 0.8.0
tensorflow-1.4.0 2.7، 3.3-3.6 GCC 4.8 Bazel 0.5.4
tensorflow-1.3.0 2.7، 3.3-3.6 GCC 4.8 Bazel 0.4.5
tensorflow-1.2.0 2.7، 3.3-3.6 GCC 4.8 Bazel 0.4.5
tensorflow-1.1.0 2.7، 3.3-3.6 GCC 4.8 Bazel 0.4.2
tensorflow-1.0.0 2.7، 3.3-3.6 GCC 4.8 Bazel 0.4.2

پردازنده گرافیکی

نسخه نسخه پایتون کامپایلر ابزار بسازید cuDNN CUDA
tensorflow-2.9.0 3.7-3.10 GCC 9.3.1 Bazel 5.0.0 8.1 11.2
tensorflow-2.8.0 3.7-3.10 GCC 7.3.1 Bazel 4.2.1 8.1 11.2
tensorflow-2.7.0 3.7-3.9 GCC 7.3.1 بازل 3.7.2 8.1 11.2
tensorflow-2.6.0 3.6-3.9 GCC 7.3.1 بازل 3.7.2 8.1 11.2
tensorflow-2.5.0 3.6-3.9 GCC 7.3.1 بازل 3.7.2 8.1 11.2
tensorflow-2.4.0 3.6-3.8 GCC 7.3.1 Bazel 3.1.0 8.0 11.0
tensorflow-2.3.0 3.5-3.8 GCC 7.3.1 Bazel 3.1.0 7.6 10.1
tensorflow-2.2.0 3.5-3.8 GCC 7.3.1 Bazel 2.0.0 7.6 10.1
tensorflow-2.1.0 2.7، 3.5-3.7 GCC 7.3.1 Bazel 0.27.1 7.6 10.1
tensorflow-2.0.0 2.7، 3.3-3.7 GCC 7.3.1 Bazel 0.26.1 7.4 10.0
tensorflow_gpu-1.15.0 2.7، 3.3-3.7 GCC 7.3.1 Bazel 0.26.1 7.4 10.0
tensorflow_gpu-1.14.0 2.7، 3.3-3.7 GCC 4.8 Bazel 0.24.1 7.4 10.0
tensorflow_gpu-1.13.1 2.7، 3.3-3.7 GCC 4.8 Bazel 0.19.2 7.4 10.0
tensorflow_gpu-1.12.0 2.7، 3.3-3.6 GCC 4.8 Bazel 0.15.0 7 9
tensorflow_gpu-1.11.0 2.7، 3.3-3.6 GCC 4.8 Bazel 0.15.0 7 9
tensorflow_gpu-1.10.0 2.7، 3.3-3.6 GCC 4.8 Bazel 0.15.0 7 9
tensorflow_gpu-1.9.0 2.7، 3.3-3.6 GCC 4.8 Bazel 0.11.0 7 9
tensorflow_gpu-1.8.0 2.7، 3.3-3.6 GCC 4.8 Bazel 0.10.0 7 9
tensorflow_gpu-1.7.0 2.7، 3.3-3.6 GCC 4.8 Bazel 0.9.0 7 9
tensorflow_gpu-1.6.0 2.7، 3.3-3.6 GCC 4.8 Bazel 0.9.0 7 9
tensorflow_gpu-1.5.0 2.7، 3.3-3.6 GCC 4.8 Bazel 0.8.0 7 9
tensorflow_gpu-1.4.0 2.7، 3.3-3.6 GCC 4.8 Bazel 0.5.4 6 8
tensorflow_gpu-1.3.0 2.7، 3.3-3.6 GCC 4.8 Bazel 0.4.5 6 8
tensorflow_gpu-1.2.0 2.7، 3.3-3.6 GCC 4.8 Bazel 0.4.5 5.1 8
tensorflow_gpu-1.1.0 2.7، 3.3-3.6 GCC 4.8 Bazel 0.4.2 5.1 8
tensorflow_gpu-1.0.0 2.7، 3.3-3.6 GCC 4.8 Bazel 0.4.2 5.1 8

سیستم عامل مکینتاش

CPU

نسخه نسخه پایتون کامپایلر ابزار بسازید
tensorflow-2.9.0 3.7-3.10 صدای زنگ از xcode 10.14 Bazel 5.0.0
tensorflow-2.8.0 3.7-3.10 صدای زنگ از xcode 10.14 Bazel 4.2.1
tensorflow-2.7.0 3.7-3.9 صدای زنگ از xcode 10.11 بازل 3.7.2
tensorflow-2.6.0 3.6-3.9 صدای زنگ از xcode 10.11 بازل 3.7.2
tensorflow-2.5.0 3.6-3.9 صدای زنگ از xcode 10.11 بازل 3.7.2
tensorflow-2.4.0 3.6-3.8 صدای زنگ از xcode 10.3 Bazel 3.1.0
tensorflow-2.3.0 3.5-3.8 صدای زنگ از xcode 10.1 Bazel 3.1.0
tensorflow-2.2.0 3.5-3.8 صدای زنگ از xcode 10.1 Bazel 2.0.0
tensorflow-2.1.0 2.7، 3.5-3.7 صدای زنگ از xcode 10.1 Bazel 0.27.1
tensorflow-2.0.0 2.7، 3.5-3.7 صدای زنگ از xcode 10.1 Bazel 0.27.1
tensorflow-2.0.0 2.7، 3.3-3.7 صدای زنگ از xcode 10.1 Bazel 0.26.1
tensorflow-1.15.0 2.7، 3.3-3.7 صدای زنگ از xcode 10.1 Bazel 0.26.1
tensorflow-1.14.0 2.7، 3.3-3.7 صدای زنگ از xcode Bazel 0.24.1
tensorflow-1.13.1 2.7، 3.3-3.7 صدای زنگ از xcode Bazel 0.19.2
tensorflow-1.12.0 2.7، 3.3-3.6 صدای زنگ از xcode Bazel 0.15.0
tensorflow-1.11.0 2.7، 3.3-3.6 صدای زنگ از xcode Bazel 0.15.0
tensorflow-1.10.0 2.7، 3.3-3.6 صدای زنگ از xcode Bazel 0.15.0
tensorflow-1.9.0 2.7، 3.3-3.6 صدای زنگ از xcode Bazel 0.11.0
tensorflow-1.8.0 2.7، 3.3-3.6 صدای زنگ از xcode Bazel 0.10.1
tensorflow-1.7.0 2.7، 3.3-3.6 صدای زنگ از xcode Bazel 0.10.1
tensorflow-1.6.0 2.7، 3.3-3.6 صدای زنگ از xcode Bazel 0.8.1
tensorflow-1.5.0 2.7، 3.3-3.6 صدای زنگ از xcode Bazel 0.8.1
tensorflow-1.4.0 2.7، 3.3-3.6 صدای زنگ از xcode Bazel 0.5.4
tensorflow-1.3.0 2.7، 3.3-3.6 صدای زنگ از xcode Bazel 0.4.5
tensorflow-1.2.0 2.7، 3.3-3.6 صدای زنگ از xcode Bazel 0.4.5
tensorflow-1.1.0 2.7، 3.3-3.6 صدای زنگ از xcode Bazel 0.4.2
tensorflow-1.0.0 2.7، 3.3-3.6 صدای زنگ از xcode Bazel 0.4.2

پردازنده گرافیکی

نسخه نسخه پایتون کامپایلر ابزار بسازید cuDNN CUDA
tensorflow_gpu-1.1.0 2.7، 3.3-3.6 صدای زنگ از xcode Bazel 0.4.2 5.1 8
tensorflow_gpu-1.0.0 2.7، 3.3-3.6 صدای زنگ از xcode Bazel 0.4.2 5.1 8