Help protect the Great Barrier Reef with TensorFlow on Kaggle Join Challenge

Сборка из исходников

Сборка пакета 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

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

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

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

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

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

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

Там нет поддержки 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

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

Оптимизация

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

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

Есть некоторые предварительно настроенные конфиги сборки доступны , которые могут быть добавлены к bazel build команды, например:

  • --config=dbg -Build с отладочной информацией. См CONTRIBUTING.md подробности.
  • --config=mkl -Support для Intel® MKL-DNN .
  • --config=monolithic -конфигурация для преимущественно статической монолитной сборки.
  • --config=v1 -Build TensorFlow 1.x вместо 2.x.

Создайте пакет pip

TensorFlow 2.x

Установите Базэла и использование bazel build для создания 2.x пакета TensorFlow с CPU-только поддержкой:

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

Поддержка GPU

Чтобы создать конструктор пакетов TensorFlow с поддержкой графического процессора:

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

TensorFlow 1.x

Для того, чтобы построить более старую 1.x пакет TensorFlow, используйте --config=v1 вариант:

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

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

См Базэл ссылку командной строки для вариантов сборки .

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

В официальных пакетах TensorFlow построены с GCC 7.3 ToolChain , который соответствует стандарту 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 - это простой способ настроить среду для сборки пакетов Linux из исходного кода. Эти образы уже содержат исходный код и зависимости, необходимые для сборки TensorFlow. См TensorFlow руководства Docker для установки и список доступных тегов изображений .

Только ЦП

Следующий пример использует :devel изображения для создания процессора только пакета из последнего источника TensorFlow кода. Смотрите руководство Docker для доступного TensorFlow -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 команда запускает оболочку в /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__)"

На хост - машине, пакет TensorFlow пип находится в текущем каталоге (с правами пользователя хоста): ./tensorflow- version - tags .whl

Поддержка GPU

Docker это самый простой способ для поддержки сборки GPU для TensorFlow , так как хозяин машины требует только драйвер NVIDIA® (The NVIDIA® CUDA® Toolkit не должен быть установлен). Смотрите руководство поддержки GPU и TensorFlow руководство Docker настроить NVidia-докер (только Linux).

Следующий пример загружает 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 с поддержкой графического процессора:

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

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

Linux

Процессор

Версия Версия Python Компилятор Инструменты сборки
tenorflow-2.7.0 3,7–3,9 GCC 7.3.1 Базель 3.7.2
tenorflow-2.6.0 3,6–3,9 GCC 7.3.1 Базель 3.7.2
tenorflow-2.5.0 3,6–3,9 GCC 7.3.1 Базель 3.7.2
tenorflow-2.4.0 3,6–3,8 GCC 7.3.1 Базель 3.1.0
tenorflow-2.3.0 3,5–3,8 GCC 7.3.1 Базель 3.1.0
tenorflow-2.2.0 3,5–3,8 GCC 7.3.1 Базель 2.0.0
tenorflow-2.1.0 2,7, 3,5–3,7 GCC 7.3.1 Базель 0.27.1
tenorflow-2.0.0 2,7, 3,3–3,7 GCC 7.3.1 Базель 0.26.1
tenorflow-1.15.0 2,7, 3,3–3,7 GCC 7.3.1 Базель 0.26.1
tenorflow-1.14.0 2,7, 3,3–3,7 GCC 4.8 Базель 0.24.1
tenorflow-1.13.1 2,7, 3,3–3,7 GCC 4.8 Базель 0.19.2
tenorflow-1.12.0 2,7, 3,3–3,6 GCC 4.8 Базель 0,15,0
тензор потока-1.11.0 2,7, 3,3–3,6 GCC 4.8 Базель 0,15,0
тензор потока-1.10.0 2,7, 3,3–3,6 GCC 4.8 Базель 0,15,0
tenorflow-1.9.0 2,7, 3,3–3,6 GCC 4.8 Базель 0.11.0
tenorflow-1.8.0 2,7, 3,3–3,6 GCC 4.8 Базель 0.10.0
tenorflow-1.7.0 2,7, 3,3–3,6 GCC 4.8 Базель 0.10.0
tenorflow-1.6.0 2,7, 3,3–3,6 GCC 4.8 Базель 0.9.0
tenorflow-1.5.0 2,7, 3,3–3,6 GCC 4.8 Базель 0.8.0
tenorflow-1.4.0 2,7, 3,3–3,6 GCC 4.8 Базель 0.5.4
tenorflow-1.3.0 2,7, 3,3–3,6 GCC 4.8 Базель 0.4.5
tenorflow-1.2.0 2,7, 3,3–3,6 GCC 4.8 Базель 0.4.5
tenorflow-1.1.0 2,7, 3,3–3,6 GCC 4.8 Базель 0.4.2
tenorflow-1.0.0 2,7, 3,3–3,6 GCC 4.8 Базель 0.4.2

GPU

Версия Версия Python Компилятор Инструменты сборки cuDNN CUDA
tenorflow-2.7.0 3,7–3,9 GCC 7.3.1 Базель 3.7.2 8.1 11.2
tenorflow-2.6.0 3,6–3,9 GCC 7.3.1 Базель 3.7.2 8.1 11.2
tenorflow-2.5.0 3,6–3,9 GCC 7.3.1 Базель 3.7.2 8.1 11.2
tenorflow-2.4.0 3,6–3,8 GCC 7.3.1 Базель 3.1.0 8.0 11.0
tenorflow-2.3.0 3,5–3,8 GCC 7.3.1 Базель 3.1.0 7,6 10.1
tenorflow-2.2.0 3,5–3,8 GCC 7.3.1 Базель 2.0.0 7,6 10.1
tenorflow-2.1.0 2,7, 3,5–3,7 GCC 7.3.1 Базель 0.27.1 7,6 10.1
tenorflow-2.0.0 2,7, 3,3–3,7 GCC 7.3.1 Базель 0.26.1 7,4 10.0
tenorflow_gpu-1.15.0 2,7, 3,3–3,7 GCC 7.3.1 Базель 0.26.1 7,4 10.0
tenorflow_gpu-1.14.0 2,7, 3,3–3,7 GCC 4.8 Базель 0.24.1 7,4 10.0
tenorflow_gpu-1.13.1 2,7, 3,3–3,7 GCC 4.8 Базель 0.19.2 7,4 10.0
tenorflow_gpu-1.12.0 2,7, 3,3–3,6 GCC 4.8 Базель 0,15,0 7 9
tenorflow_gpu-1.11.0 2,7, 3,3–3,6 GCC 4.8 Базель 0,15,0 7 9
tenorflow_gpu-1.10.0 2,7, 3,3–3,6 GCC 4.8 Базель 0,15,0 7 9
tenorflow_gpu-1.9.0 2,7, 3,3–3,6 GCC 4.8 Базель 0.11.0 7 9
tenorflow_gpu-1.8.0 2,7, 3,3–3,6 GCC 4.8 Базель 0.10.0 7 9
tenorflow_gpu-1.7.0 2,7, 3,3–3,6 GCC 4.8 Базель 0.9.0 7 9
tenorflow_gpu-1.6.0 2,7, 3,3–3,6 GCC 4.8 Базель 0.9.0 7 9
tenorflow_gpu-1.5.0 2,7, 3,3–3,6 GCC 4.8 Базель 0.8.0 7 9
tenorflow_gpu-1.4.0 2,7, 3,3–3,6 GCC 4.8 Базель 0.5.4 6 8
tenorflow_gpu-1.3.0 2,7, 3,3–3,6 GCC 4.8 Базель 0.4.5 6 8
tenorflow_gpu-1.2.0 2,7, 3,3–3,6 GCC 4.8 Базель 0.4.5 5.1 8
tenorflow_gpu-1.1.0 2,7, 3,3–3,6 GCC 4.8 Базель 0.4.2 5.1 8
tenorflow_gpu-1.0.0 2,7, 3,3–3,6 GCC 4.8 Базель 0.4.2 5.1 8

macOS

Процессор

Версия Версия Python Компилятор Инструменты сборки
tenorflow-2.7.0 3,7–3,9 Clang из xcode 10.11 Базель 3.7.2
tenorflow-2.6.0 3,6–3,9 Clang из xcode 10.11 Базель 3.7.2
tenorflow-2.5.0 3,6–3,9 Clang из xcode 10.11 Базель 3.7.2
tenorflow-2.4.0 3,6–3,8 Clang из xcode 10.3 Базель 3.1.0
tenorflow-2.3.0 3,5–3,8 Clang из xcode 10.1 Базель 3.1.0
tenorflow-2.2.0 3,5–3,8 Clang из xcode 10.1 Базель 2.0.0
tenorflow-2.1.0 2,7, 3,5–3,7 Clang из xcode 10.1 Базель 0.27.1
tenorflow-2.0.0 2,7, 3,5–3,7 Clang из xcode 10.1 Базель 0.27.1
tenorflow-2.0.0 2,7, 3,3–3,7 Clang из xcode 10.1 Базель 0.26.1
tenorflow-1.15.0 2,7, 3,3–3,7 Clang из xcode 10.1 Базель 0.26.1
tenorflow-1.14.0 2,7, 3,3–3,7 Clang из xcode Базель 0.24.1
tenorflow-1.13.1 2,7, 3,3–3,7 Clang из xcode Базель 0.19.2
tenorflow-1.12.0 2,7, 3,3–3,6 Clang из xcode Базель 0,15,0
тензор потока-1.11.0 2,7, 3,3–3,6 Clang из xcode Базель 0,15,0
тензор потока-1.10.0 2,7, 3,3–3,6 Clang из xcode Базель 0,15,0
tenorflow-1.9.0 2,7, 3,3–3,6 Clang из xcode Базель 0.11.0
tenorflow-1.8.0 2,7, 3,3–3,6 Clang из xcode Базель 0.10.1
tenorflow-1.7.0 2,7, 3,3–3,6 Clang из xcode Базель 0.10.1
tenorflow-1.6.0 2,7, 3,3–3,6 Clang из xcode Базель 0.8.1
tenorflow-1.5.0 2,7, 3,3–3,6 Clang из xcode Базель 0.8.1
tenorflow-1.4.0 2,7, 3,3–3,6 Clang из xcode Базель 0.5.4
tenorflow-1.3.0 2,7, 3,3–3,6 Clang из xcode Базель 0.4.5
tenorflow-1.2.0 2,7, 3,3–3,6 Clang из xcode Базель 0.4.5
tenorflow-1.1.0 2,7, 3,3–3,6 Clang из xcode Базель 0.4.2
tenorflow-1.0.0 2,7, 3,3–3,6 Clang из xcode Базель 0.4.2

GPU

Версия Версия Python Компилятор Инструменты сборки cuDNN CUDA
tenorflow_gpu-1.1.0 2,7, 3,3–3,6 Clang из xcode Базель 0.4.2 5.1 8
tenorflow_gpu-1.0.0 2,7, 3,3–3,6 Clang из xcode Базель 0.4.2 5.1 8