README.md 14.2 KB
Newer Older
L
LaraStuStu 已提交
1 2
 [**English**](./README-en.md)

Y
YixinKristy 已提交
3

D
daminglu 已提交
4
<p align="center">
Y
YixinKristy 已提交
5
  <img src="https://raw.githubusercontent.com/PaddlePaddle/VisualDL/develop/frontend/packages/core/public/images/logo-visualdl.svg?sanitize=true" width="70%"/>
D
daminglu 已提交
6 7
</p>

L
LaraStuStu 已提交
8

P
Peter Pan 已提交
9 10 11 12 13 14 15 16
<p align="center">
<a href="https://travis-ci.org/PaddlePaddle/VisualDL"><img src="https://img.shields.io/travis/paddlepaddle/visualdl/develop?style=flat-square" alt="Build Status" /></a>
<a href="https://pypi.org/project/visualdl/"><img src="https://img.shields.io/pypi/v/visualdl?style=flat-square" alt="PyPI" /></a>
<a href="https://pypi.org/project/visualdl/#files"><img src="https://img.shields.io/pypi/dm/visualdl?style=flat-square" alt="Downloads" /></a>
<a href="https://github.com/PaddlePaddle/VisualDL/blob/develop/LICENSE"><img src="https://img.shields.io/github/license/paddlepaddle/visualdl?style=flat-square" alt="License" /></a>
</p>

<p align="center">
P
Peter Pan 已提交
17
<a href="https://jq.qq.com/?_wv=1027&k=TyzyVT4C" target="_blank" rel="noreferrer"><img src="https://img.shields.io/badge/QQ_Group-1045783368-52B6EF?style=social&logo=tencent-qq&logoColor=000&logoWidth=20" alt="QQ Group" /></a>
P
Peter Pan 已提交
18
</p>
Y
YixinKristy 已提交
19

20
## 介绍
Y
YixinKristy 已提交
21
VisualDL是飞桨可视化分析工具,以丰富的图表呈现训练参数变化趋势、模型结构、数据样本、高维数据分布等。可帮助用户更清晰直观地理解深度学习模型训练过程及模型结构,进而实现高效的模型优化。
D
daminglu 已提交
22

Y
YixinKristy 已提交
23
VisualDL提供丰富的可视化功能,支持实时训练参数分析、图结构、数据样本可视化及高维数据降维呈现等诸多功能。具体功能使用方式,请参见 [**VisualDL使用指南**](./docs/components/README.md)。项目正处于高速迭代中,敬请期待新组件的加入。
Q
Qiao Longfei 已提交
24

Y
YixinKristy 已提交
25
VisualDL原生支持python的使用, 通过在模型的Python配置中添加几行代码,便可为训练过程提供丰富的可视化支持。
D
daminglu 已提交
26

Y
YixinKristy 已提交
27
## 目录
D
daminglu 已提交
28

Y
YixinKristy 已提交
29
* [核心亮点](#核心亮点)
D
daminglu 已提交
30

Y
YixinKristy 已提交
31
* [安装方式](#安装方式)
D
daminglu 已提交
32

Y
YixinKristy 已提交
33
* [使用方式](#使用方式)
D
daminglu 已提交
34

Y
YixinKristy 已提交
35
* [可视化功能概览](#可视化功能概览)
D
daminglu 已提交
36

Y
YixinKristy 已提交
37
* [开源贡献](#开源贡献)
D
daminglu 已提交
38

Y
YixinKristy 已提交
39
* [更多细节](#更多细节)
D
daminglu 已提交
40 41


W
wuzewu 已提交
42

Y
YixinKristy 已提交
43
## 核心亮点
44

Y
YixinKristy 已提交
45
### 简单易用
D
daminglu 已提交
46

Y
YixinKristy 已提交
47
API设计简洁易懂,使用简单。模型结构一键实现可视化。
48

Y
YixinKristy 已提交
49
### 功能丰富
Q
Qiao Longfei 已提交
50

Y
YixinKristy 已提交
51 52 53 54 55
功能覆盖训练参数、数据样本、图结构及数据降维可视化。

### 高兼容性

全面支持Paddle、ONNX、Caffe等市面主流模型结构可视化,广泛支持各类用户进行可视化分析。
Y
YixinKristy 已提交
56 57 58 59

### 全面支持

与飞桨服务平台及工具组件全面打通,为您在飞桨生态系统中提供最佳使用体验。
Q
Qiao Longfei 已提交
60

61 62


Y
YixinKristy 已提交
63 64
## 安装方式

Y
YixinKristy 已提交
65
### 使用pip安装
66

67
```shell
P
Peter Pan 已提交
68
pip install --upgrade --pre visualdl
69
```
Y
YixinKristy 已提交
70 71 72 73 74 75 76 77 78
### 使用代码安装

```
git clone https://github.com/PaddlePaddle/VisualDL.git
cd VisualDL

python setup.py bdist_wheel
pip install --upgrade dist/visualdl-*.whl
```
Y
YixinKristy 已提交
79
需要注意,官方自2020年1月1日起不再维护Python2,为了保障代码可用性,VisualDL现仅支持Python3
Y
YixinKristy 已提交
80

Y
YixinKristy 已提交
81 82 83 84 85 86 87
## 使用方式

VisualDL将训练过程中的数据、参数等信息储存至日志文件中后,启动面板即可查看可视化结果。

### 1. 记录日志

VisualDL的后端提供了Python SDK,可通过LogWriter定制一个日志记录器,接口如下:
88

Y
YixinKristy 已提交
89
```python
90
class LogWriter(logdir=None,
Y
YixinKristy 已提交
91 92 93 94 95
                comment='',
                max_queue=10,
                flush_secs=120,
                filename_suffix='',
                write_to_disk=True,
96
                **kwargs)
97 98
```

Y
YixinKristy 已提交
99 100 101 102 103 104 105 106 107 108 109 110 111 112
#### 接口参数

| 参数            | 格式    | 含义                                                         |
| --------------- | ------- | ------------------------------------------------------------ |
| logdir          | string  | 日志文件所在的路径,VisualDL将在此路径下建立日志文件并进行记录,如果不填则默认为`runs/${CURRENT_TIME}` |
| comment         | string  | 为日志文件夹名添加后缀,如果制定了logdir则此项无效           |
| max_queue       | int     | 日志记录消息队列的最大容量,达到此容量则立即写入到日志文件   |
| flush_secs      | int     | 日志记录消息队列的最大缓存时间,达到此时间则立即写入到日志文件 |
| filename_suffix | string  | 为默认的日志文件名添加后缀                                   |
| write_to_disk   | boolean | 是否写入到磁盘                                               |

#### 示例

设置日志文件并记录标量数据:
D
daminglu 已提交
113 114 115 116

```python
from visualdl import LogWriter

Y
YixinKristy 已提交
117 118 119 120 121 122
# 在`./log/scalar_test/train`路径下建立日志文件
with LogWriter(logdir="./log/scalar_test/train") as writer:
    # 使用scalar组件记录一个标量数据
    writer.add_scalar(tag="acc", step=1, value=0.5678)
    writer.add_scalar(tag="acc", step=2, value=0.6878)
    writer.add_scalar(tag="acc", step=3, value=0.9878)
D
daminglu 已提交
123 124
```

Y
YixinKristy 已提交
125
### 2. 启动面板
D
daminglu 已提交
126

Y
YixinKristy 已提交
127
在上述示例中,日志已记录三组标量数据,现可启动VisualDL面板查看日志的可视化结果,共有两种启动方式:
Z
Zeyu Chen 已提交
128

Y
YixinKristy 已提交
129
#### 在命令行启动
Z
Zeyu Chen 已提交
130

Y
YixinKristy 已提交
131
使用命令行启动VisualDL面板,命令格式如下:
D
daminglu 已提交
132

Y
YixinKristy 已提交
133
```python
134
visualdl --logdir <dir_1, dir_2, ... , dir_n> --host <host> --port <port> --cache-timeout <cache_timeout> --language <language> --public-path <public_path> --api-only
D
daminglu 已提交
135
```
Y
YixinKristy 已提交
136 137 138

参数详情:

139 140 141
|      参数       |                                                                                             意义                                                                                             |
| --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| --logdir        | 设定日志所在目录,可以指定多个目录,VisualDL将遍历并且迭代寻找指定目录的子目录,将所有实验结果进行可视化                                                                                     |
走神的阿圆's avatar
走神的阿圆 已提交
142
| --model         | 设定模型文件路径(非文件夹路径),VisualDL将在此路径指定的模型文件进行可视化,目前可支持PaddlePaddle、ONNX、Keras、Core ML、Caffe等多种模型结构,详情可查看[graph支持模型种类](./docs/components/README.md#%E5%8A%9F%E8%83%BD%E6%93%8D%E4%BD%9C%E8%AF%B4%E6%98%8E-2)            |
143 144 145 146
| --host          | 设定IP,默认为`127.0.0.1`                                                                                                                                                                    |
| --port          | 设定端口,默认为`8040`                                                                                                                                                                       |
| --cache-timeout | 后端缓存时间,在缓存时间内前端多次请求同一url,返回的数据从缓存中获取,默认为20秒                                                                                                            |
| --language      | VisualDL面板语言,可指定为'en'或'zh',默认为浏览器使用语言                                                                                                                                   |
P
Peter Pan 已提交
147 148
| --public-path   | VisualDL面板URL路径,默认是'/app',即访问地址为'http://&lt;host&gt;:&lt;port&gt;/app'                                                                                                                    |
| --api-only      | 是否只提供API,如果设置此参数,则VisualDL不提供页面展示,只提供API服务,此时API地址为'http://&lt;host&gt;:&lt;port&gt;/&lt;public_path&gt;/api';若没有设置public_path参数,则默认为'http://&lt;host&gt;:&lt;port&gt;/api' |
Y
YixinKristy 已提交
149 150 151 152 153

针对上一步生成的日志,启动命令为:

```
visualdl --logdir ./log
D
daminglu 已提交
154 155
```

Y
YixinKristy 已提交
156 157 158
#### 在Python脚本中启动

支持在Python脚本中启动VisualDL面板,接口如下:
D
daminglu 已提交
159

160
```python
Y
YixinKristy 已提交
161 162 163 164 165
visualdl.server.app.run(logdir,
                        host="127.0.0.1",
                        port=8080,
                        cache_timeout=20,
                        language=None,
166 167
                        public_path=None,
                        api_only=False,
Y
YixinKristy 已提交
168 169 170
                        open_browser=False)
```

Y
YixinKristy 已提交
171 172 173
请注意:除`logdir`外,其他参数均为不定参数,传递时请指明参数名。

接口参数具体如下:
Y
YixinKristy 已提交
174

175 176 177
|     参数      |                       格式                       |                                                                                             含义                                                                                             |
| ------------- | ------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| logdir        | string或list[string_1, string_2, ... , string_n] | 日志文件所在的路径,VisualDL将在此路径下递归搜索日志文件并进行可视化,可指定单个或多个路径                                                                                                   |
走神的阿圆's avatar
走神的阿圆 已提交
178
| model         | string                                           | 模型文件路径(非文件夹路径),VisualDL将在此路径指定的模型文件进行可视化                                                                                                   |
179 180 181 182
| host          | string                                           | 指定启动服务的ip,默认为`127.0.0.1`                                                                                                                                                          |
| port          | int                                              | 启动服务端口,默认为`8040`                                                                                                                                                                   |
| cache_timeout | int                                              | 后端缓存时间,在缓存时间内前端多次请求同一url,返回的数据从缓存中获取,默认为20秒                                                                                                            |
| language      | string                                           | VisualDL面板语言,可指定为'en'或'zh',默认为浏览器使用语言                                                                                                                                   |
P
Peter Pan 已提交
183 184
| public_path   | string                                           | VisualDL面板URL路径,默认是'/app',即访问地址为'http://&lt;host&gt;:&lt;port&gt;/app'                                                                                                                    |
| api_only      | boolean                                          | 是否只提供API,如果设置此参数,则VisualDL不提供页面展示,只提供API服务,此时API地址为'http://&lt;host&gt;:&lt;port&gt;/&lt;public_path&gt;/api';若没有设置public_path参数,则默认为'http://&lt;host&gt;:&lt;port&gt;/api' |
185
| open_browser  | boolean                                          | 是否打开浏览器,设置为True则在启动后自动打开浏览器并访问VisualDL面板,若设置api_only,则忽略此参数                                                                                           |
186

Y
YixinKristy 已提交
187 188 189 190 191 192
针对上一步生成的日志,我们的启动脚本为:

```python
from visualdl.server import app

app.run(logdir="./log")
193
```
D
daminglu 已提交
194

Y
YixinKristy 已提交
195 196 197
在使用任意一种方式启动VisualDL面板后,打开浏览器访问VisualDL面板,即可查看日志的可视化结果,如图:

<p align="center">
Y
YixinKristy 已提交
198
  <img src="https://user-images.githubusercontent.com/48054808/82786044-67ae9880-9e96-11ea-8a2b-3a0951a6ec19.png" width="60%"/>
Y
YixinKristy 已提交
199 200 201 202 203 204 205 206 207 208 209 210 211 212
</p>



## 可视化功能概览

### Scalar
以图表形式实时展示训练过程参数,如loss、accuracy。让用户通过观察单组或多组训练参数变化,了解训练过程,加速模型调优。具有两大特点:

#### 动态展示

在启动VisualDL Board后,LogReader将不断增量的读取日志中数据并供前端调用展示,因此能够在训练中同步观测指标变化,如下图:

<p align="center">
213
  <img src="https://visualdl.bj.bcebos.com/images/dynamic_display.gif" width="60%"/>
Y
YixinKristy 已提交
214 215 216 217 218 219 220 221
</p>


#### 多实验对比

只需在启动VisualDL Board的时将每个实验日志所在路径同时传入即可,每个实验中相同tag的指标将绘制在一张图中同步呈现,如下图:

<p align="center">
222
  <img src="https://visualdl.bj.bcebos.com/images/multi_experiments.gif" width="100%"/>
Y
YixinKristy 已提交
223 224 225 226 227 228 229
</p>


### Image
实时展示训练过程中的图像数据,用于观察不同训练阶段的图像变化,进而深入了解训练过程及效果。

<p align="center">
230
<img src="https://visualdl.bj.bcebos.com/images/image-eye.gif" width="60%"/>
Y
YixinKristy 已提交
231 232
</p>

Y
YixinKristy 已提交
233 234 235 236 237 238 239
### Graph

一键可视化模型的网络结构。可查看模型属性、节点信息、节点输入输出等,并支持节点搜索,辅助用户快速分析模型结构与了解数据流向。
<p align="center">
<img src="https://user-images.githubusercontent.com/48054808/84483052-5acdd980-accb-11ea-8519-1608da7ee698.png" width="85%"/>
</p>

Y
YixinKristy 已提交
240 241 242 243 244 245

### High Dimensional

将高维数据进行降维展示,目前支持T-SNE、PCA两种降维方式,用于深入分析高维数据间的关系,方便用户根据数据特征进行算法优化。

<p align="center">
Y
YixinKristy 已提交
246
<img src="https://user-images.githubusercontent.com/48054808/82396340-3e4dd100-9a80-11ea-911d-798acdbc9c90.gif" width="85%"/>
Y
YixinKristy 已提交
247 248 249 250
</p>

## 开源贡献

P
Peter Pan 已提交
251 252 253
VisualDL 是由 [PaddlePaddle](https://www.paddlepaddle.org/)[ECharts](https://echarts.apache.org/) 合作推出的开源项目。
Graph 相关功能由 [Netron](https://github.com/lutzroeder/netron) 提供技术支持。
欢迎所有人使用,提意见以及贡献代码。
W
wuzewu 已提交
254 255


256
## 更多细节
W
wuzewu 已提交
257

Y
YixinKristy 已提交
258 259
想了解更多关于VisualDL可视化功能的使用详情介绍,请查看[**VisualDL使用指南**](./docs/components/README.md)

Y
YixinKristy 已提交
260
## 技术交流
Y
YixinKristy 已提交
261

P
Peter Pan 已提交
262
欢迎您加入VisualDL官方QQ群:1045783368 与飞桨团队以及其他用户共同针对VisualDL进行讨论与交流。
Y
YixinKristy 已提交
263 264 265 266

<p align="center">
<img src="https://user-images.githubusercontent.com/48054808/82522691-c2758680-9b5c-11ea-9aee-fca994aba175.png" width="20%"/>
</p>