常用和不常用的可视化工具

netdata

netdata是一个用于服务器性能监控的开源工具,最大的特点就是酷炫和实时,当然安装也很方便。

我不是搞运维开发的,平时也不怎么用,就是偶尔打开服务器的监控页面赏心悦目一波。

netdata

LXDUI

lxdui是一个用于Linux容器技术LXD/LXC管理的Web UI工具。平时可以用来对容器进行管理,比如创建、克隆、移动、快照等等,还可以提供了容器信息查看、网络设置、快照管理、文件管理等功能,是挺方便的。

Tips:使用LXD建议写个脚本进行每周、每天和每时的快照备份。

LXD

LXD

LXD

LXD

TensorBoard和tensorboardX

TensorBoard

tensorboardX

TensorBoard是TensorFlow配套的可视化工具,用于TensorFlow程序的理解、调试和优化,可以可视化许多深度学习训练过程中的变量,支持的可视化元素包括scalar、image、audio、text、histogram等。

tensorboardX可以看成是支持PyTorch的TensorBoard,通过tensorboardX的API,PyTorch程序也可以将scalar、Image、figure、histogram、audio、text、graph等等元素通过summary的形式保存为文件,并通过Tensorboard打开进行查看。效果几乎是等同的。

日常用PyTorch搭配tensorboardX还是挺好使的。

tensorboard

Visdom

Visdom是FacebookResearch出的一个轻量和灵活的实时可视化工具,支持torch和numpy。

Visdom支持plotting(各种形式的数据图)、images、text的可视化。

Visdom我用过一两次,在别人的代码里也见过几次,就我的体验而言,Visdom的优点是:

  • 灵活:就跟MATLAB的plot窗口和OpenCV的imshow窗口一样,命名一个window,在window里实时显示信息即可。
  • 实时性:实际上visdom应该就是实时显示数据,而tensorboard是通过读取写入文件来显示的,所以,visdom的实时性很高,而tensorboard则是由刷新间隔的。
  • 支持的plot样式多:看git repo介绍,支持了好多诸如散点图(scatter)、line(线图)、heatmap(热度图)等好多样式的plot形式,这个很不错的,就等于有了MATLAB的可视化效果了。

但我不想用visdom的原因如下:

  • 界面的每个窗口可以通过拖动来排布,但是排版很难调整,真的太难了,逼死强迫症。
  • 虽然visdom支持了很多plotting样式,但是都是需要手动根据数据绘制的,很多情况下,我只是想看loss的曲线,tensorboard可以通过追加每次loss的方式来实现,而visdom则要通过记录loss历史,并绘制成曲线,才能通过像显示图像一样的形式显示曲线。有那么一丢丢的不优雅,可能是因为我懒,其实如果定义模板的话,绘图也不算难,归根到底还是上面那条窗口排布让我望而生畏。

visdom

Omniboard

我想想还有什么,还有就是上一篇讲的Sacred + Omniboard了。Sacred 深度学习实验管理工具

Sacred用起来也没那么麻烦的:

  • 要是从头写训练的框架么,就更好了,按照Sacred的逻辑,注意一下API就好。
  • 要是拿已有的框架来训练测试么,自己就重新定义一个程序入口,把参数用sacred记录一下,再重新跑到原来的程序入口上去,也就能够实现实验记录的效果了。

ominiboard

Ending

可视化工具就这么多了,平时跑服务器的话,调试代码就两个工具,也挺好使的:

  • Jupyter Notebook
  • Pycharm + SSH

唉,工具折腾了一大堆,挺开心的,论文笔记就是不高兴老老实实写,懒啊,愁啊。