README.cn.md 4.1 KB
Newer Older
Q
Qiao Longfei 已提交
1 2 3 4 5
[![Build Status](https://travis-ci.org/PaddlePaddle/VisualDL.svg?branch=develop)](https://travis-ci.org/PaddlePaddle/VisualDL)
[![Documentation Status](https://img.shields.io/badge/docs-latest-brightgreen.svg?style=flat)](https://github.com/PaddlePaddle/VisualDL/tree/develop/docs)
[![Release](https://img.shields.io/github/release/PaddlePaddle/VisualDL.svg)](https://github.com/PaddlePaddle/VisualDL/releases)
[![License](https://img.shields.io/badge/license-Apache%202-blue.svg)](LICENSE)

D
daminglu 已提交
6
<p align="center">
T
Thuan Nguyen 已提交
7
  <img src="https://raw.githubusercontent.com/PaddlePaddle/VisualDL/develop/docs/images/vs-logo.png" width="60%" />
D
daminglu 已提交
8 9
</p>

T
Thuan Nguyen 已提交
10
#
Y
Yan Chunwei 已提交
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
## 介绍
VisualDL是一个面向深度学习任务设计的可视化工具,包含了scalar、参数分布、模型结构、图像可视化等功能,项目正处于高速迭代中,新的组件会不断加入。

目前大多数DNN平台均使用Python作为配置语言,VisualDL原生支持python的使用,
通过在模型的Python配置中添加几行,便可以为训练过程提供丰富的可视化支持。

除了Python SDK之外,VisualDL底层采用C++编写,其暴露的C++ SDK也可以集成到其他平台中,
实现原生的性能和定制效果。

## 组件
VisualDL 目前支持4种组件:

- graph
- scalar
- image
- histogram

### graph
兼容 ONNX(Open Neural Network Exchange)[https://github.com/onnx/onnx], 通过与 python SDK的结合,VisualDL可以兼容包括 PaddlePaddle, pytorch, mxnet在内的大部分主流DNN平台。

<p align="center">
T
Thuan Nguyen 已提交
32
  <img src="https://raw.githubusercontent.com/daming-lu/large_files/master/graph_demo.gif" width="60%" />
Y
Yan Chunwei 已提交
33 34 35 36 37 38
</p>

### scalar
可以用于展示训练测试的误差趋势

<p align="center">
T
Thuan Nguyen 已提交
39
<img src="https://raw.githubusercontent.com/daming-lu/large_files/master/loss_scalar.gif" width="60%"/>
Y
Yan Chunwei 已提交
40 41 42 43 44 45
</p>

### image
可以用于可视化任何tensor,或模型生成的图片

<p align="center">
T
Thuan Nguyen 已提交
46
<img src="https://raw.githubusercontent.com/daming-lu/large_files/master/loss_image.gif" width="60%"/>
Y
Yan Chunwei 已提交
47 48 49 50 51 52 53
</p>

### histogram

用于可视化任何tensor中元素分布的变化趋势

<p align="center">
T
Thuan Nguyen 已提交
54
<img src="https://raw.githubusercontent.com/daming-lu/large_files/master/histogram.gif" width="60%"/>
Y
Yan Chunwei 已提交
55 56
</p>

Q
Qiao Longfei 已提交
57
## 快速尝试
58 59
请使用下面的命令,来快速测试 VisualDL。

Q
Qiao Longfei 已提交
60
```
61
# 安装,建議是在虛擬環境下。
Q
Qiao Longfei 已提交
62 63
pip install --upgrade visualdl

64 65
# 运行一个例子,vdl_create_scratch_log 将创建测试日志
vdl_create_scratch_log
Q
Qiao Longfei 已提交
66 67 68 69 70
visualDL --logdir=scratch_log --port=8080

# 访问 http://127.0.0.1:8080
```

Y
Yan Chunwei 已提交
71 72 73 74 75 76 77 78 79 80
## SDK
VisualDL 同时提供了python SDK 和 C++ SDK 来实现不同方式的使用。
### Python SDK
以最简单的Scalar组件为例,尝试创建一个scalar组件并插入多个时间步的数据:

```python
import random
from visualdl import LogWriter

logdir = "./tmp"
J
Jeff Wang 已提交
81
logger = LogWriter(logdir, sync_cycle=10)
Y
Yan Chunwei 已提交
82 83 84 85 86

# mark the components with 'train' label.
with logger.mode("train"):
    # create a scalar component called 'scalars/scalar0'
    scalar0 = logger.scalar("scalars/scalar0")
Q
Qiao Longfei 已提交
87

Y
Yan Chunwei 已提交
88 89 90
# add some records during DL model running.
for step in range(100):
    scalar0.add_record(step, random.random())
Y
Yan Chunwei 已提交
91 92 93 94 95 96 97 98 99 100
```

### C++ SDK
上面 Python SDK 中代码完全一致的C++ SDK用法如下
```c++
#include <cstdlib>
#include <string>
#include "visualdl/sdk.h"

namespace vs = visualdl;
101
namespace cp = visualdl::components;
Y
Yan Chunwei 已提交
102 103 104 105

int main() {
  const std::string dir = "./tmp";
  vs::LogWriter logger(dir, 10);
Q
Qiao Longfei 已提交
106

Y
Yan Chunwei 已提交
107
  logger.SetMode("train");
108
  auto tablet = logger.AddTablet("scalars/scalar0");
Q
Qiao Longfei 已提交
109

Y
Yan Chunwei 已提交
110
  cp::Scalar<float> scalar0(tablet);
Q
Qiao Longfei 已提交
111

Y
Yan Chunwei 已提交
112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
  for (int step = 0; step < 1000; step++) {
    float v = (float)std::rand() / RAND_MAX;
    scalar0.AddRecord(step, v);
  }

  return 0;
}
```
## 启动Board
当训练过程中已经产生了日志数据,就可以启动board进行实时预览可视化信息

```
visualDL --logdir <some log dir>
```

board 还支持一下参数来实现远程的访问:

- `--host` 设定IP
- `--port` 设定端口
- `--model_pb` 指定 ONNX 格式的模型文件
D
daminglu 已提交
132 133 134 135


### 贡献

Q
Qiao Longfei 已提交
136 137
VisualDL 是由 [PaddlePaddle](http://www.paddlepaddle.org/)
[ECharts](http://echarts.baidu.com/) 合作推出的开源项目。我们欢迎所有人使用,提意见以及贡献代码。