TensorWatchは、Microsoft Researchからのデータサイエンス、ディープラーニング、強化学習向けに設計されたデバッグおよび視覚化ツールです。 Jupyterノートブックで動作し、機械学習トレーニングのリアルタイムの視覚化を示し、モデルとデータの他のいくつかの重要な分析タスクを実行します。
TensorWatchは、柔軟で拡張可能になるように設計されているため、独自のカスタム視覚化、UIS、およびダッシュボードを構築することもできます。伝統的な「what-you-see-is-what-you-log」アプローチに加えて、ライブMLトレーニングプロセスに対して任意のクエリを実行するユニークな機能もあります。 Visualizerの選択(この怠zyなロギングモードと呼ばれます)。
TensorWatchは、使いやすく、拡張可能な、ハッキング可能なパッケージで機械学習をデバッグするためのプラットフォームを提供することを目的として、激しい開発中です。

pip install tensorwatch
TensorWatchはPython 3.xをサポートし、Pytorch 0.4-1.xでテストされています。ほとんどの機能は、Tensorflow熱心なテンソルでも動作する必要があります。 TensorWatchはGraphVizを使用してネットワーク図を作成し、プラットフォームに応じて手動でインストールする必要がある場合があります。
整数とその正方形をテンソルウォッチに毎秒タプルとして記録する簡単なコードを次に示します。
import tensorwatch as tw
import time
# streams will be stored in test.log file
w = tw.Watcher(filename='test.log')
# create a stream for logging
s = w.create_stream(name='metric1')
# generate Jupyter Notebook to view real-time streams
w.make_notebook()
for i in range(1000):
# write x,y pair we want to log
s.write((i, i*i))
time.sleep(1)
このコードを実行すると、jupyterノートブックファイルtest.ipynbスクリプトフォルダーに作成されます。コマンドプロンプトからjupyter notebookを入力し、 test.ipynbを選択します。セル> [メニューですべてを実行]を選択して、値がスクリプトに書かれているようにリアルタイムの折れ線グラフを表示します。
Jupyterノートブックに表示される出力は次のとおりです。

他のさまざまな機能をさらに深く掘り下げるには、チュートリアルとノートブックを参照してください。
TensorWatchストリームに書き込むと、値がシリアル化され、指定したファイルと同様にTCP/IPソケットに送信されます。 Jupyter Notebookから、以前にログに記録された値をファイルから読み込み、将来の値に対してそのTCP/IPソケットを聴きます。 Visualizerはストリームに耳を傾け、到着時に値をレンダリングします。
わかりました、それは非常に簡素化された説明です。 TensorWatchアーキテクチャは、実際にははるかに強力です。テンソルウォッチのほとんどすべてがストリームです。ファイル、ソケット、コンソール、さらにはビジュアライザーもストリーム自体です。 Tensorwatchストリームのクールな点は、他のストリームを聴くことができることです。これにより、TensorWatchはデータフローグラフを作成できます。これは、Visualizerが多くのストリームを同時に聴くことができることを意味します。それぞれがファイル、ソケット、または他のストリームである可能性があります。これを再帰的に拡張して、任意のデータフローグラフを構築できます。 TensorWatchは、ストリームが保存方法と視覚化方法からのストリームを分離します。
上記の例では、折れ線グラフはデフォルトの視覚化として使用されます。ただし、TensorWatchは、これらのプロットの多くのヒストグラム、パイチャート、散布図、バーチャート、3Dバージョンなど、他の多くの図タイプをサポートしています。データを記録し、必要なチャートタイプを指定し、Tensorwatchに残りの世話をさせます。
TensorWatchの重要な強みの1つは、カスタムの視覚化を簡単に結合、構成、および作成する能力です。たとえば、同じプロットで任意の数のストリームを視覚化することを選択できます。または、同じストリームを多くの異なるプロットで同時に視覚化することもできます。または、視覚化の任意のセットを並べて配置することもできます。新しいPythonクラスを作成して、いくつかの方法を実装するだけで、独自のカスタムビジュアライゼーションウィジェットを作成することもできます。
各TensorWatchストリームには、選択したメトリックが含まれている場合があります。デフォルトでは、TensorWatchはすべてのストリームを単一のファイルに保存しますが、各ストリームを別々のファイルに保存するか、まったく保存しないことを選択することもできます(たとえば、ソケットやコンソールにストリームを直接送信して、ディスクにゼロヒットします。 )。後でこれらのストリームを開き、1つ以上の視覚化に向けることができます。この設計により、視覚化の選択におけるさまざまな実験の結果を簡単に簡単に比較できます。
多くの場合、データ分析、MLトレーニング、テストを行うことをお勧めします。すべては、別のスクリプトではなく、Jupyterノートブック内からすべてです。 TensorWatchは、Jupyterノートブックのエンドツーエンド内で実行されるコードから簡単に洗練されたリアルタイムの視覚化を行うのに役立ちます。
TensorWatchのユニークな機能は、ライブランニングプロセスを照会し、このクエリの結果をストリームとして取得し、このストリームを好みの視覚化に向ける機能です。事前にデータを記録する必要はありません。これをデバッグと視覚化の新しい方法と呼び、怠zyなロギングモードです。
たとえば、以下に示すように、フルーツデータセットでの自動エンコーダーのトレーニング中にランダムにサンプリングされた入力画像ペアと出力画像ペアを視覚化します。これらの画像は、スクリプトで事前に記録されていませんでした。代わりに、ユーザーはクエリをPython Lambda式として送信します。これにより、Jupyterノートブックに表示される画像のストリームが表示されます。

Lazy Loggingチュートリアルを参照してください。
TensorWatchは、HiddenLayer、Torchstat、視覚的帰属など、いくつかの優れたライブラリを活用して、1つの一貫したパッケージとインターフェイスで通常のデバッグおよび分析アクティビティを実行できるようにします。
たとえば、1ライナーでテンソル形状のモデルグラフを表示できます。

フロップ、パラメーターの数など、さまざまなレイヤーの統計を表示できます。

ノートブックを参照してください。
T-SNEなどの手法を使用して、データセットをより低い次元空間で表示できます。

ノートブックを参照してください。
モデルのデバッグを支援するために、予測を説明するためのさまざまなツールを提供したいと考えています。現在、ライムを含む畳み込みネットワークのいくつかの説明者を提供しています。たとえば、次のことは、ResNet50モデルにImagENETデータセットのクラス240の予測を作成する領域を強調しています。

ノートブックを参照してください。
簡単なロギングチュートリアル
怠惰なロギングチュートリアル
深い学習トレーニングにテンソルウォッチを使用する(MNIST)
深い学習トレーニングにテンソルウォッチを使用する(Food360)
T-SNEを使用したデータの調査
畳み込みニューラルネットワークの予測説明
モデルグラフと統計の表示
より技術的な詳細は、TensorWatch Paper(EICS 2019 Conference)で入手できます。これを引用してください:
@inproceedings{tensorwatch2019eics,
author = {Shital Shah and Roland Fernandez and Steven M. Drucker},
title = {A system for real-time interactive analysis of deep learning training},
booktitle = {Proceedings of the {ACM} {SIGCHI} Symposium on Engineering Interactive
Computing Systems, {EICS} 2019, Valencia, Spain, June 18-21, 2019},
pages = {16:1--16:6},
year = {2019},
crossref = {DBLP:conf/eics/2019},
url = {https://arxiv.org/abs/2001.01215},
doi = {10.1145/3319499.3328231},
timestamp = {Fri, 31 May 2019 08:40:31 +0200},
biburl = {https://dblp.org/rec/bib/conf/eics/ShahFD19},
bibsource = {dblp computer science bibliography, https://dblp.org}
}
貢献、フィードバック、質問、機能のリクエストが大好きです! githubの問題を提出するか、プルリクエストを送信してください。マイクロソフトの行動規範を確認し、詳細をご覧ください。
FacebookのTensorwatchグループに参加して、最新の状態を保つか、質問してください。
TensorWatchは、その多くの機能にいくつかのオープンソースライブラリを利用しています。これらには、HiddenLayer、Torchstat、Visual-Attribution、Pyzmq、受容フィールド、NBFormatが含まれます。日付リストまでのsetup.pyのinstall_requiresセクションを参照してください。
このプロジェクトは、MITライセンスの下でリリースされます。詳細については、ライセンスファイルを確認してください。