TensorFlowTensorFlow

マイテナントは、Google によって作成された機械学習用のオープンソースフレームワークです。TensorFlow is an open-source framework for machine learning created by Google. Cpu、Gpu、および Gpu のクラスターに対するディープラーニングと一般的な数値計算をサポートしています。It supports deep-learning and general numerical computations on CPUs, GPUs, and clusters of GPUs. Apache ライセンス2.0 の使用条件が適用されます。It is subject to the terms and conditions of the Apache License 2.0.

次のセクションでは、Azure Databricks に対してのインストールに関するガイダンスを提供し、その例を紹介します。The following sections provide guidance on installing TensorFlow on Azure Databricks and give an example of running TensorFlow programs.

注意

このガイドは、「包括的なガイド」ではありません。This guide is not a comprehensive guide on TensorFlow. 「Azure の フロー」 web サイトを参照してください。See the TensorFlow website.

Databricks Runtime ML に含まれる TensorFlow のバージョンTensorFlow versions included in Databricks Runtime ML

Machine Learning の Databricks Runtime には、パッケージをインストールせずにこれらのライブラリを使用できるようにするための、すべてのパッケージが含まれています。Databricks Runtime for Machine Learning includes TensorFlow and TensorBoard so you can use these libraries without installing any packages. 次に示すのは、含まれている次のようなバージョンです。Here are the TensorFlow versions included:

Databricks Runtime ML バージョンDatabricks Runtime ML version 転送フローのバージョンTensorFlow version
8.08.0 2.4.02.4.0
7.3 ~ 7.67.3 - 7.6 2.3.02.3.0
7.0 ~ 7.27.0 - 7.2 2.2.02.2.0
6.3 ~ 6.66.3 - 6.6 1.15.01.15.0

インストールしたフローをインストールする Install TensorFlow

このセクションでは、Machine Learning とDatabricks Runtimeのために Databricks Runtimeでのインストールまたはダウングレードを行う手順を説明します。これにより、最新の機能をお試しいただけます。This section provides instructions for installing or downgrading TensorFlow on Databricks Runtime for Machine Learning and Databricks Runtime, so that you can try out the latest features in TensorFlow. パッケージの依存関係が原因で、他のインストール済みパッケージと互換性の問題が発生している可能性があります。Due to package dependencies, there might be compatibility issues with other pre-installed packages. インストール後に、Python notebook で次のコマンドを実行して、インストールされているバージョンを確認できます。After installation, you can verify the installed version by executing the following command in a Python notebook:

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

Databricks Runtime 7.6 に [2.4 をインストールする。Install TensorFlow 2.4 on Databricks Runtime 7.6

Azure Databricks は 、% pip と% conda マジックコマンドを使用して、"自動" フローをインストールすることをお勧めします。Azure Databricks recommends installing TensorFlow using %pip and %conda magic commands.

公式の「公開されていない」2.4 リリースは、CUDA 11.0 に対して構築されており、Databricks Runtime 7.0 ML 以降にインストールされている CUDA 10.1 と互換性がありません。The official TensorFlow 2.4 release is built against CUDA 11.0, which is not compatible with CUDA 10.1 installed in Databricks Runtime 7.0 ML and above. Azure Databricks は、CUDA 10.1 と互換性がある、2.4.0 のカスタムビルドを提供します。Azure Databricks provides a custom build of TensorFlow 2.4.0 that is compatible with CUDA 10.1. 次の GPU コマンドを使用してインストールします。Use the GPU command below to install it.

CPUCpu

%pip install tensorflow-cpu==2.4.*

GpuGpu

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

Databricks Runtime 7.2 に [2.3 をインストールする。Install TensorFlow 2.3 on Databricks Runtime 7.2

Azure Databricks は 、% pip と% conda マジックコマンドを使用して、"自動" フローをインストールすることをお勧めします。Azure Databricks recommends installing TensorFlow using %pip and %conda magic commands. Notebook で、次のように実行します。In a notebook, run:

%pip install tensorflow-cpu==2.3.*

Databricks Runtime 7.2 に [1.15 をインストールする。Install TensorFlow 1.15 on Databricks Runtime 7.2

Notebook で、次のように実行します。In a notebook, run:

%pip install tensorflow-cpu==1.15.*

Databricks Runtime 7.2 ML に [2.3 をインストールする。Install TensorFlow 2.3 on Databricks Runtime 7.2 ML

Notebook で、次のように実行します。In a notebook, run:

CPUCpu

%pip install tensorflow-cpu==2.3.*

GpuGpu

%pip install tensorflow-gpu==2.3.*

Databricks Runtime 7.2 ML に [1.15 をインストールする。Install TensorFlow 1.15 on Databricks Runtime 7.2 ML

Notebook で、次のように実行します。In a notebook, run:

CPUCpu

%pip install tensorflow-cpu==1.15.*

GpuGpu

公式の「公開されていない」1.15 リリースは、CUDA 10.0 に対して構築されており、Databricks Runtime 7.0 ML 以降にインストールされている CUDA 10.1 と互換性がありません。The official TensorFlow 1.15 release is built against CUDA 10.0, which is not compatible with CUDA 10.1 installed in Databricks Runtime 7.0 ML and above. Azure Databricks は、compatbile と CUDA 10.1 を使用して、1.15.3 のカスタムビルドを提供します。Azure Databricks provides a custom build of TensorFlow 1.15.3 that is compatbile with CUDA 10.1. 次のコマンドを使用してインストールします。Use the command below to install it.

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

Machine Learning 用の Databricks Runtime 5.5 LTS に、[2.3 をインストールします。Install TensorFlow 2.3 on Databricks Runtime 5.5 LTS for Machine Learning

クラスターの初期化スクリプト:Init script for clusters on:

CPUCpu

#!/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.*

GpuGpu

#!/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.*

Databricks Runtime 5.5 LTS に、"2.3" をインストールします。Install TensorFlow 2.3 on Databricks Runtime 5.5 LTS

クラスターの初期化スクリプト:Init script for clusters on:

CPUCpu

#!/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

GpuGpu

#!/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

この2つの既知の問題 TensorFlow 2 known issues

Pickling には、Python の互換性に関する 既知の非互換性 があります。TensorFlow 2 has a known incompatibility with Python pickling. PySpark、 HorovodRunnerhyperopt、または pickling に依存するその他のパッケージを使用すると、この問題が発生する可能性があります。You might encounter it if you use PySpark, HorovodRunner, Hyperopt, or any other packages that depend on pickling. 回避策としては、関数内で、"整理" モジュールを明示的にインポートします。The workaround is to explicitly import TensorFlow modules inside your functions. たとえば次のようになります。Here is an example:

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)

Machine Learning 用の Databricks Runtime 5.5 LTS に、[1.15 をインストールします。Install TensorFlow 1.15 on Databricks Runtime 5.5 LTS for Machine Learning

Azure Databricks では、 init スクリプトを使用して Machine Learning のために、DATABRICKS RUNTIME 5.5 LTS に対して、このように1.15 することをお勧めします。Azure Databricks recommends installing TensorFlow 1.15 on Databricks Runtime 5.5 LTS for Machine Learning using an init script.

クラスターの初期化スクリプト:Init script for clusters on:

CPUCpu

#!/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

GpuGpu

#!/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

Databricks Runtime 5.5 LTS に、"1.15" をインストールします。Install TensorFlow 1.15 on Databricks Runtime 5.5 LTS

Azure Databricks では、 init スクリプトを使用して、DATABRICKS RUNTIME 5.5 LTS に対して、この1.15 をインストールすることをお勧めします。Azure Databricks recommends installing TensorFlow 1.15 on Databricks Runtime 5.5 LTS using an init script.

クラスターの初期化スクリプト:Init script for clusters on:

CPUCpu

#!/bin/bash

set -e

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

GpuGpu

#!/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

このツールは、 PyTorch、その他の機械学習プログラムをデバッグ、最適化、理解するための視覚化ツールのスイートです。TensorBoard is a suite of visualization tools for debugging, optimizing, and understanding TensorFlow, PyTorch, and other machine learning programs.

TensorBoard を使用するUse TensorBoard

Databricks Runtime 7.2 以降では、このボードを使用します。Use TensorBoard on Databricks Runtime 7.2 and above

Azure Databricks での整理の開始は、ローカルコンピューター上の Jupyter notebook での起動と同じです。Starting TensorBoard in Azure Databricks is no different than starting it on a Jupyter notebook on your local computer.

  1. %tensorboardマジックコマンドを読み込み、ログディレクトリを定義します。Load the %tensorboard magic command and define your log directory.

    %load_ext tensorboard
    experiment_log_dir = <log-directory>
    
  2. %tensorboardマジックコマンドを呼び出します。Invoke the %tensorboard magic command.

    %tensorboard --logdir $experiment_log_dir
    

    このサーバーが起動し、ノートブックにユーザーインターフェイスがインラインで表示されます。The TensorBoard server starts and displays the user interface inline in the notebook. また、新しいタブで [表示] を開くためのリンクも用意されています。It also provides a link to open TensorBoard in a new tab.

    次のスクリーンショットは、設定されたログディレクトリで開始された、自動でのボード UI を示しています。The following screenshot shows the TensorBoard UI started in a populated log directory.

    設定されたログディレクトリで、自動登録された UI が開始されましたTensorBoard UI started in populated log directory

また、"ノートブック" モジュールを直接使用して、"ブックの作成" を開始することもできます。You can also start TensorBoard by using TensorBoard’s notebook module directly.

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

Databricks Runtime 7.1 以下で、このボードを使用するUse TensorBoard on Databricks Runtime 7.1 and below

ノートブックから整理したボードを起動するには、ユーティリティを使用し dbutils.tensorboard ます。To start TensorBoard from your notebook, use the dbutils.tensorboard utility.

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

このコマンドを実行すると、リンクが表示されます。このリンクをクリックすると、新しいタブで [表示] が開きます。This command displays a link that, when clicked, opens TensorBoard in a new tab.

この API を使用して開始した場合、を使用して停止するか、クラスターをシャットダウンするまで、そのまま実行さ dbutils.tensorboard.stop() れます。When started using this API TensorBoard continues to run until you either stop it with dbutils.tensorboard.stop() or you shut down your cluster.

注意

Azure Databricks ライブラリとしてクラスターに登録した場合、登録を開始する前にノートブックを再アタッチする必要がある場合があります。If you attach TensorFlow to your cluster as an Azure Databricks library, you may need to reattach your notebook before starting TensorBoard.

TensorBoard ログとディレクトリTensorBoard logs and directories

自動整理 では、 PyTorchによって生成されたログを読み取って機械学習プログラムを視覚化します。TensorBoard visualizes your machine learning programs by reading logs generated by TensorBoard callbacks and functions in TensorBoard or PyTorch. 他の機械学習ライブラリのログを生成するには、"azure のフロー" ファイルライターを使用してログを直接書き込むことができます (「 モジュール: tf. 概要 」を参照してください。また、「 モジュール: tf. v1 の概要 」を参照してください)。To generate logs for other machine learning libraries, you can directly write logs using TensorFlow file writers (see Module: tf.summary for TensorFlow 2.x and see Module: tf.compat.v1.summary for the older API in TensorFlow 1.x ).

実験ログが確実に格納されていることを確認するには Azure Databricks、DBFS にログを書き込むことをお勧めします (つまり、の下のログディレクトリ)。これは、 /dbfs/ 一時的なクラスターファイルシステムではなくです。To make sure that your experiment logs are reliably stored, Azure Databricks recommends writing logs to DBFS (that is, a log directory under /dbfs/) rather than on the ephemeral cluster file system. 各実験について、一意のディレクトリにある [マイボード] を開始します。For each experiment, start TensorBoard in a unique directory. ログを生成する実験で機械学習コードを実行するたびに、[整理] のコールバックまたは filewriter を設定して実験ディレクトリのサブディレクトリに書き込みます。For each run of your machine learning code in the experiment that generates logs, set the TensorBoard callback or filewriter to write to a subdirectory of the experiment directory. そうすることで、このようにして、すべてのデータが実行に分割されます。That way, the data in the TensorBoard UI will be separated into runs.

お使いの machine learning プログラムの情報をログに記録するために、「お客様のオフィシャルボード ドキュメント 」を参照してください。Read the official TensorBoard documentation to get started using TensorBoard to log information for your machine learning program.

TensorBoard プロセスの管理Manage TensorBoard processes

Notebook が切断された場合や、REPL が再起動された場合 (ノートブックの状態をクリアした場合など)、Azure Databricks notebook 内で開始された、暗号化されたボードのプロセスは終了しません。The TensorBoard processes started within Azure Databricks notebook are not terminated when the notebook is detached or the REPL is restarted (for example, when you clear the state of the notebook). このプロセスを手動で強制終了するには、を使用して終了シグナルを送信し %sh kill -15 pid ます。To manually kill a TensorBoard process, send it a termination signal using %sh kill -15 pid. 正常に終了しなかったため、このプロセスは破損している可能性があり notebook.list() ます。Improperly killed TensorBoard processes may corrupt notebook.list().

クラスターで現在実行されている、対応するログディレクトリとプロセス Id を使用して、現在実行中のサーバーの一覧を表示するには、[サーバーの整理] モジュールからを実行し notebook.list() ます。To list the TensorBoard servers currently running on your cluster, with their corresponding log directories and process IDs, run notebook.list() from the TensorBoard notebook module.

既知の問題Known issues

  • インライン管理の UI は iframe 内にあります。The inline TensorBoard UI is inside an iframe. ブラウザーのセキュリティ機能を使用すると、新しいタブでリンクを開いた場合を除き、UI 内の外部リンクが動作しなくなります。Browser security features prevent external links within the UI from working unless you open the link in a new tab.
  • この --window_title オプションは、Azure Databricks で上書きされます。The --window_title option of TensorBoard is overridden on Azure Databricks.
  • 既定では、監視対象のポートを選択するためのポート範囲がスキャンされます。By default, TensorBoard scans a port range for selecting a port to listen to. クラスターで実行されているすべての状態のプロセスが多すぎる場合は、ポート範囲内のすべてのポートを使用できない可能性があります。If there are too many TensorBoard processes running on the cluster, all ports in the port range may be unavailable. この制限を回避するには、引数を使用してポート番号を指定し --port ます。You can work around this limitation by specifying a port number with the --port argument. 指定するポートは、6006 ~ 6106 の範囲である必要があります。The specified port should be between 6006 and 6106.
  • ダウンロードリンクを機能させるには、タブで [表示] を開きます。In order for download links to work, you should open TensorBoard in a tab.
  • 1.15.0 を使用すると、[プロジェクター] タブが空白になります。When using TensorBoard 1.15.0, the Projector tab is blank. 回避策として、プロジェクターのページに直接アクセスするには、URL のをで置き換えることができ #projector data/plugin/projector/projector_binary.html ます。As a workaround, to visit the projector page directly, you can replace #projector in the URL by data/plugin/projector/projector_binary.html.
  • この2.4.0 には既知の 問題 があり、アップグレードすると、このようなレンダリングに影響を与える可能性があります。TensorBoard 2.4.0 has a known issue that might affect TensorBoard rendering if upgraded.

単一ノードで TensorFlow を使用するUse TensorFlow on a single node

シングルコンピューターのフルフローワークフローをテストして移行するには、ワーカーの数をゼロに設定して、Azure Databricks のドライバー専用クラスターから開始できます。To test and migrate single-machine TensorFlow workflows, you can start with a driver-only cluster on Azure Databricks by setting the number of workers to zero. この設定では Apache Spark が機能していませんが、単一コンピューターのフルフローワークフローを実行するコスト効率に優れた方法です。Though Apache Spark is not functional under this setting, it is a cost-effective way to run single-machine TensorFlow workflows. 次のノートブックでは、ドライバーのみのクラスターでの監視機能を使用して、管理された状態の監視 (1.x および 2.x) を実行する方法を示しています。The following notebook shows how you can run TensorFlow (1.x and 2.x), with TensorBoard monitoring on a driver-only cluster.

このノートブックには、TensorFlow 1.15/2.x notebook

ノートブックを入手Get notebook