TensorWatch es una herramienta de depuración y visualización diseñada para ciencia de datos, aprendizaje profundo y aprendizaje de refuerzo de Microsoft Research. Funciona en el cuaderno de Jupyter para mostrar visualizaciones en tiempo real de su capacitación en aprendizaje automático y realizar varias otras tareas de análisis clave para sus modelos y datos.
TensorWatch está diseñado para ser flexible y extensible para que también pueda construir sus propias visualizaciones personalizadas, UI y paneles. Además del enfoque tradicional de "lo que tú-vea lo que te-te-lo-log, también tiene una capacidad única para ejecutar consultas arbitrarias contra su proceso de capacitación de ML en vivo, devolver una transmisión como resultado de la consulta y ver esta transmisión utilizando Su elección de un visualizador (llamamos a este modo de registro perezoso).
TensorWatch está bajo un gran desarrollo con el objetivo de proporcionar una plataforma para depurar el aprendizaje automático en un paquete fácil de usar, extensible y hackable.

pip install tensorwatch
TensorWatch admite Python 3.x y se prueba con Pytorch 0.4-1.x. La mayoría de las características también deberían funcionar con TensorFlow Asey Tensors. TensorWatch utiliza GraphViz para crear diagramas de red y, dependiendo de su plataforma, en algún momento es posible que necesite instalarlo manualmente.
Aquí hay un código simple que registra un entero y su cuadrado como tupla cada segundo para 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)
Cuando ejecute este código, notará un archivo de cuaderno Jupyter test.ipynb se crea en su carpeta de script. Desde un símbolo del símbolo del sistema, escriba jupyter notebook y seleccione test.ipynb . Elija Cell> Ejecute todo en el menú para ver el gráfico de línea en tiempo real a medida que los valores se escriben en su script.
Aquí está el resultado que verá en Jupyter Notebook:

Para sumergirse más en las otras características, consulte tutoriales y cuadernos.
Cuando escribe en una transmisión TensorWatch, los valores se serializan y se envían a un socket TCP/IP, así como al archivo que especificó. Desde el cuaderno Jupyter, cargamos los valores registrados previamente del archivo y luego escuchamos ese socket TCP/IP para cualquier valor futuro. El visualizador escucha la transmisión y hace que los valores lleguen a medida que llegan.
Ok, esa es una descripción muy simplificada. La arquitectura TensorWatch es en realidad mucho más poderosa. Casi todo en TensorWatch es una transmisión . Los archivos, enchufes, consolas e incluso visualizadores son transmisiones. Una cosa genial de TensorWatch Streams es que pueden escuchar cualquier otra transmisión. Esto permite que TensorWatch cree un gráfico de flujo de datos . Esto significa que un visualizador puede escuchar muchas transmisiones simultáneamente, cada una de las cuales podría ser un archivo, un socket o algún otro flujo. Puede extender esto recursivamente para crear gráficos de flujo de datos arbitrarios. TensorWatch Decoupples transmite cómo se almacenan y cómo se visualizan.
En el ejemplo anterior, el gráfico de línea se usa como visualización predeterminada. Sin embargo, TensorWatch admite muchos otros tipos de diagramas que incluyen histogramas, gráficos circulares, gráficos de dispersión, gráficos de barras y versiones 3D de muchas de estas parcelas. Puede registrar sus datos, especificar el tipo de gráfico que desee y dejar que TensorWatch se encargue del resto.
Una de las fortalezas significativas de TensorWatch es la capacidad de combinar, componer y crear visualizaciones personalizadas sin esfuerzo. Por ejemplo, puede elegir visualizar un número arbitrario de transmisiones en la misma trama. O puede visualizar la misma transmisión en muchas gráficas diferentes simultáneamente . O puede colocar un conjunto arbitrario de visualizaciones lado a lado. Incluso puede crear su propio widget de visualización personalizado simplemente creando una nueva clase de Python, implementando algunos métodos.
Cada flujo de TensorWatch puede contener una métrica de su elección. De forma predeterminada, TensorWatch guarda todas las transmisiones en un solo archivo, pero también puede optar por guardar cada transmisión en archivos separados o no guardarlas (por ejemplo, enviando transmisiones a través de los enchufes o en la consola directamente, ¡cero golpear al disco! ). Más tarde, puede abrir estas transmisiones y dirigirlas a una o más visualizaciones. Este diseño le permite comparar rápidamente los resultados de sus diferentes experimentos en su elección de visualizaciones fácilmente.
A menudo, puede preferir realizar análisis de datos, capacitación de ML y pruebas, todo desde el cuaderno de Jupyter en lugar de desde un script separado. TensorWatch puede ayudarlo a hacer visualizaciones sofisticadas y en tiempo real sin esfuerzo desde el código que se ejecuta dentro de un cuaderno Jupyter de extremo a extremo.
Una característica única en TensorWatch es la capacidad de consultar el proceso de ejecución en vivo, recuperar el resultado de esta consulta como una transmisión y dirigir esta transmisión a sus visualizaciones preferidas. No necesita registrar ningún dato de antemano. Llamamos a esta nueva forma de depuración y visualización un modo de registro perezoso .
Por ejemplo, como se ve a continuación, visualizamos pares de imágenes de entrada y salida, muestreadas aleatoriamente durante el entrenamiento de un autoencoder en un conjunto de datos de frutas. Estas imágenes no se registraron de antemano en el script. En cambio, el usuario envía consultas como una expresión de lambda de Python que da como resultado un flujo de imágenes que se muestran en el cuaderno Jupyter:

Ver Tutorial de registro perezoso.
TensorWatch aprovecha varias bibliotecas excelentes que incluyen HiddenLayer, TorchStat, Visual Attribution para permitir la realización de actividades habituales de depuración y análisis en un paquete e interfaz consistentes.
Por ejemplo, puede ver el gráfico de modelo con formas de tensor con una línea de una sola:

Puede ver estadísticas para diferentes capas, como flops, número de parámetros, etc.:

Ver cuaderno.
Puede ver el conjunto de datos en un espacio dimensional inferior utilizando técnicas como T-SNE:

Ver cuaderno.
Deseamos proporcionar varias herramientas para explicar predicciones para ayudar a la depuración de los modelos. Actualmente, ofrecemos varios explicadores para las redes convolucionales, incluida la cal. Por ejemplo, lo siguiente destaca las áreas que hacen que el modelo ResNet50 haga una predicción para la clase 240 para el conjunto de datos de ImageNet:

Ver cuaderno.
Tutorial de registro simple
Tutorial de registro perezoso
Uso de TensorWatch para el entrenamiento de aprendizaje profundo (MNIST)
Uso de TensorWatch para entrenamiento de aprendizaje profundo (Food360)
Explorando datos utilizando T-SNE
Explicantes de predicción para redes neuronales convolucionales
Visualización del gráfico del modelo y estadísticas
Hay más detalles técnicos disponibles en TensorWatch Paper (Conferencia EICS 2019). Por favor cita esto como:
@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}
}
¡Nos encantaría sus contribuciones, comentarios, preguntas y solicitudes de funciones! Por favor presente un problema de GitHub o envíenos una solicitud de extracción. Revise el código de conducta de Microsoft y obtenga más.
Únase al grupo TensorWatch en Facebook para mantenerse al día o hacer cualquier pregunta.
TensorWatch utiliza varias bibliotecas de código abierto para muchas de sus características. Estos incluyen: HiddenLayer, Torchstat, Visual-Attribution, Pyzmq, ReceptiveField, NBFormat. Consulte la sección install_requires en Setup.py para obtener una lista de fechas.
Este proyecto se publica bajo la licencia MIT. Revise el archivo de licencia para obtener más detalles.