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

בנה ממקור

בנה חבילת TensorFlow pip מהמקור והתקן אותה על אובונטו לינוקס ו-macOS. למרות שההוראות עשויות לעבוד עבור מערכות אחרות, הן נבדקות ונתמכות רק עבור אובונטו ו-macOS.

הגדרה עבור לינוקס ו-macOS

התקן את כלי הבנייה הבאים כדי להגדיר את סביבת הפיתוח שלך.

התקן את Python ואת התלות בחבילת TensorFlow

אובונטו

sudo apt install python3-dev python3-pip

macOS

דורש 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

התקן את התלות בחבילת TensorFlow pip (אם אתה משתמש בסביבה וירטואלית, השמט את הארגומנט --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

ברירת המחדל של ה-repo הוא ענף הפיתוח master . אתה יכול גם לבדוק סניף שחרור כדי לבנות:

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

הגדר את ה-build

הגדר את בניית המערכת שלך על ידי הפעלת ה-./configure בשורש עץ המקור של ./configure שלך. סקריפט זה מבקש ממך את מיקום התלות של TensorFlow ומבקש אפשרויות תצורת בנייה נוספות (דגלים מהדר, למשל).

./configure

אם משתמשים בסביבה וירטואלית, python configure.py נותן עדיפות לנתיבים בתוך הסביבה, בעוד ש-./ ./configure עדיפות לנתיבים מחוץ לסביבה. בשני המקרים ניתן לשנות את ברירת המחדל.

מפגש לדוגמא

להלן מופע דוגמה של ./configure script (ההפעלה שלך עשויה להיות שונה):

אפשרויות תצורה

תמיכה ב-GPU

לתמיכה ב-GPU , הגדר cuda 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 —בנה את TensorFlow 1.x במקום 2.x.

בנה את חבילת ה-pip

TensorFlow 2.x

התקן את Bazel והשתמש ב- bazel build כדי ליצור את חבילת TensorFlow 2.x עם תמיכה במעבד בלבד :

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

תמיכה ב-GPU

כדי לבנות בונה חבילות 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 ממקור יכולה להשתמש בהרבה זיכרון RAM. אם המערכת שלך מוגבלת בזיכרון, הגבל את השימוש ב-RAM של 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 יוצרת קובץ הפעלה בשם build_pip_package - זו התוכנית שבונה את חבילת pip . הפעל את קובץ ההפעלה כפי שמוצג להלן כדי לבנות חבילת .whl /tmp/tensorflow_pkg .

כדי לבנות מענף שחרור:

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

כדי לבנות מאסטר, השתמש --nightly_flag כדי לקבל את התלות הנכונות:

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

למרות שניתן לבנות גם תצורות CUDA וגם תצורות שאינן CUDA תחת אותו עץ מקור, מומלץ להפעיל את bazel clean בעת מעבר בין שתי התצורות הללו באותו עץ מקור.

התקן את החבילה

שם הקובץ של קובץ ה- .whl שנוצר תלוי בגרסת TensorFlow ובפלטפורמה שלך. השתמש ב- pip install כדי להתקין את החבילה, לדוגמה:

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

בונה Docker Linux

תמונות פיתוח Docker של TensorFlow הן דרך קלה להגדיר סביבה לבניית חבילות לינוקס מהמקור. תמונות אלו כבר מכילות את קוד המקור והתלות הנדרשים לבניית TensorFlow. עבור למדריך TensorFlow Docker לקבלת הוראות התקנה ורשימת תגי התמונה הזמינים .

מעבד בלבד

הדוגמה הבאה משתמשת בתמונה :devel כדי לבנות חבילה למעבד בלבד מקוד המקור העדכני ביותר של TensorFlow. עיין במדריך Docker עבור תגיות -devel -devel זמינות.

הורד את תמונת הפיתוח העדכנית והתחל קונטיינר Docker שבו תשתמש לבניית חבילת ה- pip :

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 לעיל מתחילה מעטפת /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. הגדר את ה-build - זה מבקש מהמשתמש לענות על שאלות תצורת build.
  2. בנה את הכלי המשמש ליצירת חבילת ה- pip .
  3. הפעל את הכלי כדי ליצור את חבילת ה- pip .
  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__)"

במחשב המארח שלך, חבילת TensorFlow pip נמצאת בספרייה הנוכחית (עם הרשאות משתמש מארח): ./tensorflow- version - tags .whl

תמיכה ב-GPU

Docker היא הדרך הקלה ביותר לבנות תמיכה ב-GPU עבור TensorFlow מכיוון שהמכונה המארח דורשת רק את מנהל ההתקן של NVIDIA® (אין צורך להתקין את ערכת הכלים של NVIDIA® CUDA® ). עיין במדריך התמיכה ב-GPU ובמדריך TensorFlow Docker להגדרת nvidia-docer (לינוקס בלבד).

הדוגמה הבאה מורידה את תמונת TensorFlow :devel-gpu ומשתמשת ב- nvidia-docker כדי להפעיל את המיכל התומך ב-GPU. תמונת פיתוח זו מוגדרת לבנות חבילת pip עם תמיכה ב-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')))"

תצורות בנייה נבדקו

לינוקס

מעבד

גִרְסָה גרסת פייתון מַהְדֵר בניית כלים
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 בזל 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 בזל 0.27.1
tensorflow-2.0.0 2.7, 3.3-3.7 GCC 7.3.1 בזל 0.26.1
tensorflow-1.15.0 2.7, 3.3-3.7 GCC 7.3.1 בזל 0.26.1
tensorflow-1.14.0 2.7, 3.3-3.7 GCC 4.8 בזל 0.24.1
tensorflow-1.13.1 2.7, 3.3-3.7 GCC 4.8 בזל 0.19.2
tensorflow-1.12.0 2.7, 3.3-3.6 GCC 4.8 בזל 0.15.0
tensorflow-1.11.0 2.7, 3.3-3.6 GCC 4.8 בזל 0.15.0
tensorflow-1.10.0 2.7, 3.3-3.6 GCC 4.8 בזל 0.15.0
tensorflow-1.9.0 2.7, 3.3-3.6 GCC 4.8 בזל 0.11.0
tensorflow-1.8.0 2.7, 3.3-3.6 GCC 4.8 בזל 0.10.0
tensorflow-1.7.0 2.7, 3.3-3.6 GCC 4.8 בזל 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 בזל 0.5.4
tensorflow-1.3.0 2.7, 3.3-3.6 GCC 4.8 בזל 0.4.5
tensorflow-1.2.0 2.7, 3.3-3.6 GCC 4.8 בזל 0.4.5
tensorflow-1.1.0 2.7, 3.3-3.6 GCC 4.8 בזל 0.4.2
tensorflow-1.0.0 2.7, 3.3-3.6 GCC 4.8 בזל 0.4.2

GPU

גִרְסָה גרסת פייתון מַהְדֵר בניית כלים 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 בזל 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 בזל 0.27.1 7.6 10.1
tensorflow-2.0.0 2.7, 3.3-3.7 GCC 7.3.1 בזל 0.26.1 7.4 10.0
tensorflow_gpu-1.15.0 2.7, 3.3-3.7 GCC 7.3.1 בזל 0.26.1 7.4 10.0
tensorflow_gpu-1.14.0 2.7, 3.3-3.7 GCC 4.8 בזל 0.24.1 7.4 10.0
tensorflow_gpu-1.13.1 2.7, 3.3-3.7 GCC 4.8 בזל 0.19.2 7.4 10.0
tensorflow_gpu-1.12.0 2.7, 3.3-3.6 GCC 4.8 בזל 0.15.0 7 9
tensorflow_gpu-1.11.0 2.7, 3.3-3.6 GCC 4.8 בזל 0.15.0 7 9
tensorflow_gpu-1.10.0 2.7, 3.3-3.6 GCC 4.8 בזל 0.15.0 7 9
tensorflow_gpu-1.9.0 2.7, 3.3-3.6 GCC 4.8 בזל 0.11.0 7 9
tensorflow_gpu-1.8.0 2.7, 3.3-3.6 GCC 4.8 בזל 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 בזל 0.5.4 6 8
tensorflow_gpu-1.3.0 2.7, 3.3-3.6 GCC 4.8 בזל 0.4.5 6 8
tensorflow_gpu-1.2.0 2.7, 3.3-3.6 GCC 4.8 בזל 0.4.5 5.1 8
tensorflow_gpu-1.1.0 2.7, 3.3-3.6 GCC 4.8 בזל 0.4.2 5.1 8
tensorflow_gpu-1.0.0 2.7, 3.3-3.6 GCC 4.8 בזל 0.4.2 5.1 8

macOS

מעבד

גִרְסָה גרסת פייתון מַהְדֵר בניית כלים
tensorflow-2.9.0 3.7-3.10 קלאנג מ-xcode 10.14 Bazel 5.0.0
tensorflow-2.8.0 3.7-3.10 Clang מ-xcode 10.14 בזל 4.2.1
tensorflow-2.7.0 3.7-3.9 Clang מ-xcode 10.11 בזל 3.7.2
tensorflow-2.6.0 3.6-3.9 Clang מ-xcode 10.11 בזל 3.7.2
tensorflow-2.5.0 3.6-3.9 Clang מ-xcode 10.11 בזל 3.7.2
tensorflow-2.4.0 3.6-3.8 Clang מ-xcode 10.3 Bazel 3.1.0
tensorflow-2.3.0 3.5-3.8 Clang מ-xcode 10.1 Bazel 3.1.0
tensorflow-2.2.0 3.5-3.8 Clang מ-xcode 10.1 Bazel 2.0.0
tensorflow-2.1.0 2.7, 3.5-3.7 Clang מ-xcode 10.1 בזל 0.27.1
tensorflow-2.0.0 2.7, 3.5-3.7 Clang מ-xcode 10.1 בזל 0.27.1
tensorflow-2.0.0 2.7, 3.3-3.7 Clang מ-xcode 10.1 בזל 0.26.1
tensorflow-1.15.0 2.7, 3.3-3.7 Clang מ-xcode 10.1 בזל 0.26.1
tensorflow-1.14.0 2.7, 3.3-3.7 צלצל מ-xcode בזל 0.24.1
tensorflow-1.13.1 2.7, 3.3-3.7 צלצל מ-xcode בזל 0.19.2
tensorflow-1.12.0 2.7, 3.3-3.6 צלצל מ-xcode בזל 0.15.0
tensorflow-1.11.0 2.7, 3.3-3.6 צלצל מ-xcode בזל 0.15.0
tensorflow-1.10.0 2.7, 3.3-3.6 צלצל מ-xcode בזל 0.15.0
tensorflow-1.9.0 2.7, 3.3-3.6 צלצל מ-xcode בזל 0.11.0
tensorflow-1.8.0 2.7, 3.3-3.6 צלצל מ-xcode בזל 0.10.1
tensorflow-1.7.0 2.7, 3.3-3.6 צלצל מ-xcode בזל 0.10.1
tensorflow-1.6.0 2.7, 3.3-3.6 צלצל מ-xcode בזל 0.8.1
tensorflow-1.5.0 2.7, 3.3-3.6 צלצל מ-xcode בזל 0.8.1
tensorflow-1.4.0 2.7, 3.3-3.6 צלצל מ-xcode בזל 0.5.4
tensorflow-1.3.0 2.7, 3.3-3.6 צלצל מ-xcode בזל 0.4.5
tensorflow-1.2.0 2.7, 3.3-3.6 צלצל מ-xcode בזל 0.4.5
tensorflow-1.1.0 2.7, 3.3-3.6 צלצל מ-xcode בזל 0.4.2
tensorflow-1.0.0 2.7, 3.3-3.6 צלצל מ-xcode בזל 0.4.2

GPU

גִרְסָה גרסת פייתון מַהְדֵר בניית כלים cuDNN CUDA
tensorflow_gpu-1.1.0 2.7, 3.3-3.6 צלצל מ-xcode בזל 0.4.2 5.1 8
tensorflow_gpu-1.0.0 2.7, 3.3-3.6 צלצל מ-xcode בזל 0.4.2 5.1 8