Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
FluidDoc
提交
2c2c20d8
F
FluidDoc
项目概览
PaddlePaddle
/
FluidDoc
通知
5
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
23
列表
看板
标记
里程碑
合并请求
111
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
F
FluidDoc
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
23
Issue
23
列表
看板
标记
里程碑
合并请求
111
合并请求
111
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
2c2c20d8
编写于
8月 04, 2020
作者:
Y
YixinKristy
提交者:
GitHub
8月 04, 2020
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update vdl2.0=document_preview (#2315)
上级
26019f3e
变更
2
展开全部
隐藏空白更改
内联
并排
Showing
2 changed file
with
738 addition
and
583 deletion
+738
-583
doc/fluid/user_guides/howto/evaluation_and_debugging/debug/visualdl.md
...r_guides/howto/evaluation_and_debugging/debug/visualdl.md
+195
-160
doc/fluid/user_guides/howto/evaluation_and_debugging/debug/visualdl_usage.md
...es/howto/evaluation_and_debugging/debug/visualdl_usage.md
+543
-423
未找到文件。
doc/fluid/user_guides/howto/evaluation_and_debugging/debug/visualdl.md
浏览文件 @
2c2c20d8
# VisualDL 工具简介
<p
align=
"center"
>
<img
src=
"http
s://raw.githubusercontent.com/PaddlePaddle/VisualDL/develop/docs/images/vs-logo.png"
width=
"60%"
/>
<img
src=
"http
://visualdl.bj.bcebos.com/images/vdl-logo.png"
width=
"70%"
/>
</p>
## 介绍
VisualDL是一个面向深度学习任务设计的可视化工具,包含了scalar、参数分布、模型结构、图像可视化等功能,项目正处于高速迭代中,新的组件会不断加入。
目前大多数DNN平台均使用Python作为配置语言,VisualDL原生支持python的使用,
通过在模型的Python配置中添加几行,便可以为训练过程提供丰富的可视化支持。
VisualDL是飞桨可视化分析工具,以丰富的图表呈现训练参数变化趋势、模型结构、数据样本、直方图、PR曲线及高维数据分布。可帮助用户更清晰直观地理解深度学习模型训练过程及模型结构,进而实现高效的模型优化。
除了Python SDK之外,VisualDL底层采用C++编写,其暴露的C++ SDK也可以集成到其他平台中,
实现原生的性能和定制效果。
具体功能使用方式请参见
**VisualDL使用指南**
。项目正处于高速迭代中,敬请期待新组件的加入。
## 组件
VisualDL 目前支持以下组件:
VisualDL支持浏览器种类:Chrome(81和83)、Safari 13、FireFox(77和78)、Edge(Chromium版)。
-
scalar
-
histogram
-
image
-
audio
-
graph
-
high dimensional
VisualDL原生支持python的使用, 通过在模型的Python配置中添加几行代码,便可为训练过程提供丰富的可视化支持。
### Scalar
可以用于展示训练测试的误差趋势
<p
align=
"center"
>
<img
src=
"https://raw.githubusercontent.com/daming-lu/large_files/master/loss_scalar.gif"
width=
"60%"
/>
</p>
##
# Histogram
##
目录
用于可视化任何tensor中元素分布的变化趋势
*
[
核心亮点
](
#核心亮点
)
*
[
安装方式
](
#安装方式
)
*
[
使用方式
](
#使用方式
)
*
[
可视化功能概览
](
#可视化功能概览
)
*
[
开源贡献
](
#开源贡献
)
*
[
更多细节
](
#更多细节
)
*
[
技术交流
](
#技术交流
)
<p
align=
"center"
>
<img
src=
"https://raw.githubusercontent.com/daming-lu/large_files/master/histogram.gif"
width=
"60%"
/>
</p>
### Image
可以用于可视化任何tensor,或模型生成的图片
<p
align=
"center"
>
<img
src=
"https://raw.githubusercontent.com/daming-lu/large_files/master/loss_image.gif"
width=
"60%"
/>
</p>
## 核心亮点
### Audio
可用于播放输入或生成的音频样本
### 简单易用
### Graph
API设计简洁易懂,使用简单。模型结构一键实现可视化。
VisualDL的graph支持paddle program的展示,同时兼容 ONNX(Open Neural Network Exchange)[https://github.com/onnx/onnx],通过与 python SDK的结合,VisualDL可以兼容包括 PaddlePaddle, pytorch, mxnet在内的大部分主流DNN平台。
### 功能丰富
<p
align=
"center"
>
<img
src=
"https://raw.githubusercontent.com/PaddlePaddle/VisualDL/develop/docs/images/graph_demo.gif"
width=
"60%"
/>
</p>
功能覆盖标量、数据样本、图结构、直方图、PR曲线及数据降维可视化。
要进行paddle模型的展示,需要进行以下两步操作:
### 高兼容性
1.
在paddle代码中,调用
`fluid.io.save_inference_model()`
接口保存模型
2.
在命令行界面,使用
`visualdl --model_pb [paddle_model_dir]`
加载paddle模型
全面支持Paddle、ONNX、Caffe等市面主流模型结构可视化,广泛支持各类用户进行可视化分析。
### 全面支持
### High Dimensional
用高维度数据映射在2D/3D来可视化嵌入
与飞桨服务平台及工具组件全面打通,为您在飞桨生态系统中提供最佳使用体验。
<p
align=
"center"
>
<img
src=
"https://raw.githubusercontent.com/PaddlePaddle/VisualDL/develop/docs/getting_started/high_dimensional_3d.png"
width=
"60%"
/>
</p>
## 快速尝试
请使用下面的命令,来快速测试 VisualDL。
## 安装方式
### 使用pip安装
```
shell
pip
install
--upgrade
--pre
visualdl
```
# 安装,建議是在虚拟环境或anaconda下。
pip install --upgrade visualdl
# 运行一个例子,vdl_create_scratch_log 将创建测试日志
vdl_create_scratch_log
visualdl --logdir=scratch_log --port=8080
### 使用代码安装
# 访问 http://127.0.0.1:8080
```
git clone https://github.com/PaddlePaddle/VisualDL.git
cd VisualDL
如果出现
`TypeError: __init__() got an unexpected keyword argument 'file'`
, 是因为protobuf不是3.5以上,运行
`pip install --upgrade protobuf`
就能解决。
python setup.py bdist_wheel
pip install --upgrade dist/visualdl-*.whl
```
需要注意,官方自2020年1月1日起不再维护Python2,为了保障代码可用性,VisualDL现仅支持Python3
如果以上步骤还有出现其他问题,很可能是因为python或pip不同版本或不同位置所致,以下安装方法能解决。
## 使用方式
## 使用 virtualenv 安装
VisualDL将训练过程中的数据、参数等信息储存至日志文件中后,启动面板即可查看可视化结果。
[
Virtualenv
](
https://virtualenv.pypa.io/en/stable/
)
能创建独立Python环境,也能确保Python和pip的相对位置正确。
### 1. 记录日志
在macOS上,安装pip和virtualenv如下:
```
sudo easy_install pip
pip install --upgrade virtualenv
```
VisualDL的后端提供了Python SDK,可通过LogWriter定制一个日志记录器,接口如下:
在Linux上,安装pip和virtualenv如下:
```
sudo apt-get install python3-pip python3-dev python-virtualenv
```
python
class
LogWriter
(
logdir
=
None
,
comment
=
''
,
max_queue
=
10
,
flush_secs
=
120
,
filename_suffix
=
''
,
write_to_disk
=
True
,
**
kwargs
)
```
然后创建一个虚拟环境:
#### 接口参数
| 参数 | 格式 | 含义 |
| --------------- | ------- | ------------------------------------------------------------ |
| logdir | string | 日志文件所在的路径,VisualDL将在此路径下建立日志文件并进行记录,如果不填则默认为
`runs/${CURRENT_TIME}`
|
| comment | string | 为日志文件夹名添加后缀,如果制定了logdir则此项无效 |
| max_queue | int | 日志记录消息队列的最大容量,达到此容量则立即写入到日志文件 |
| flush_secs | int | 日志记录消息队列的最大缓存时间,达到此时间则立即写入到日志文件 |
| filename_suffix | string | 为默认的日志文件名添加后缀 |
| write_to_disk | boolean | 是否写入到磁盘 |
#### 示例
设置日志文件并记录标量数据:
```
python
from
visualdl
import
LogWriter
# 在`./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
)
```
virtualenv ~/vdl # for Python2.7
virtualenv -p python3 ~/vdl for Python 3.x
### 2. 启动面板
在上述示例中,日志已记录三组标量数据,现可启动VisualDL面板查看日志的可视化结果,共有两种启动方式:
#### 在命令行启动
使用命令行启动VisualDL面板,命令格式如下:
```
python
visualdl
--
logdir
<
dir_1
,
dir_2
,
...
,
dir_n
>
--
host
<
host
>
--
port
<
port
>
--
cache
-
timeout
<
cache_timeout
>
--
language
<
language
>
--
public
-
path
<
public_path
>
--
api
-
only
```
```
~/vdl``` 是你的Virtualenv目录, 你也可以选择任一目录。
参数详情:
| 参数 | 意义 |
| --------------- | ------------------------------------------------------------ |
| --logdir | 设定日志所在目录,可以指定多个目录,VisualDL将遍历并且迭代寻找指定目录的子目录,将所有实验结果进行可视化 |
| --model | 设定模型文件路径(非文件夹路径),VisualDL将在此路径指定的模型文件进行可视化,目前可支持PaddlePaddle、ONNX、Keras、Core ML、Caffe等多种模型结构,详情可查看
[
graph支持模型种类
](
[https://github.com/PaddlePaddle/VisualDL/blob/develop/docs/components/README.md#Graph--%E7%BD%91%E7%BB%9C%E7%BB%93%E6%9E%84%E7%BB%84%E4%BB%B6](https://github.com/PaddlePaddle/VisualDL/blob/develop/docs/components/README.md#Graph--网络结构组件
)
) |
| --host | 设定IP,默认为
`127.0.0.1`
|
| --port | 设定端口,默认为
`8040`
|
| --cache-timeout | 后端缓存时间,在缓存时间内前端多次请求同一url,返回的数据从缓存中获取,默认为20秒 |
| --language | VisualDL面板语言,可指定为'EN'或'ZH',默认为浏览器使用语言 |
| --public-path | VisualDL面板URL路径,默认是'/app',即访问地址为'http://
<
host
>
:
<
port
>
/app' |
| --api-only | 是否只提供API,如果设置此参数,则VisualDL不提供页面展示,只提供API服务,此时API地址为'http://
<
host
>
:
<
port
>
/
<
public_path
>
/api';若没有设置public_path参数,则默认为'http://
<
host
>
:
<
port
>
/api' |
针对上一步生成的日志,启动命令为:
激活虚拟环境如下:
```
source ~/vdl/bin/activate
visualdl --logdir ./log
```
现在再安装 VisualDL 和运行范例:
#### 在Python脚本中启动
支持在Python脚本中启动VisualDL面板,接口如下:
```
python
visualdl
.
server
.
app
.
run
(
logdir
,
host
=
"127.0.0.1"
,
port
=
8080
,
cache_timeout
=
20
,
language
=
None
,
public_path
=
None
,
api_only
=
False
,
open_browser
=
False
)
```
pip install --upgrade visualdl
# 运行一个例子,vdl_create_scratch_log 将创建测试日志
vdl_create_scratch_log
visualdl --logdir=scratch_log --port=8080
请注意:除
`logdir`
外,其他参数均为不定参数,传递时请指明参数名。
接口参数具体如下:
# 访问 http://127.0.0.1:8080
| 参数 | 格式 | 含义 |
| ------------- | ------------------------------------------------ | ------------------------------------------------------------ |
| logdir | string或list[string_1, string_2, ... , string_n] | 日志文件所在的路径,VisualDL将在此路径下递归搜索日志文件并进行可视化,可指定单个或多个路径 |
| model | string | 模型文件路径(非文件夹路径),VisualDL将在此路径指定的模型文件进行可视化 |
| host | string | 指定启动服务的ip,默认为
`127.0.0.1`
|
| port | int | 启动服务端口,默认为
`8040`
|
| cache_timeout | int | 后端缓存时间,在缓存时间内前端多次请求同一url,返回的数据从缓存中获取,默认为20秒 |
| language | string | VisualDL面板语言,可指定为'en'或'zh',默认为浏览器使用语言 |
| public_path | string | VisualDL面板URL路径,默认是'/app',即访问地址为'http://
<host>
:
<port>
/app' |
| api_only | boolean | 是否只提供API,如果设置此参数,则VisualDL不提供页面展示,只提供API服务,此时API地址为'http://
<host>
:
<port>
/
<public_path>
/api';若没有设置public_path参数,则默认为http://
<host>
:
<port>
/api' |
| open_browser | boolean | 是否打开浏览器,设置为True则在启动后自动打开浏览器并访问VisualDL面板,若设置api_only,则忽略此参数 |
针对上一步生成的日志,我们的启动脚本为:
```
python
from
visualdl.server
import
app
app
.
run
(
logdir
=
"./log"
)
```
如果在虚拟环境下仍然遇到安装问题,请尝试以下方法。
在使用任意一种方式启动VisualDL面板后,打开浏览器访问VisualDL面板,即可查看日志的可视化结果,如图:
<p
align=
"center"
>
<img
src=
"https://user-images.githubusercontent.com/48054808/82786044-67ae9880-9e96-11ea-8a2b-3a0951a6ec19.png"
width=
"60%"
/>
</p>
## 使用 Anaconda 安装
Anaconda是一个用于科学计算的Python发行版,提供了包管理与环境管理的功能,可以很方便地解决多版本python并存、切换以及各种第三方包安装问题。
## 可视化功能概览
请根据[Anaconda下载网站](https://www.anaconda.com/download) 的指示去下载和安装Anaconda.
下载Python 3.6版本的command-Line installer.
### Scalar
以图表形式实时展示训练过程参数,如loss、accuracy。让用户通过观察单组或多组训练参数变化,了解训练过程,加速模型调优。具有两大特点:
创建conda环境名字为```vdl```或任何名字:
```
conda create -n vdl pip python=2.7 # or python=3.3, etc.
```
#### 动态展示
激活conda环境如下:
```
source activate vdl
```
在启动VisualDL后,LogReader将不断增量的读取日志中数据并供前端调用展示,因此能够在训练中同步观测指标变化,如下图:
现在再安装 VisualDL 和运行范例:
<p
align=
"center"
>
<img
src=
"http://visualdl.bj.bcebos.com/images/dynamic_display.gif"
width=
"60%"
/>
</p>
```
pip install --upgrade visualdl
# 运行一个例子,vdl_create_scratch_log 将创建测试日志
vdl_create_scratch_log
visualdl --logdir=scratch_log --port=8080
#### 多实验对比
# 访问 http://127.0.0.1:8080
```
只需在启动VisualDL时将每个实验日志所在路径同时传入即可,每个实验中相同tag的指标将绘制在一张图中同步呈现,如下图:
如果仍然遇到安装问题,请尝试以下用源代码安装方法。
<p
align=
"center"
>
<img
src=
"http://visualdl.bj.bcebos.com/images/multi_experiments.gif"
width=
"100%"
/>
</p>
### 使用代码安装
```
#建議是在虚拟环境或anaconda下。
git clone https://github.com/PaddlePaddle/VisualDL.git
cd VisualDL
python setup.py bdist_wheel
pip install --upgrade dist/visualdl-
*
.whl
```
### Image
实时展示训练过程中的图像数据,用于观察不同训练阶段的图像变化,进而深入了解训练过程及效果。
<p
align=
"center"
>
<img
src=
"http://visualdl.bj.bcebos.com/images/image-eye.gif"
width=
"60%"
/>
</p>
如果打包和安装遇到其他问题,不安装只想运行Visual DL可以看[这里](https://github.com/PaddlePaddle/VisualDL/blob/develop/docs/develop/how_to_dev_frontend_cn.md)
### Audio
实时查看训练过程中的音频数据,监控语音识别与合成等任务的训练过程。
## SDK
VisualDL 同时提供了python SDK 和 C++ SDK 来实现不同方式的使用。
<p
align=
"center"
>
<img
src=
"https://user-images.githubusercontent.com/48054808/89017647-38605000-d34d-11ea-9d75-7d10b9854c36.gif"
width=
"100%"
/>
</p>
### Python SDK
VisualDL 现在支持 Python 2和 Python 3。
以最简单的Scalar组件为例,尝试创建一个scalar组件并插入多个时间步的数据:
### Graph
```
python
import random
from visualdl import LogWriter
一键可视化模型的网络结构。可查看模型属性、节点信息、节点输入输出等,并支持节点搜索,辅助用户快速分析模型结构与了解数据流向。
<p
align=
"center"
>
<img
src=
"https://user-images.githubusercontent.com/48054808/84483052-5acdd980-accb-11ea-8519-1608da7ee698.png"
width=
"100%"
/>
</p>
logdir = "./tmp"
logger = LogWriter(logdir, sync_cycle=10000)
# mark the components with 'train' label.
with logger.mode("train"):
# create a scalar component called 'scalars/scalar0'
scalar0 = logger.scalar("scalars/scalar0")
### Histogram
# add some records during DL model running.
for step in range(100):
scalar0.add_record(step, random.random())
```
以直方图形式展示Tensor(weight、bias、gradient等)数据在训练过程中的变化趋势。深入了解模型各层效果,帮助开发者精准调整模型结构。
### C++ SDK
上面 Python SDK 中代码完全一致的C++ SDK用法如下
```
c++
#include <cstdlib>
#include <string>
#include "visualdl/sdk.h"
-
Offset模式
namespace vs = visualdl;
namespace cp = visualdl::components;
<p
align=
"center"
>
<img
src=
"https://user-images.githubusercontent.com/48054808/86551031-86647c80-bf76-11ea-8ec2-8c86826c8137.png"
width=
"100%"
/>
</p>
int main() {
const std::string dir = "./tmp";
vs::LogWriter logger(dir, 10000);
logger.SetMode("train");
auto tablet = logger.AddTablet("scalars/scalar0");
-
Overlay模式
cp::Scalar
<float>
scalar0(tablet);
<p
align=
"center"
>
<img
src=
"https://user-images.githubusercontent.com/48054808/86551033-882e4000-bf76-11ea-8e6a-af954c662ced.png"
width=
"100%"
/>
</p>
for (int step = 0; step < 1000; step++) {
float v = (float)std::rand() / RAND_MAX;
scalar0.AddRecord(step, v);
}
return 0;
}
```
## 启动Board
当训练过程中已经产生了日志数据,就可以启动board进行实时预览可视化信息
### PR Curve
```
visualdl --logdir
<some
log
dir
>
```
精度-召回率曲线,帮助开发者权衡模型精度和召回率之间的平衡,设定最佳阈值。
<p
align=
"center"
>
<img
src=
"https://user-images.githubusercontent.com/48054808/86738774-ee46c000-c067-11ea-90d2-a98aac445cca.png"
width=
"100%"
/>
</p>
### High Dimensional
board 还支持一下参数来实现远程的访问:
将高维数据进行降维展示,目前支持T-SNE、PCA两种降维方式,用于深入分析高维数据间的关系,方便用户根据数据特征进行算法优化。
- `--host` 设定IP
- `--port` 设定端口
- `-m / --model_pb` 指定 ONNX 格式的模型文件
<p
align=
"center"
>
<img
src=
"http://visualdl.bj.bcebos.com/images/high_dimensional_test.png"
width=
"100%"
/>
</p>
## 开源贡献
### 贡献
VisualDL 是由
[
PaddlePaddle
](
https://www.paddlepaddle.org/
)
和
[
ECharts
](
https://echarts.apache.org/
)
合作推出的开源项目。
Graph 相关功能由
[
Netron
](
https://github.com/lutzroeder/netron
)
提供技术支持。
欢迎所有人使用,提意见以及贡献代码。
VisualDL 是由 [PaddlePaddle](http://www.paddlepaddle.org/) 和
[ECharts](http://echarts.baidu.com/) 合作推出的开源项目。我们欢迎所有人使用,提意见以及贡献代码。
## 更多细节
想了解更多关于VisualDL的使用介绍,请查看[文档](https://github.com/PaddlePaddle/VisualDL/tree/develop/demo)
想了解更多关于VisualDL可视化功能的使用详情介绍,请查看
**VisualDL使用指南**
。
## 技术交流
欢迎您加入VisualDL官方QQ群:1045783368 与飞桨团队以及其他用户共同针对VisualDL进行讨论与交流。
\ No newline at end of file
doc/fluid/user_guides/howto/evaluation_and_debugging/debug/visualdl_usage.md
浏览文件 @
2c2c20d8
此差异已折叠。
点击以展开。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录