diff --git a/README.md b/README.md index 324f256e282c8adb0ff7ce1f516a7a9a4de30619..723e97b5ec0bfa356af6e15a55933717a5f97156 100644 --- a/README.md +++ b/README.md @@ -1,126 +1,218 @@ +

- +

-[![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) + ## 介绍 -VisualDL是一个面向深度学习任务设计的可视化工具,利用丰富的图表展示数据,用户可以更直观、清晰地查看数据的特征与变化趋势,有助于分析数据、及时发现错误,进而改进神经网络模型的设计。 +VisualDL是深度学习模型可视化分析工具,以丰富的图表呈现训练参数变化趋势、模型结构、数据样本、高维数据分布等。可帮助用户更清晰直观地理解深度学习模型训练过程及模型结构,进而实现高效的模型优化。 -目前,VisualDL支持Scalar, Image, High Dimensional, Graph 这四个组件,项目正处于高速迭代中,新的组件会不断加入。 +VisualDL提供丰富的可视化功能,支持实时训练参数分析、图结构、数据样本可视化及高维数据降维呈现等诸多功能。具体功能使用方式,请参见 [**VisualDL使用指南**](https://github.com/PaddlePaddle/VisualDL/tree/develop/docs/components/README.md)。项目正处于高速迭代中,敬请期待新组件的加入。 -由于大多数DNN平台均使用Python作为配置语言,VisualDL原生支持python的使用, -通过在模型的Python配置中添加几行,便可以为训练过程提供丰富的可视化支持。 +VisualDL原生支持python的使用, 通过在模型的Python配置中添加几行代码,便可为训练过程提供丰富的可视化支持。 +## 目录 -## 组件 -VisualDL 目前支持以下组件: +* [核心亮点](#核心亮点) -- scalar -- image -- high dimensional -- graph +* [安装方式](#安装方式) -### Scalar -可以用于展示训练测试的指标变化趋势 +* [使用方式](#使用方式) -

- -

+* [可视化功能概览](#可视化功能概览) +* [开源贡献](#开源贡献) -### Image -可以用于可视化任何图片,包括模型训练和预测得到的结果 +* [更多细节](#更多细节) -

- -

-### High Dimensional -可以用于将高维度数据映射到2D/3D可实现可视化 +## 核心亮点 -

- -

+### 简单易用 -## 安装 -### 使用 Anaconda 安装 +API设计简洁易懂,使用简单。模型结构一键实现可视化。 -Anaconda是一个用于科学计算的Python发行版,提供了包管理与环境管理的功能,可以很方便地解决多版本python并存、切换以及各种第三方包安装问题。 +### 功能丰富 -请根据[Anaconda下载网站](https://www.anaconda.com/download) 的指示去下载和安装Anaconda. -下载Python 3.6版本的command-Line installer. +功能覆盖训练参数、图结构、数据样本及数据降维可视化。 + +### 高兼容性 + +全面支持Paddle、ONNX、Caffe等市面主流模型结构可视化,广泛支持各类用户进行可视化分析。 + +### 全面支持 + +与飞桨服务平台及工具组件全面打通,为您在飞桨生态系统中提供最佳使用体验。 -创建conda环境名字为```vdl```或任何名字: -``` -conda create -n vdl python=3.7 -``` -激活conda环境如下: -``` -source activate vdl -``` -现在再安装 VisualDL 和运行范例: +## 安装方式 + +使用pip安装 VisualDL 运行范例: ```shell -pip install --upgrade visualdl +pip install --upgrade visualdl==2.0.0a2 ``` -也可以使用源代码安装方式,能够获取最新的VisualDL更新。 -### 使用代码安装 -建议在anaconda环境下进行安装。 -```shell -git clone https://github.com/PaddlePaddle/VisualDL.git -cd VisualDL +## 使用方式 + +VisualDL将训练过程中的数据、参数等信息储存至日志文件中后,启动面板即可查看可视化结果。 + +### 1. 记录日志 + +VisualDL的后端提供了Python SDK,可通过LogWriter定制一个日志记录器,接口如下: -python setup.py bdist_wheel -pip install --upgrade dist/visualdl-*.whl +```python +class LogWriter( + logdir=None, + comment='', + max_queue=10, + flush_secs=120, + filename_suffix='', + write_to_disk=True, + **kwargs + ) ``` -## SDK -以最简单的Scalar组件为例,尝试创建一个日志记录多个scalar的数据步骤如下: +#### 接口参数 + +| 参数 | 格式 | 含义 | +| --------------- | ------- | ------------------------------------------------------------ | +| 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 -with LogWriter(logdir="./tmp") as writer: - for step in range(100): - writer.add_scalar(step=step, value=step*2) +# 在`./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) ``` +### 2. 启动面板 -## 启动VisualDL服务 +在上述示例中,日志已记录三组标量数据,现可启动VisualDL面板查看日志的可视化结果,共有两种启动方式: -当训练过程中已经产生了日志数据,就可以启动VisualDL服务进行实时预览可视化信息。 +#### 在命令行启动 -### 在命令行中启动 +使用命令行启动VisualDL面板,命令格式如下: +```python +visualdl --logdir --host --port ``` -visualdl --logdir + +参数详情: + +| 参数 | 意义 | +| -------- | ------------------------------------------------------------ | +| --logdir | 设定日志所在目录,可以指定多个目录,VisualDL将遍历并且迭代寻找指定目录的子目录,将所有实验结果进行可视化 | +| --host | 设定IP,默认为`127.0.0.1` | +| --port | 设定端口,默认为`8040` | + +针对上一步生成的日志,启动命令为: + +``` +visualdl --logdir ./log ``` -board 还支持一些参数来实现远程的访问: +#### 在Python脚本中启动 + +支持在Python脚本中启动VisualDL面板,接口如下: -- `--host` 设定IP -- `--port` 设定端口 -### 在Python脚本中启动 ```python ->>> from visualdl.server import app +visualdl.server.app.run(logdir, + host="127.0.0.1", + port=8080, + cache_timeout=20, + language=None, + open_browser=False) +``` + +接口参数: + +| 参数 | 格式 | 含义 | +| ------------- | ------------------------------------------------ | ------------------------------------------------------------ | +| logdir | string或list[string_1, string_2, ... , string_n] | 日志文件所在的路径,VisualDL将在此路径下递归搜索日志文件并进行可视化,可指定单个或多个路径 | +| host | string | 指定启动服务的ip,默认为`127.0.0.1` | +| port | int | 启动服务端口,默认为`8040` | +| cache_timeout | int | 后端缓存时间,在缓存时间内前端多次请求同一url,返回的数据从缓存中获取,默认为20秒 | +| language | string | VisualDL面板语言,可指定为'EN'或'CN',默认自动匹配操作系统使用语言 | +| open_browser | boolean | 是否打开浏览器,设置为True则在启动后自动打开浏览器并访问VisualDL面板 | ->>> app.run(logdir="SOME_LOG_DIR") +针对上一步生成的日志,我们的启动脚本为: + +```python +from visualdl.server import app + +app.run(logdir="./log") ``` -`app.run()`支持命令行启动的所有参数,除此之外,还可以通过指定`open_browser=True`,自动打开浏览器。 -## 贡献 -VisualDL 是由 [PaddlePaddle](http://www.paddlepaddle.org/) 和 [ECharts](http://echarts.baidu.com/) 合作推出的开源项目。我们欢迎所有人使用,提意见以及贡献代码。 +在使用任意一种方式启动VisualDL面板后,打开浏览器访问VisualDL面板,即可查看日志的可视化结果,如图: + +

+ +

+ + + +## 可视化功能概览 + +### Scalar +以图表形式实时展示训练过程参数,如loss、accuracy。让用户通过观察单组或多组训练参数变化,了解训练过程,加速模型调优。具有两大特点: + +#### 动态展示 + +在启动VisualDL Board后,LogReader将不断增量的读取日志中数据并供前端调用展示,因此能够在训练中同步观测指标变化,如下图: + +

+ +

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

+ +

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

+ +

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

+ +

+ +## 开源贡献 + +VisualDL 是由 [PaddlePaddle](http://www.paddlepaddle.org/) 和 [ECharts](http://echarts.baidu.com/) 合作推出的开源项目。欢迎所有人使用,提意见以及贡献代码。 ## 更多细节 -想了解更多关于VisualDL的使用介绍,请查看[文档](./docs/README.md) +想了解更多关于VisualDL可视化功能的使用详情介绍,请查看[**VisualDL使用指南**](https://github.com/PaddlePaddle/VisualDL/tree/develop/docs/components/README.md)。