TensorFlow

TensorFlow — это платформа с открытым исходным кодом для машинного обучения, созданная Google. Он поддерживает углубленное обучение и общие числовые вычисления для ЦП, GPU и кластеров GPU. Он подчиняется условиям и условиям лицензии Apache 2,0.

Databricks Runtime для машинное обучение включает TensorFlow и TensorBoard, поэтому вы можете использовать эти библиотеки без установки каких бы то ни было пакетов. Сведения о версии TensorFlow, установленной в используемой версии Databricks Runtime ML, см. в заметках о выпуске.

В следующих разделах приводятся рекомендации по установке TensorFlow на Azure Databricks и приведен пример запуска TensorFlow программ.

Примечание

Данное руководством не является исчерпывающим руководством по TensorFlow. См. веб-сайт TensorFlow.

Установка TensorFlow

В этом разделе приводятся инструкции по установке или понижению уровня TensorFlow на Databricks Runtime для машинное обучение и Databricks Runtime, что позволяет испытать новейшие функции в TensorFlow. Из-за зависимостей пакетов могут возникнуть проблемы совместимости с другими предварительно установленными пакетами. После установки можно проверить установленную версию, выполнив следующую команду в записной книжке Python:

import tensorflow as tf
print([tf.__version__, tf.test.is_gpu_available()])

Установка TensorFlow 2,4 на Databricks Runtime 7,6

Azure Databricks рекомендует установить TensorFlow с помощью команд "% PIP" и "% conda Magic".

Официальный выпуск TensorFlow 2,4 основан на CUDA 11,0, который несовместим с CUDA 10,1, установленным в Databricks Runtime 7,0 ML и более поздних версий. Azure Databricks предоставляет пользовательскую сборку TensorFlow 2.4.0, совместимую с CUDA 10,1. Используйте команду GPU, приведенную ниже, чтобы установить ее.

ЦП

%pip install tensorflow-cpu==2.4.*

GPU

%pip install "https://databricks-prod-cloudfront.cloud.databricks.com/artifacts/tensorflow/runtime-7.x/tensorflow-2.4.0-cp37-cp37m-linux_x86_64.whl"

Установка TensorFlow 2,3 на Databricks Runtime 7,2

Azure Databricks рекомендует установить TensorFlow с помощью команд "% PIP" и "% conda Magic". В записной книжке выполните:

%pip install tensorflow-cpu==2.3.*

Установка TensorFlow 1,15 на Databricks Runtime 7,2

В записной книжке выполните:

%pip install tensorflow-cpu==1.15.*

Установка TensorFlow 2,3 на Databricks Runtime 7,2 ML

В записной книжке выполните:

ЦП

%pip install tensorflow-cpu==2.3.*

GPU

%pip install tensorflow-gpu==2.3.*

Установка TensorFlow 1,15 на Databricks Runtime 7,2 ML

В записной книжке выполните:

ЦП

%pip install tensorflow-cpu==1.15.*

GPU

Официальный выпуск TensorFlow 1,15 основан на CUDA 10,0, который несовместим с CUDA 10,1, установленным в Databricks Runtime 7,0 ML и более поздних версий. Azure Databricks предоставляет пользовательскую сборку TensorFlow 1.15.3, компатбиле с CUDA 10,1. Используйте приведенную ниже команду, чтобы установить ее.

%pip install https://databricks-prod-cloudfront.cloud.databricks.com/artifacts/tensorflow/runtime-7.x/tensorflow-1.15.3-cp37-cp37m-linux_x86_64.whl

Установите TensorFlow 2,3 на Databricks Runtime 5,5 LTS для Машинное обучение

Инициализировать скрипт для кластеров:

ЦП

#!/bin/bash

set -e

/databricks/python/bin/python -V
. /databricks/conda/etc/profile.d/conda.sh
conda activate /databricks/python

pip install --upgrade pip
pip install tensorflow-cpu==2.3.* setuptools==41.* grpcio==1.24.*

GPU

#!/bin/bash

set -e

apt-get remove -y --auto-remove cuda-toolkit-10-0
apt-get update
apt-get install -y --no-install-recommends --allow-downgrades \
  libnccl2=2.4.8-1+cuda10.1 \
  libnccl-dev=2.4.8-1+cuda10.1 \
  cuda-libraries-10-1 \
  libcudnn7=7.6.4.38-1+cuda10.1 \
  libcudnn7-dev=7.6.4.38-1+cuda10.1 \
  libcublas10=10.2.1.243-1 \
  libcublas-dev=10.2.1.243-1 \
  cuda-libraries-dev-10-1 \
  cuda-compiler-10-1
ln -sfn cuda-10.1 /usr/local/cuda

/databricks/python/bin/python -V
. /databricks/conda/etc/profile.d/conda.sh
conda activate /databricks/python

pip install --upgrade pip
pip install tensorflow==2.3.* setuptools==41.* grpcio==1.24.*

Установка TensorFlow 2,3 на Databricks Runtime 5,5 LTS

Инициализировать скрипт для кластеров:

ЦП

#!/bin/bash

set -e

/databricks/python/bin/python -V
/databricks/python/bin/pip install tensorflow-cpu==2.3.* setuptools==41.* pyasn1==0.4.6
/databricks/python/bin/pip uninstall -y numpy
rm -rf /databricks/python/lib/python3.5/site-packages/numpy
/databricks/python/bin/pip install numpy==1.18.4

GPU

#!/bin/bash

set -e

apt-get update
apt-get install -y gnupg-curl

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_10.1.243-1_amd64.deb
dpkg -i cuda-repo-ubuntu1604_10.1.243-1_amd64.deb
apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub

wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1604/x86_64/nvidia-machine-learning-repo-ubuntu1604_1.0.0-1_amd64.deb
dpkg -i nvidia-machine-learning-repo-ubuntu1604_1.0.0-1_amd64.deb

apt-get update
apt-get install -y --no-install-recommends --allow-downgrades \
  libnccl2=2.4.8-1+cuda10.1 \
  libnccl-dev=2.4.8-1+cuda10.1 \
  cuda-libraries-10-1 \
  libcudnn7=7.6.4.38-1+cuda10.1 \
  libcudnn7-dev=7.6.4.38-1+cuda10.1 \
  libcublas10=10.2.1.243-1 \
  libcublas-dev=10.2.1.243-1 \
  cuda-libraries-dev-10-1 \
  cuda-compiler-10-1
ln -sfn cuda-10.1 /usr/local/cuda

/databricks/python/bin/python -V
/databricks/python/bin/pip install tensorflow==2.3.* setuptools==41.*
/databricks/python/bin/pip uninstall -y numpy
rm -rf /databricks/python/lib/python3.5/site-packages/numpy
/databricks/python/bin/pip install numpy==1.18.4

Известные проблемы TensorFlow 2

TensorFlow 2 имеет известную несовместимость с помощью выбора Python. Это может произойти при использовании PySpark, хороводруннер, хипероптили других пакетов, зависящих от выбора. Обходной путь заключается в явном импорте модулей TensorFlow в функции. Пример:

import tensorflow as tf

def bad_func(_):
  tf.keras.Sequential()

# You might see an error.
sc.parallelize(range(0)).foreach(bad_func)

def good_func(_):
  import tensorflow as tf
  tf.keras.some_func

# No error.
sc.parallelize(range(0)).foreach(good_func)

Установите TensorFlow 1,15 на Databricks Runtime 5,5 LTS для машинное обучение

Azure Databricks рекомендует установить TensorFlow 1,15 на Databricks Runtime 5,5 LTS для Машинное обучение с помощью скрипта инициализации.

Инициализировать скрипт для кластеров:

ЦП

#!/bin/bash

set -e

/databricks/python/bin/python -V
. /databricks/conda/etc/profile.d/conda.sh
conda install -y conda=4.6
conda activate /databricks/python

conda install -y tensorflow-mkl=1.15 setuptools=41

GPU

#!/bin/bash

set -e

/databricks/python/bin/python -V
. /databricks/conda/etc/profile.d/conda.sh
conda install -y conda=4.6
conda activate /databricks/python

conda install -y tensorflow-gpu=1.15 setuptools=41

Установка TensorFlow 1,15 на Databricks Runtime 5,5 LTS

Azure Databricks рекомендует установить TensorFlow 1,15 на Databricks Runtime 5,5 LTS с помощью скрипта инициализации.

Инициализировать скрипт для кластеров:

ЦП

#!/bin/bash

set -e

/databricks/python/bin/python -V
/databricks/python/bin/pip install tensorflow-cpu==1.15.* setuptools==41.*

GPU

#!/bin/bash

set -e

apt-get update
apt-get install -y gnupg-curl

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_10.0.130-1_amd64.deb
dpkg -i cuda-repo-ubuntu1604_10.0.130-1_amd64.deb
apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub

wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1604/x86_64/nvidia-machine-learning-repo-ubuntu1604_1.0.0-1_amd64.deb
dpkg -i nvidia-machine-learning-repo-ubuntu1604_1.0.0-1_amd64.deb

apt-get update
apt-get install -y --no-install-recommends cuda-libraries-10-0 libcudnn7=7.4.2.24-1+cuda10.0

/databricks/python/bin/python -V
/databricks/python/bin/pip install tensorflow-gpu==1.15.* setuptools==41.*

TensorBoard

TensorBoard — это набор средств визуализации для отладки, оптимизации и понимания TensorFlow, PyTorch и других программ машинного обучения.

Использование TensorBoard

Использовать TensorBoard в Databricks Runtime 7,2 и более поздних версий

Запуск TensorBoard в Azure Databricks не отличается от запуска в записной книжке Jupyter на локальном компьютере.

  1. Загрузите %tensorboard команду Magic и определите каталог журналов.

    %load_ext tensorboard
    experiment_log_dir = <log-directory>
    
  2. Вызовите %tensorboard команду Magic.

    %tensorboard --logdir $experiment_log_dir
    

    Сервер TensorBoard запускается и отображает встроенный пользовательский интерфейс в записной книжке. Он также содержит ссылку на открытие TensorBoard на новой вкладке.

    На следующем снимке экрана показан пользовательский интерфейс TensorBoard, запущенный в заполненном каталоге журналов.

    Пользовательский интерфейс TensorBoard запущен в заполненном каталоге журналов

Вы также можете запустить TensorBoard с помощью модуля записной книжки TensorBoard напрямую.

from tensorboard import notebook
notebook.start("--logdir {}".format(experiment_log_dir))

Используйте TensorBoard в Databricks Runtime 7,1 и ниже

Чтобы запустить TensorBoard из записной книжки, используйте dbutils.tensorboard программу.

dbutils.tensorboard.start("/tmp/tensorflow_log_dir")

Эта команда отображает ссылку, которая при нажатии открывает TensorBoard на новой вкладке.

Если вы приступите к работе с этим API, TensorBoard продолжит работу, пока вы не остановите его dbutils.tensorboard.stop() или не завершите работу кластера.

Примечание

При присоединении TensorFlow к кластеру в качестве библиотеки Azure Databricks может потребоваться повторное подключение записной книжки перед запуском TensorBoard.

Журналы и каталоги TensorBoard

TensorBoard визуализирует программы машинного обучения, считывая журналы, созданные с помощью обратных вызовов TensorBoard и функций в TensorBoard или PyTorch. Чтобы создать журналы для других библиотек машинного обучения, можно непосредственно записывать журналы с помощью модуля записи файлов TensorFlow (см . модуль: TF. Summary для TensorFlow 2. x и см. модуль: TF. совместимость. v1. Summary для более старого API в TensorFlow 1. x).

Чтобы обеспечить надежное хранение журналов экспериментов, Azure Databricks рекомендует записывать журналы в DBFS (то есть в каталог журнала /dbfs/ ), а не в файловую систему эфемерного кластера. Для каждого эксперимента запустите TensorBoard в уникальном каталоге. Для каждого запуска кода машинного обучения в эксперименте, который создает журналы, установите обратный вызов TensorBoard или FileWriter для записи в подкаталог каталога эксперимента. Таким образом, данные в пользовательском интерфейсе TensorBoard будут разделены на запуски.

Ознакомьтесь с официальной документацией TensorBoard , чтобы приступить к использованию TensorBoard для записи сведений о программе машинного обучения.

Управление процессами TensorBoard

Процессы TensorBoard, запущенные в записной книжке Azure Databricks, не прерываются при отсоединении записной книжки или перезапуске REPL (например, при очистке состояния записной книжки). Чтобы вручную завершить процесс TensorBoard, отправьте ему сигнал завершения с помощью %sh kill -15 pid . Неправильное завершение процессов TensorBoard может привести к повреждению notebook.list() .

Чтобы получить список серверов TensorBoard, выполняющихся в кластере, с соответствующими каталогами журналов и идентификаторами процессов, запустите notebook.list() из модуля записной книжки TensorBoard.

Известные проблемы

  • Встроенный пользовательский интерфейс TensorBoard находится внутри iframe. Функции безопасности браузера предотвращают работу внешних ссылок в пользовательском интерфейсе, если не открыть эту ссылку на новой вкладке.
  • --window_titleПараметр TensorBoard переопределяется в Azure Databricks.
  • По умолчанию TensorBoard сканирует диапазон портов, чтобы выбрать порт для прослушивания. Если в кластере работает слишком много процессов TensorBoard, все порты в диапазоне портов могут быть недоступны. Это ограничение можно обойти, указав номер порта с --port аргументом. Указанный порт должен находиться в диапазоне от 6006 до 6106.
  • Чтобы скачать ссылки на работу, необходимо открыть TensorBoard на вкладке.
  • При использовании TensorBoard 1.15.0 вкладка проектор пуста. В качестве обходного решения для непосредственного посещения страницы проектора можно заменить #projector в URL-адресе на data/plugin/projector/projector_binary.html .
  • В TensorBoard 2.4.0 есть известная ошибка , которая может повлиять на отрисовку TensorBoard, если она была обновлена.

Использование TensorFlow на отдельном узле

Чтобы протестировать и перенести рабочие процессы TensorFlow с одним компьютером, можно начать с кластера только для драйверов на Azure Databricks, установив число рабочих ролей равным нулю. Хотя в этом параметре Apache Spark не работает, это экономичный способ запуска рабочих процессов TensorFlow на одном компьютере. В следующей записной книжке показано, как можно выполнять TensorFlow (1. x и 2. x) с мониторингом TensorBoard в кластере только для драйверов.

Записная книжка TensorFlow 1,15 доллара/2. x

Получить записную книжку