快速入门

VisualDL 是一个面向深度学习任务的可视化工具,可用于训练和生成任务里相关信息的展示。目前,VisualDL支持如下信息的可视化:

  • scalar,趋势图,可用于训练测试误差的展示
  • image, 图片的可视化,可用于卷积层或者其他参数的图形化展示
  • audio, 可用于播放输入或生成的音频样本
  • histogram, 用于参数分布及变化趋势的展示
  • graph,用于训练模型结构的可视化
  • high dimensional, 用于可视化高纬度数据来展示物件相关性VisualDL提供原生的Python和C++ SDK,可以支持多种深度学习平台。用户可以在特定深度学习平台上利用Python SDK进行简单配置来支持可视化,也可以利用 C++ SDK深入嵌入到平台底层。

一个简单的Scalar的Python使用示例

为了简单,我们先尝试使用Python SDK。

使用VisualDL的第一步是创建一个 LogWriter 来存储用于可视化的数据

  1. from VisualDL import LogWriter
  2. from random import random
  3.  
  4. logw = LogWriter("./random_log", sync_cycle=10000)

其中, 第一个参数指定存储数据的目录;第二个参数 sync_cycle 指定多少次写操作执行一次内存到磁盘的数据持久化。

sync_cycle

写IO是一项繁重的工作。设置sync_cycle太低可能会减慢你的训练。我们建议将 sync_cycle 设置为约要捕捉的数据点的两倍。

模型训练会有不同的模式,比如训练、验证、测试等,这些对应到 VisualDL中就是 mode,可以用如下方式指定一个训练模式

  1. with logw.mode("train") as logger:
  2. pass

接着是创建一个 Scalar 组件,每个组件需要一个tag,tag可以是任何长度的字符串,比如 layer/classification/error

  1. # create scalars in mode train and test.
  2. with logw.mode('train') as logger:
  3. scalar0 = logger.scalar("scratch/scalar")
  4.  
  5. with logw.mode('test') as logger:
  6. scalar1 = logger.scalar("scratch/scalar")
  7.  
  8. # add scalar records.
  9. for step in range(200):
  10. scalar0.add_record(step, step * 1. / 200)
  11. scalar1.add_record(step, 1. - step * 1. / 200)

上述例子生成了一段随机日志,接下来可以打开board页面:

  1. visualdl --logdir ./random_log --port 8080

之后用浏览器打开地址 http://0.0.0.0:8080,就可以看到scalar下的可视化结果

快速入门 - 图1

scalar的C++ 示例

VisualDL 的 C++ SDK 与 Python 的基本一致,上面Python示例对应的C++代码如下

  1. const auto dir = "./randomlog";
  2. LogWriter logwriter(dir, 30);
  3. auto logger = logwriter.AsMode("train");
  4.  
  5. components::Scalar<float> scalar0(writer.AddTablet("scalar0"));
  6. components::Scalar<float> scalar1(writer.AddTablet("scalar1"));
  7.  
  8. for (int step = 0; step < 200; step++) {
  9. scalar0.AddRecord(step, step * 1. / 200);
  10. scalar1.AddRecord(step, 1. - step * 1. / 200);
  11. }

基于 ONNX 的模型结构可视化

VisualDL 支持开源的 ONNX模型结构的可视化,目前ONNX支持包括 pytorch, Caffe2, Caffe, MxNet 在内的多种深度学习平台的模型结构的转化。

  1. visualdl --logdir somedir --model_pb <path_to_onnx_model>

比如mnist,会得到如下graph

快速入门 - 图2

请参阅 ONNX教程如何出口ONNX格式模型。

VisualDL的图形系统采用GraphViz来可视化ONNX格式模型。请安装 GraphViz确保VisualDL图形系统可以启动