README.cn.md 7.4 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>

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

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

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

## 组件
20
VisualDL 目前支持以下组件:
Y
Yan Chunwei 已提交
21 22 23

- scalar
- histogram
24 25 26 27
- image
- audio
- graph
- high dimensional
Y
Yan Chunwei 已提交
28

29 30
### Scalar
可以用于展示训练测试的误差趋势
Y
Yan Chunwei 已提交
31 32

<p align="center">
33
<img src="https://raw.githubusercontent.com/daming-lu/large_files/master/loss_scalar.gif" width="60%"/>
Y
Yan Chunwei 已提交
34 35
</p>

36 37 38
### Histogram

用于可视化任何tensor中元素分布的变化趋势
Y
Yan Chunwei 已提交
39 40

<p align="center">
41
<img src="https://raw.githubusercontent.com/daming-lu/large_files/master/histogram.gif" width="60%"/>
Y
Yan Chunwei 已提交
42 43
</p>

44
### Image
Y
Yan Chunwei 已提交
45 46 47
可以用于可视化任何tensor,或模型生成的图片

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

51 52
### Audio
可用于播放输入或生成的音频样本
Y
Yan Chunwei 已提交
53

54
### Graph
W
wuzewu 已提交
55
VisualDL的graph支持paddle program的展示,同时兼容 ONNX(Open Neural Network Exchange)[https://github.com/onnx/onnx],通过与 python SDK的结合,VisualDL可以兼容包括 PaddlePaddle, pytorch, mxnet在内的大部分主流DNN平台。
Y
Yan Chunwei 已提交
56 57

<p align="center">
W
wuzewu 已提交
58
  <img src="https://raw.githubusercontent.com/PaddlePaddle/VisualDL/develop/docs/images/graph_demo.gif" width="60%" />
59 60
</p>

W
wuzewu 已提交
61 62 63 64 65
要进行paddle模型的展示,需要进行以下两步操作:

1. 在paddle代码中,调用`fluid.io.save_inference_model()`接口保存模型
2. 在命令行界面,使用`visualdl --model_pb [paddle_model_dir]` 加载paddle模型

66
### High Dimensional
W
wuzewu 已提交
67

68 69 70 71
用高维度数据映射在2D/3D来可视化嵌入

<p align="center">
<img src="https://raw.githubusercontent.com/PaddlePaddle/VisualDL/develop/docs/getting_started/high_dimensional_3d.png" width="60%"/>
Y
Yan Chunwei 已提交
72 73
</p>

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

Q
Qiao Longfei 已提交
77
```
78
# 安装,建議是在虚拟环境或anaconda下。
Q
Qiao Longfei 已提交
79 80
pip install --upgrade visualdl

81 82
# 运行一个例子,vdl_create_scratch_log 将创建测试日志
vdl_create_scratch_log
83
visualdl --logdir=scratch_log --port=8080
Q
Qiao Longfei 已提交
84 85 86 87

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

88 89 90
如果出现`TypeError: __init__() got an unexpected keyword argument 'file'`, 是因为protobuf不是3.5以上,运行`pip install --upgrade protobuf`就能解决。

如果以上步骤还有出现其他问题,很可能是因为python或pip不同版本或不同位置所致,以下安装方法能解决。
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126

## 使用 virtualenv 安装

[Virtualenv](https://virtualenv.pypa.io/en/stable/) 能创建独立Python环境,也能确保Python和pip的相对位置正确。

在macOS上,安装pip和virtualenv如下:
```
sudo easy_install pip
pip install --upgrade virtualenv
```

在Linux上,安装pip和virtualenv如下:
```
sudo apt-get install python3-pip python3-dev python-virtualenv
```

然后创建一个虚拟环境:
```
virtualenv ~/vdl  # for Python2.7
virtualenv -p python3 ~/vdl for Python 3.x
```

```~/vdl``` 是你的Virtualenv目录, 你也可以选择任一目录。

激活虚拟环境如下:
```
source ~/vdl/bin/activate
```

现在再安装 VisualDL 和运行范例:

```
pip install --upgrade visualdl

# 运行一个例子,vdl_create_scratch_log 将创建测试日志
vdl_create_scratch_log
127
visualdl --logdir=scratch_log --port=8080
128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158

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

如果在虚拟环境下仍然遇到安装问题,请尝试以下方法。


## 使用 Anaconda 安装

Anaconda是一个用于科学计算的Python发行版,提供了包管理与环境管理的功能,可以很方便地解决多版本python并存、切换以及各种第三方包安装问题。

请根据[Anaconda下载网站](https://www.anaconda.com/download) 的指示去下载和安装Anaconda.
下载Python 3.6版本的command-Line installer.

创建conda环境名字为```vdl```或任何名字:
```
conda create -n vdl pip python=2.7 # or python=3.3, etc.
```

激活conda环境如下:
```
source activate vdl
```

现在再安装 VisualDL 和运行范例:

```
pip install --upgrade visualdl

# 运行一个例子,vdl_create_scratch_log 将创建测试日志
vdl_create_scratch_log
159
visualdl --logdir=scratch_log --port=8080
160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178

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

如果仍然遇到安装问题,请尝试以下用源代码安装方法。

### 使用代码安装
```
#建議是在虚拟环境或anaconda下。
git clone https://github.com/PaddlePaddle/VisualDL.git
cd VisualDL

python setup.py bdist_wheel
pip install --upgrade dist/visualdl-*.whl
```

如果打包和安装遇到其他问题,不安装只想运行Visual DL可以看[这里](https://github.com/PaddlePaddle/VisualDL/blob/develop/docs/how_to_dev_frontend_en.md)


Y
Yan Chunwei 已提交
179 180
## SDK
VisualDL 同时提供了python SDK 和 C++ SDK 来实现不同方式的使用。
J
Jeff Wang 已提交
181

Y
Yan Chunwei 已提交
182
### Python SDK
J
Jeff Wang 已提交
183 184
VisualDL 现在支持 Python 2和 Python 3。

Y
Yan Chunwei 已提交
185 186 187 188 189 190 191
以最简单的Scalar组件为例,尝试创建一个scalar组件并插入多个时间步的数据:

```python
import random
from visualdl import LogWriter

logdir = "./tmp"
J
Jeff Wang 已提交
192
logger = LogWriter(logdir, sync_cycle=10000)
Y
Yan Chunwei 已提交
193 194 195 196 197

# 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 已提交
198

Y
Yan Chunwei 已提交
199 200 201
# add some records during DL model running.
for step in range(100):
    scalar0.add_record(step, random.random())
Y
Yan Chunwei 已提交
202 203 204 205 206 207 208 209 210 211
```

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

namespace vs = visualdl;
212
namespace cp = visualdl::components;
Y
Yan Chunwei 已提交
213 214 215

int main() {
  const std::string dir = "./tmp";
J
Jeff Wang 已提交
216
  vs::LogWriter logger(dir, 10000);
Q
Qiao Longfei 已提交
217

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

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

Y
Yan Chunwei 已提交
223 224 225 226 227 228 229 230 231 232 233 234
  for (int step = 0; step < 1000; step++) {
    float v = (float)std::rand() / RAND_MAX;
    scalar0.AddRecord(step, v);
  }

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

```
235
visualdl --logdir <some log dir>
Y
Yan Chunwei 已提交
236 237 238 239 240 241
```

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

- `--host` 设定IP
- `--port` 设定端口
242
- `-m / --model_pb` 指定 ONNX 格式的模型文件
D
daminglu 已提交
243 244 245

### 贡献

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



## 更多细节

想了解更多关于VisualDL的使用介绍,请查看[文档](https://github.com/PaddlePaddle/VisualDL/tree/develop/demo)