TensorBoard

TensorBoard は、TensorFlow、PyTorch、Hugging Face Transformers、およびその他の機械学習プログラムをデバッグ、最適化、および理解するための一連の視覚化ツールです。

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 UI は、入力されたログ ディレクトリで開始されました

TensorBoard のノートブックモジュールを直接使用して TensorBoard を起動することもできます。

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

TensorBoard ログとディレクトリ

TensorBoard は、 TensorBoard コールバックによって生成されたログと TensorBoard または PyTorch の関数を読み取ることで、機械学習プログラムを視覚化します。 他の機械学習ライブラリのログを生成するには、TensorFlow ファイルライターを使用してログを直接書き込むことができます (TensorFlow 2.x のモジュール: tf.summary を参照し、TensorFlow 1.x の古い API については モジュール: tf.compat.v1.summary を参照してください)。

エクスペリメント ログを確実に格納するために、Databricks では、エフェメラル クラスター ファイル システムではなく、クラウド ストレージにログを書き込むことをお勧めします。 エクスペリメントごとに、一意のディレクトリで TensorBoard を起動します。 ログを生成するエクスペリメントで機械学習コードを実行するたびに、エクスペリメントディレクトリのサブディレクトリに書き込むように TensorBoard コールバックまたはファイルライターを設定します。 これにより、TensorBoard UI のデータが実行に分割されます。

TensorBoard を使用して機械学習プログラムの情報をログに記録するには、 公式の TensorBoard ドキュメントを お読みください。

TensorBoard プロセスの管理

Databricks ノートブック内で開始された TensorBoard プロセスは、ノートブックがデタッチされたり、REPL が再起動されたりしても (ノートブックの状態をクリアした場合など)、終了しません。 TensorBoard プロセスを手動で強制終了するには、 %sh kill -15 pidを使用して終了シグナルを送信します。 不適切に強制終了された TensorBoard プロセスは、 notebook.list()を破損する可能性があります。

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

既知の問題

  • インライン TensorBoard UI は iframe 内にあります。 ブラウザーのセキュリティ機能により、新しいタブでリンクを開かない限り、UI 内の外部リンクは機能しません。

  • TensorBoard の --window_title オプションは、Databricks でオーバーライドされます。

  • デフォルトでは、TensorBoard はリッスンするポートを選択するためにポート範囲をスキャンします。 クラスターで実行されている TensorBoard プロセスが多すぎる場合、ポート範囲内のすべてのポートが使用できない可能性があります。 この制限を回避するには、 --port 引数でポート番号を指定します。 指定するポートは 6006 から 6106 の間である必要があります。

  • ダウンロードリンクを機能させるには、タブでTensorBoardを開く必要があります。

  • TensorBoard 1.15.0 を使用している場合、プロジェクタータブは空白です。 回避策として、プロジェクターページに直接アクセスするには、URLの #projectordata/plugin/projector/projector_binary.htmlに置き換えることができます。

  • TensorBoard 2.4.0 には 既知の問題 があり、アップグレードすると TensorBoard のレンダリングに影響する可能性があります。

  • TensorBoard 関連のデータを DBFS または UC ボリュームに記録している場合、 No dashboards are active for the current data setのようなエラーが発生する可能性があります。 このエラーを解決するには、writerを使用してデータをログに記録した後、writer.flush()writer.close() を呼び出すことをお勧めします。これにより、ログに記録されたすべてのデータが適切に書き込まれ、TensorBoard でレンダリングできるようになります。