常用和不常用的可视化工具
netdata
netdata 是一个用于服务器性能监控的开源工具,最大的特点就是酷炫和实时,当然安装也很方便。
我不是搞运维开发的,平时也不怎么用,就是偶尔打开服务器的监控页面赏心悦目一波。
LXDUI
lxdui 是一个用于 Linux 容器技术 LXD/LXC 管理的 Web UI 工具。平时可以用来对容器进行管理,比如创建、克隆、移动、快照等等,还可以提供了容器信息查看、网络设置、快照管理、文件管理等功能,是挺方便的。
Tips:使用 LXD 建议写个脚本进行每周、每天和每时的快照备份。
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 还是挺好使的。
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 历史,并绘制成曲线,才能通过像显示图像一样的形式显示曲线。有那么一丢丢的不优雅,可能是因为我懒,其实如果定义模板的话,绘图也不算难,归根到底还是上面那条窗口排布让我望而生畏。
Omniboard
我想想还有什么,还有就是上一篇讲的 Sacred + Omniboard 了。Sacred 深度学习实验管理工具。
Sacred 用起来也没那么麻烦的:
- 要是从头写训练的框架么,就更好了,按照 Sacred 的逻辑,注意一下 API 就好。
- 要是拿已有的框架来训练测试么,自己就重新定义一个程序入口,把参数用 sacred 记录一下,再重新跑到原来的程序入口上去,也就能够实现实验记录的效果了。
Ending
可视化工具就这么多了,平时跑服务器的话,调试代码就两个工具,也挺好使的:
- Jupyter Notebook
- Pycharm + SSH
唉,工具折腾了一大堆,挺开心的,论文笔记就是不高兴老老实实写,懒啊,愁啊。