TensorWatch - это инструмент отладки и визуализации, предназначенный для науки о данных, глубокого обучения и подкрепления в Microsoft Research. Он работает в ноутбуке Jupyter, чтобы показать визуализации в реальном времени вашего обучения машинного обучения и выполнить несколько других ключевых задач анализа для ваших моделей и данных.
TensorWatch предназначен для того, чтобы быть гибким и расширяемым, поэтому вы также можете создать свои собственные визуализации, интерфейсы и панели мониторинга. Помимо традиционного подхода «что-то, что-то, что-то-log», он также имеет уникальную возможность выполнять произвольные запросы против вашего процесса обучения в прямом эфире, вернуть поток в результате запроса и просмотреть этот поток, используя поток Ваш выбор визуализатора (мы называем этот ленивый режим ведения журнала).
TensorWatch находится под тяжелой разработкой с целью предоставления платформы для отладки машинного обучения в одном простых в использовании, расширяемом и взломанном пакете.

pip install tensorwatch
TensorWatch поддерживает Python 3.x и протестируется с помощью Pytorch 0,4-1.x. Большинство функций также должны работать с Tensorflow с нетерпением. TensorWatch использует GraphViz для создания сетевых диаграмм, а в зависимости от вашей платформы вам может потребоваться вручную установить его.
Вот простой код, который регистрирует целое число и квадрат в качестве кортежа каждую секунду в TensorWatch:
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)
Когда вы запустите этот код, вы заметите test.ipynb файла Notebook Jupyter.ipynb создается в папке сценария. В jupyter notebook типа командной строки и выберите test.ipynb . Выберите Cell> Запустите все в меню, чтобы увидеть график линии в реальном времени, так как значения записываются в вашем сценарии.
Вот вывод, который вы увидите в записной книжке Jupyter:

Чтобы глубже погрузиться в различные другие функции, см. Учебные пособия и записные книжки.
Когда вы пишете в поток TensorWatch, значения сериализуются и отправляются в сокет TCP/IP, а также указанный вами файл. Из ноутбука Jupyter мы загружаем ранее зарегистрированные значения из файла, а затем прослушиваем этот сокет TCP/IP для любых будущих значений. Визуализатор слушает поток и делает значения по мере их появления.
Хорошо, это очень упрощенное описание. Архитектура TensorWatch на самом деле намного мощнее. Почти все в TensorWatch - это поток . Файлы, розетки, консоли и даже визуализаторы сами являются потоками. Крутая вещь в TensorWatch Streams заключается в том, что они могут слушать любые другие потоки. Это позволяет TensorWatch создавать график потока данных . Это означает, что визуализатор может одновременно прослушать многие потоки, каждый из которых может быть файлом, розеткой или каким -либо другим потоком. Вы можете рекурсивно расширить это на создание произвольных графиков потока данных. TensorWatch отделяет потоки от того, как они хранятся и как они визуализируются.
В приведенном выше примере линейный график используется в качестве визуализации по умолчанию. Тем не менее, TensorWatch поддерживает многие другие типы диаграмм, включая гистограммы, круговые диаграммы, диаграммы рассеяния, барные диаграммы и 3D -версии многих из этих участков. Вы можете войти в систему своих данных, указать нужный тип диаграммы, и позвольте TensorWatch позаботиться об остальном.
Одной из значительных сильных сторон TensorWatch является возможность комбинировать, составлять и создавать пользовательские визуализации без усилий. Например, вы можете выбрать визуализацию произвольного количества потоков на том же графике. Или вы можете одновременно визуализировать один и тот же поток на многих разных участках. Или вы можете разместить произвольный набор визуализаций бок о бок. Вы даже можете создать свой собственный виджет визуализации, просто создав новый класс Python, внедрив несколько методов.
Каждый поток TensorWatch может содержать метрику по вашему выбору. По умолчанию TensorWatch сохраняет все потоки в одном файле, но вы также можете сохранить каждый поток в отдельных файлах или не сохранять их вообще (например, отправка потоков через розетки или непосредственно в консоли, нулевой удар на диск! ) Позже вы можете открыть эти потоки и направить их на одну или несколько визуализаций. Этот дизайн позволяет быстро сравнивать результаты ваших различных экспериментов по вашему выбору визуализаций.
Часто вы можете предпочесть анализ данных, обучение ML и тестирование - все из ноутбука Jupyter, а не из отдельного сценария. TensorWatch может помочь вам выполнить сложные визуализации в реальном времени из кода, который работает в ноутбуке Jupyter.
Уникальной особенностью в TensorWatch является возможность запросить процесс в прямом эфире, получить результат этого запроса в качестве потока и направить этот поток на вашу предпочтительную визуализацию. Вам не нужно заранее регистрировать какие -либо данные. Мы называем этот новый способ отладки и визуализации ленивым режимом журнала .
Например, как показано ниже, мы визуализируем пары ввода и вывода изображений, выбрасываемые случайным образом во время обучения автоэкодора в наборе данных фруктов. Эти изображения не были зарегистрированы заранее в сценарии. Вместо этого пользователь отправляет запрос как выражение Python Lambda, которое приводит к потоку изображений, который отображается в ноутбуке Jupyter:

Смотрите Lazy Logging Lutorial.
TensorWatch использует несколько отличных библиотек, включая Hiddenlayer, TorchStat, визуальную атрибуцию, позволяющую выполнять обычные действия отладки и анализа в одном последовательном пакете и интерфейсе.
Например, вы можете просмотреть график модели с тензорными формами с одной линией:

Вы можете просматривать статистику для различных слоев, таких как флопы, количество параметров и т. Д.

См. Записку.
Вы можете просмотреть набор данных в пространстве более низких размеров, используя такие методы, как t-sne:

См. Записку.
Мы хотим предоставить различные инструменты для объяснения прогнозов, чтобы помочь отладке моделей. В настоящее время мы предлагаем несколько объяснений для сверточных сетей, включая лайм. Например, в следующем подчеркивается области, которые заставляют модель Resnet50 сделать прогноз для класса 240 для набора данных ImageNet:

См. Записку.
Простой учебник по ведению журнала
Ленивый учебник по журналам
Использование TensorWatch для обучения глубокому обучению (MNIST)
Использование TensorWatch для глубокого обучения (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 или отправьте нам запрос на вытяжку. Пожалуйста, просмотрите код поведения Microsoft и узнайте больше.
Присоединяйтесь к группе TensorWatch на Facebook, чтобы оставаться в курсе или задавать любые вопросы.
TensorWatch использует несколько библиотек с открытым исходным кодом для многих своих функций. К ним относятся: Hiddenlayer, Torchstat, визуальное привлечение, Pyzmq, Receptivefield, Nbformat. Пожалуйста, см. В разделе install_requires в setup.py для списка дат.
Этот проект выпущен по лицензии MIT. Пожалуйста, просмотрите файл лицензии для получения более подробной информации.