Google стремится продвигать расовую справедливость для черных сообществ. Смотри как.
Эта страница была переведа с помощью Cloud Translation API.
Switch to English

Сборка из источника

Соберите пип- пакет TensorFlow из исходного кода и установите его на Ubuntu Linux и macOS. Хотя инструкции могут работать для других систем, они протестированы и поддерживаются только для Ubuntu и macOS.

Настройка для Linux и macOS

Установите следующие инструменты сборки для настройки среды разработки.

Установите Python и зависимости пакета TensorFlow

Ubuntu

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

Установите зависимости пип- пакета --user (при использовании виртуальной среды пропустите аргумент --user ):

pip install -U --user pip six 'numpy<1.19.0' wheel setuptools mock 'future>=0.17.1'
pip install -U --user keras_applications --no-deps
pip install -U --user keras_preprocessing --no-deps

Установить Базель

Чтобы собрать TensorFlow, вам нужно установить Bazel. Bazelisk - это простой способ установки Bazel, который автоматически загружает правильную версию Bazel для TensorFlow. Для простоты использования добавьте Bazelisk в качестве исполняемого файла bazel в вашей PATH .

Если Bazelisk недоступен, вы можете установить Bazel вручную. Убедитесь, что установлена ​​поддерживаемая версия _TF_MIN_BAZEL_VERSION : любая версия между _TF_MIN_BAZEL_VERSION и _TF_MAX_BAZEL_VERSION как указано в tensorflow/configure.py .

Установить поддержку GPU (необязательно, только для Linux)

В MacOS нет поддержки графического процессора.

Прочитайте руководство по поддержке GPU, чтобы установить драйверы и дополнительное программное обеспечение, необходимое для запуска TensorFlow на GPU.

Загрузите исходный код TensorFlow

Используйте Git для клонирования репозитория TensorFlow :

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

Значения по умолчанию Репо на master ветви развития. Вы также можете проверить ветку релиза для сборки:

git checkout branch_name  # r1.9, r1.10, etc.

Настройте сборку

Сконфигурируйте сборку вашей системы, запустив ./configure в корне исходного дерева TensorFlow. Этот сценарий запрашивает расположение зависимостей TensorFlow и запрашивает дополнительные параметры конфигурации сборки (например, флаги компилятора).

./configure

Образец сеанса

Ниже приведен пример запуска сценария ./configure (ваш сеанс может отличаться):

Варианты конфигурации

Поддержка GPU

Для поддержки графического процессора установите cuda=Y во время настройки и укажите версии CUDA и cuDNN. Если в вашей системе установлено несколько версий CUDA или cuDNN, явно установите версию, а не полагайтесь на значение по умолчанию. ./configure создает символические ссылки на библиотеки CUDA вашей системы - поэтому, если вы обновите пути к своим библиотекам CUDA, этот шаг настройки необходимо выполнить еще раз перед сборкой.

Оптимизации

Для флагов оптимизации компиляции значение по умолчанию ( -march=native ) оптимизирует сгенерированный код для типа процессора вашей машины. Однако, если вы собираете TensorFlow для другого типа процессора, рассмотрите более конкретный флаг оптимизации. См. Руководство GCC для примеров.

Предварительно сконфигурированные конфигурации

Существует несколько предварительно настроенных конфигураций сборки, которые можно добавить в команду bazel build , например:

  • --config=mkl —Поддержка для Intel® MKL-DNN .
  • --config=monolithic конфигурация для в основном статической монолитной сборки.
  • --config=v1 построить TensorFlow 1.x вместо 2.x.

Построить пакет пипс

TensorFlow 2.x

tenorflow: мастер репо обновлен до версии 2.x по умолчанию. Установите bazel build и используйте bazel build для создания пакета bazel build .

bazel build //tensorflow/tools/pip_package:build_pip_package

TensorFlow 1.x

Чтобы собрать версию 1.x TensorFlow из master, используйте bazel build --config=v1 для создания пакета TensorFlow 1.x.

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

Процессор только

Используйте bazel для создания компоновщика пакетов bazel с поддержкой только CPU:

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

Поддержка GPU

Чтобы создать компоновщик пакетов TensorFlow с поддержкой GPU:

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

Варианты сборки Bazel

Обратитесь к справочнику по командной строке Bazel, чтобы узнать варианты сборки

Сборка TensorFlow из исходного кода может использовать много оперативной памяти. Если ваша система ограничена в памяти, ограничьте использование ОЗУ --local_ram_resources=2048 с помощью: --local_ram_resources=2048 .

Официальные пакеты TensorFlow построены с помощью набора инструментов GCC 7.3, который соответствует стандарту пакетов manylinux2010.

Для GCC 5 и более поздних --cxxopt="-D_GLIBCXX_USE_CXX11_ABI=0" совместимость со старым ABI можно создать с помощью: --cxxopt="-D_GLIBCXX_USE_CXX11_ABI=0" . Совместимость ABI гарантирует, что пользовательские операции, созданные на основе официального пакета TensorFlow, продолжат работать со встроенным пакетом GCC 5.

Постройте пакет

Команда bazel build создает исполняемый файл с именем build_pip_package - это программа, которая build_pip_package пакет pip . Запустите исполняемый файл , как показано ниже , чтобы построить .whl пакет в /tmp/tensorflow_pkg каталог.

Чтобы построить из ветки релиза:

./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 , рекомендуется запускать bazel clean при переключении между этими двумя конфигурациями в одном и том же дереве исходных bazel clean .

Установить пакет

Имя сгенерированного файла .whl зависит от версии .whl и вашей платформы. Используйте pip install для установки пакета, например:

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

Сборка Docker Linux

Образы разработки TensorFlow для Docker - это простой способ настроить среду для сборки пакетов Linux из исходного кода. Эти изображения уже содержат исходный код и зависимости, необходимые для сборки TensorFlow. См. Руководство по установке TensorFlow Docker и список доступных тегов изображений .

Процессор только

В следующем примере используется изображение :devel для создания пакета только для процессора из последнего исходного кода TensorFlow. См. Руководство Docker для доступных тегов TensorFlow -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. Сконфигурировать сборку - это предложит пользователю ответить на вопросы конфигурации сборки.
  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 пип находится в текущем каталоге (с правами пользователя хоста): ./tensorflow- version - tags .whl

Поддержка GPU

Docker - это самый простой способ создать поддержку графического процессора для TensorFlow, поскольку хост- машине требуется только драйвер NVIDIA® (не нужно устанавливать NVIDIA® CUDA® Toolkit ). Обратитесь к руководству по поддержке GPU и руководству по TensorFlow Docker, чтобы настроить nvidia-docker (только для Linux).

В следующем примере загружается образ TensorFlow :devel-gpu и используется nvidia-docker для запуска контейнера с поддержкой графического процессора. Этот образ разработки сконфигурирован для сборки пакета 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

Установите и проверьте пакет внутри контейнера и проверьте наличие графического процессора:

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.experimental.list_physical_devices('GPU')))"

Протестированные конфигурации сборки

Linux

ЦПУ

Версия Версия Python составитель Инструменты сборки
tensorflow-2.3.0 3,5-3,8 GCC 7.3.1 Базель 3.1.0
tensorflow-2.2.0 3,5-3,8 GCC 7.3.1 Базель 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 Базель 0.9.0
tensorflow-1.5.0 2,7, 3,3-3,6 GCC 4.8 Базель 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

Версия Версия Python составитель Инструменты сборки cuDNN CUDA
tensorflow-2.3.0 3,5-3,8 GCC 7.3.1 Базель 3.1.0 7,6 10,1
tensorflow-2.2.0 3,5-3,8 GCC 7.3.1 Базель 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 Базель 0.9.0 7 9
tensorflow_gpu-1.6.0 2,7, 3,3-3,6 GCC 4.8 Базель 0.9.0 7 9
tensorflow_gpu-1.5.0 2,7, 3,3-3,6 GCC 4.8 Базель 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

ЦПУ

Версия Версия Python составитель Инструменты сборки
tensorflow-2.3.0 3,5-3,8 Звон из xcode 10.1 Базель 3.1.0
tensorflow-2.2.0 3,5-3,8 Звон из xcode 10.1 Базель 2.0.0
tensorflow-2.1.0 2,7, 3,5-3,7 Звон из xcode 10.1 Базель 0.27.1
tensorflow-2.0.0 2,7, 3,5-3,7 Лязг из xcode 10.1 Базель 0.27.1
tensorflow-2.0.0 2,7, 3,3-3,7 Лязг из xcode 10.1 Базель 0.26.1
tensorflow-1.15.0 2,7, 3,3-3,7 Звон из 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

Версия Версия Python составитель Инструменты сборки 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