0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

TensorFlow | Databricks on AWS [2022/1/31時点]の翻訳です。

本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。

TensorFlowはGoogleによって開発された機械学習のオープンソースフレームワークです。CPU、GPU、GPUクラスターでのディープラーニング、一般的な数値計算をサポートしています。Apache License 2.0の元で提供されています。

Databricks機械学習ランタイムにはTensorFlowとTensorBoardが含まれているので、パッケージをインストールすることなしにこれらのライブラリを利用することができます。使用しているDatabricks機械学習ランタイムバージョンにインストールされているTensorFlowのバージョンについては、リリースノートをご覧ください。

注意
このガイドはTensorFlowの包括的なガイドではありません。TensorFlow websiteをご覧ください。

シングルノード、分散トレーニング

シングルマシンのワークフローをテストし移行するには、シングルノードクラスターを使用します。

ディープラーニングにおける分散トレーニングのオプションについては、分散トレーニングをご覧ください。

サンプルノートブック

以下のノートブックでは、シングルノードクラスターにおけるTensorFlow (1.xと2.x)とTensorBoardの実行方法を説明しています。

TensorFlow 1.15/2.xノートブック

TensorBoard

TensorBoardは、TensorFlow、PyTorchなどの機械学習プログラムのデバッグ、最適化、理解のための可視化ツールのスイートです。

TensorBoardを使う

Databricksランタイム7.2以降でのTensorBoardの使用

DatabricksにおけるTensorBoardの起動は、お使いのローカルマシンにおけるJupyterノートブックでの起動方法と違いはありません。

  1. %tensorboardマジックコマンドをロードし、ログのディレクトリを定義します。

    %load_ext tensorboard
    experiment_log_dir = <log-directory>
    
  2. %tensorboardマジックコマンドを実行します。

    %tensorboard --logdir $experiment_log_dir
    

    TensorBoardサーバーが起動し、ノートブックのインラインにユーザーインタフェースを表示します。新規タブでTensorBoardを開くリンクも提供されます。

    以下のスクリーンショットは、ログのディレクトリを指定して起動されたTensorBoardのUIです。

TensorBoardのnotebookモジュールを直接使用することで、TensorBoardを起動することもできます。

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

Databricksランタイム7.1以前でのTensorBoardの使用

ノートブックからTensorBoardを起動するには、dbutils.tensorboardユーティリティを使用します。

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

このコマンドを実行することで、クリックすると新規タブでTensorBoardが開くリンクが表示されます。

このAPIを用いて起動したTensorBoardは、dbutils.tensorboard.stop()で停止するか、クラスターを停止するまでは動作し続けます。

注意
DatabricksのライブラリとしてクラスターにTensorFlowをアタッチした場合には、TensorBoardを起動する前にノートブックを再度アタッチする必要があるかもしれません。

TensorBoardのログとディレクトリ

TensorBoardは、TensorBoardPyTorchのTensorBoardのコールバックと関数によって生成されるログを読み込むことで機械学習プログラムを可視化します。他の機械学習ライブラリのログを生成するには、TensorFlowのfile writerをもyいいて直接ログを書き出すことができます(TensorFlow 2.xに関してはModule: tf.summary、TensorFlow 1.xの古いAPIについてはModule: tf.compat.v1.summaryをご覧ください)。

エクスペリメントのログが適切に記録されていることを確実にするためには、クラスターの揮発的ファイルシステムではなく、DBFS(Databricksファイルシステム。すなわち/dbfs/配下のログディレクトリ)に保存することをお勧めします。それぞれのエクスペリメントごとに、TensorBoardはユニークなディレクトリの元で起動します。ご自身のエクスペリメント内の機械学習コードの実行ごとにログが生成されるように、TensorBoardのコールバックあるいはfile writerがエクスペリメントディレクトリのサブディレクトリに書き込みを行うように設定します。このようにすることで、TensorBoard UIのデータはコードの実行ごとに分離されます。

ご自身の機械学習プログラムの情報をTensorBoardを用いて記録するには、公式のTensorBoard documentationをご覧ください。

TensorBoardプロセスの管理

Databricksノートブック内で起動されたTensorBoardのプロセスは、ノートブックがデタッチされた際やREPLが再起動した際(例えば、ノートブックの状態をクリアした際)には停止されません。手動でTensorBoardのプロセスを停止するには、%sh kill -15 pidを用いて停止シグナルを送信します。TensorBoardプロセスを不適切に停止すると、notebook.list()を破損する可能性があります。

お使いのクラスターで動作しているTensorBoardサーバーの一覧を表示するには、TensorBoardノートブックモジュールから、対応するログディレクトリとプロセスIDを指定してnotebook.list()を実行します。

既知の問題

  • インラインのTensorBoard UIはiframeの中で動作します。リンクを新規タブで開かない場合、ブラウザのセキュリティ機能がUI内の外部リンクの動作を妨げる場合があります。
  • TensorBoardの--window_titleオプションはDatabricksで上書きされます。
  • デフォルトでは、TensorBoardはリッスンするポートを選択するためにポートレンジをスキャンします。クラスターで多くのTensorBoardプロセスが稼働していると、ポートレンジの全てのポートが利用できない場合があります。引数--portを用いてポート番号を指定することでこの制限を回避することができます。指定されるポートは6006と6106との間である必要があります。
  • リンクをどうさせるためには、TensorBoardを新規タブで開く必要があります。
  • TensorBoard 1.15.0を使用する際、Projectorタブはブランクとなります。ワークアラウンドとしては、Projectorページに直接アクセスします。URLの#projectordata/plugin/projector/projector_binary.htmlで置き換えます。
  • TensorBoard 2.4.0には、アップグレードした際にTensorBoardのレンダリングに影響を及ぼす既知の課題があります。

Databricks 無料トライアル

Databricks 無料トライアル

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?