开放能力
开发平台
行业应用
生态合作
开发与教学
资讯 社区 控制台
技术能力
语音技术
文字识别
人脸与人体
图像技术
语言与知识
视频技术
AR与VR
数据智能
场景方案
部署方案
行业应用
智能教育
智能医疗
智能零售
智能工业
企业服务
智能政务
信息服务
智能园区

BML Codelab环境使用说明

目录

  1. 页面概览
  2. 菜单栏
  3. 快捷工具栏
  4. 编辑区 Code Cell
    4.1 命令/编辑模式
    4.2 Code Cell操作
  5. 编辑区 Markdown Cell
    5.1 命令/编辑模式
    5.2 Markdown Cell操作
  6. 终端
  7. 侧边栏
    7.1 文件浏览器
    7.2 数据集
    7.3 版本管理
    7.4 任务
    7.5 代码片段
    7.6 包管理
    7.7 Pipeline
    7.8 环境信息
    7.9 数据模型可视化
    7.10 资源监控
  8. 快捷键操作
  9. 分享项目内容
  10. 常见问题解答

页面概览

Notebook是用户运行Notebook类型的项目后,在浏览器端所看到的交互式编程界面。

Notebook由以下这几个部分构成:

  • 菜单栏
  • 快捷工具栏
  • 代码编辑区 Code Cell
  • 代码编辑区 Markdown Cell
  • 侧边栏
  • 状态监控区

以下对每个部分的操作分别说明.

菜单栏

  • 文件 :对整体项目文件的操作.
  • 编辑 :对单元格的操作.
  • 查看 :关于视图的操作.
  • 运行 :不同方式的cell运行命令.
  • 内核 :关于内核的操作.
  • 标签页 :关于标签页的操作.
  • 设置 :关于notebook的系统设置操作.
  • 帮助 :使用帮助,包括Markdown参考文档、Blackhole使用说明、飞桨官网、BML CodeLab本地端下载、帮助按钮.

快捷工具栏

  • 运行 :运行当前选中的Code cell.
  • 终止运行 :停止Notebook运行状态.
  • 重启内核 :重启代码内核,清空环境中的环境变量、缓存变量、输出结果等.
  • 保存 :保存Notebook项目文件.

编辑区 Code Cell

Code Cell是Notebook的代码编写单元。用户在Code Cell内编写代码(支持Python3)和shell命令,代码/命令在云端执行,并返回结果到Code Cell.

命令/编辑模式

绿色代表块内容可编辑状态-编辑模式(比如输入代码),蓝色代表块可操作状态-命令模式(比如删除Cell,必须回到蓝色),与linux编辑器vi/vim类似,编辑模式和命令模式之间可以用Esc和Enter来切换。

  • 编辑模式

  • 命令模式

Code Cell操作

  • 新建Cell
  1. 从快捷工具栏中点击【+Code】新建Code Cell
  2. 在Cell下方点击【+Code】新建Code Cell

  • 运行Cell

  • 运行中状态:

  • 折叠Cell

  • 其他操作

  • Linux命令

    运行Linux命令的方式是在Linux命令前加一个!,就可以在块里运行

    示例1:安装第三方包

示例2:查看当前环境中的Python版本和Paddle版本

  • Magic关键字

    Magic关键字是可以运行特殊的命令. Magic 命令的前面带有一个或两个百分号(% 或 %%), 分别代表行Magic命令Cell Magic命令. 行Magic命令仅应用于编写Magic命令时所在的行, 而Cell Magic命令应用于整个Cell.

Magic关键字 含义
%timeit 测试单行语句的执行时间
%%timeit 测试整个块中代码的执行时间
%matplotlib inline 显示 matplotlib 包生成的图形
%run 调用外部python脚本
%pdb 调试程序
%pwd 查看当前工作目录
%ls 查看目录文件列表
%reset 清除全部变量
%who 查看所有全局变量的名称,若给定类型参数,只返回该类型的变量列表
%whos 显示所有的全局变量名称、类型、值/信息
%xmode Plain 设置为当异常发生时只展示简单的异常信息
%xmode Verbose 设置为当异常发生时展示详细的异常信息
%debug bug调试,输入quit退出调试
%bug 调试,输入quit退出调试
%env 列出全部环境变量

示例1: 使用 %%timeit测算整个块的运行时间.

示例2: 块可集成Matplotlib,从而进行绘图, 但需要注意绘图前需要输入%Matplotlib inline并运行, 否则即使运行终端可用的绘图代码段, cell也只会返回一个文件说明, 如下图所示

编辑区 Markdown Cell

Markdown Cell是Notebook中文本编辑单元,通过在Markdown Cell中输入Markdown格式的文本,可以编写文字教程说明.

命令/编辑模式

绿色代表块内容可编辑状态-编辑模式(比如输入文字),蓝色代表块可操作状态-命令模式(预览md展示样式),编辑模式和命令模式之间可以用Esc和Enter来切换。

  • 编辑模式

  • 命令模式(预览样式)

Markdown Cell操作

  • 新建Cell
  1. 从快捷工具栏中点击【+Markdown】新建Markdown Cell
  2. 在Cell下方点击【+Markdown】新建Markdown Cell

  • 编辑Cell 支持插入公式、表格、图片、音乐、视频、网页等. 相关Markdown用法可以参考Markdown官网.

终端

用户可以使用终端来进行一些操作,例如查询GPU占用率. 或进行文本编辑.

用户可以从启动页点击终端打开终端界面.

注意:

  1. Terminal未开放sudo权限.
  2. 最多可同时使用5个终端.

侧边栏

文件浏览器

按照树形结构展示/home/aistudio路径下的文件夹和文件。可以在该目录下进行如下操作:

  • 文件浏览器操作选项: 右键文件浏览器目录页空白处,可以实现新建操作.
  • 文件夹操作: 右键文件夹,会出现操作按钮, 包括下载文件、重命名文件、路径复制等.
  • 文件操作: 右键文件, 会出现操作按钮, 包括下载文件、重命名文件、路径复制等.
  • 注意:/home/aistudio/data是非持久化目录,请不要将您的文件放到该目录下,重启后,文件将会丢失.

文件浏览器上方有4个按钮,具体含义如下:

  • 新建启动页:打开启动页,可快速实现Notebook创建、TXT文件创建、终端创建、Pipeline创建.
  • 新建文件夹:快速实现文件夹创建.
  • 上传文件: 上传的单个文件最大 150 MB.
  • 刷新文件列表:如果在代码运行过程中磁盘里的文件更新了,可以点击刷新,并在文件浏览器界面查看文件更新的状态.

数据集

在数据集栏中, 可以复制数据集文件的路径, 并置于代码中. 复制数据集路径成功则出现对应提示:

在运行过程中, 如数据集内容发生变化, 并不会自动变更, 需要项目环境重启后才能看到.

数据集文件通常存于文件夹/data/路径下.

版本管理

版本是用于保存项目空间中的重要文件, 以及恢复;用户最多可以生成20个版本, 并制定不同的版本名称.

创建版本

用户可以点击左侧"版本"->"版本目录头部【+】", 来生成一个新版本. 每个版本最少会包含一个文件(其中.ipynb文件并非默认选中,用户可根据自己的需要添加文件至版本), 最大可以达到1GB, 可包含至多1000个附带文件.

加载历史版本

用户正在编辑的内容会自动置为"草稿"版本, 如果用户对草稿版本的内容不满意, 可以重新加载历史上的版本以重新开始.

注意: 加载历史版本为全量操作, 即当前草稿版本的内容会被全部清空.

任务

由于Notebook有高级版GPU、尊享版GPU环境每周运行总时长限制, 以及Notebook离线运行时长最多2小时, 如果需要突破这两种限制, 可以使用Notebook中的后台任务.

后台任务基于一个版本, 可以将全部版本内容提交至后台的GPU服务器上进行运行, 然后可以将运行后的结果全量返回并再次导入Notebook环境中的一种机制.

BML Codelab中,后台任务依赖于版本中根目录(/home/aistudio/)下的ipynb文件,用户可将运行内容写在ipynb文件中,如根目录(/home/aistudio/)下的ipynb文件,则任务无法创建.

后台任务不依赖当前Notebook的硬件环境, 因此无论在普通版(CPU)环境, 还是在高级版(GPU)环境中, 均可以创建并提交.

后台任务创建流程

1、通过左侧工具栏点击「任务」,切换至任务窗口。 image.png

2、点击「创建任务」弹窗显示创建任务页面【1】。因为后台任务依赖与版本中根目录下的ipynb文件,因此您可根据实际情况选择「新建版本」或使用已有版本填写必要信息。若选择「新建版本」则进入创建版本页面。

注意:为保证任务的高效且正常运行,建议您在 Notebook 环境中完成项目调试,调试通过后再生成对应的任务版本。 image.png image.png

3、在创建任务页面【1】中需要填写任务备注、选择项目版本以及执行文件.填写完成后,点击下一步进入创建任务页面【2】。 image.png

4、您可在创建任务页面【3】中根据任务的实际需要选择不同的运行环境。需要注意的是后台任务消耗算力卡,因此需要保证在提交任务时算力点余额>=1。

5、后台任务共提供2种运行环境,分别为V100 1卡 1点/小时和V100 4卡 8点/小时,选择不同的环境会展示对应环境的详细配置。 image.png

6、创建任务后,页面头部会弹窗提示"后台任务创建成功"并在左侧的任务列表中生成记录。

注意:若所选服务器爆满时,任务将处于'排队中'状态。排队中状态最多保持24小时,超过24小时任务将自动失败且任务处于排队状态不会消耗算力卡。

image.png

7、任务处于'运行中'状态时,您可通过项目详情页的后台任务板块或任务列表中对应任务的复选框中选择「查看日志」跳转至查看日志页面,观察任务运行情况。您也可以通过「终止任务」终止当前中正在排队或运行中的任务。

image.png image.png image.png

8、当任务完成后, 用户可以将任务输出结果下载至项目空间或本地。选择下载输出结果至项目空间时,会将您的任务结果压缩包保存在'/home/aistudio/任务编号/'路径下。

image.png

9、将结果导入项目空间或下载到用户本地电脑后,任务可以删除. 同时, 在项目预览页面中, 用户也可以管理已经提交任务, 进行终止, 删除, 下载输出结果。

image.png

注意事项:

  • 只保留最近的5个任务;
  • 每个任务的运行输出结果最多保留30天;
  • 任务单次运行时间上限为72小时(不含排队时间);
  • 任务输出结果体积 > 20GB或文件数量 > 10000时,任务将会失败 ;
  • 项目空间 > 60GB时,暂不支持下载输出至项目空间;

代码片段

BML CodeLab提供常用机器学习和深度学习代码片段,支持一键插入到Notebook代码文件中。AI开发者编码过程中如果遇到重复性的代码,也可以将其收藏为自己的代码片段,一键插入使用,提高开发效率。

代码片段提供公共代码片段库和我的代码片段库管理能力。

公共代码片段库

公共代码片段库中内置了常见的机器学习片段,您可直接插入使用,双击可浏览代码片段内容。

FinalVideo_1624959446.gif

我的代码片段库

您可管理自己的代码片段。我的代码片段库支持插入、编辑、重命名、删除和浏览。

FinalVideo_1625038621.gif

使用规范

  • 代码片段内容不容许重复,若重复会提示:当前代码片段已存在;
  • 若云端同步过来的片段内容与本地代码片段有重复,会根据时间新的覆盖旧的;名称也会替换成最新时间编写的;
  • 在不登录情况下,可以保存代码片段到本地;
  • 登录后,会自动将我的代码片段同步到云端,用户更换设备,我的代码片段会同时同步过去;
  • 代码片段名称容许重复;

包管理

BML CodeLab 提供可视化包管理能力,内含 160 多种常用包及精选的百度自研能力,用户可按需安装、卸载、更换版本。

image.png

这里需要注意:

  • 每个包仅能处于一种操作中(安装/卸载/更换版本);
  • 若您对某个包下载多个版本,环境中只保留最新下载的版本

精选推荐

提供:

* wenxin
* Blackhole
* PaddlePaddle
* PaddlePaddle-gpu
* PaddleX
* PaddleHub

BML CodeLab 会定期对以上能力进行版本更新,用户可根据实际需要进行安装和更新版本。

已安装

展示的是当前环境下已安装的所有包,可通过精准匹配查找已经安装的包。

这里需要注意: Blackhole和wenxin 如果通过精选推荐安装,不会出现在已安装列表中。

未安装

展示的是当前环境下未安装的常用Python包,可通过精准匹配查找已经安装的包。

Pipeline

Pipeline是一套面向AI开发任务的端到端编排组件,支持任务流程构建、可视化、调试、运行及节点级详情查看,功能覆盖AI开发全流程。

Pipeline的目标是让AI开发者在研发过程中,全流程变得更加简单且高效(Simple and Efficient)。基于Pipeline构建的AI开发流程,能做到:

-标准化(Standard): 研发流程可标准化沉淀、自动化迭代;

-可复用(Reusable): Op节点和Pipeline级别都支持可复用;pipeline 中的每个节点都是一个 Op, 每个 Op 都有自己需要运行的代码逻辑、输入和输出

-可扩展(Scalable): 节点资源可扩展,提供上下游接口对接能力;

Pipeline支持多种场景下的不同使用方式:

1)在CodeLab 中使用

2)命令行方式使用

相关名词概念解释

名词 解释
Pipeline 一个完整的训练流程,可以包含一个或者多个节点
Op pipeline 中的每个节点都是一个 Op, 每个 Op 都有自己需要运行的代码逻辑、输入和输出
Artifact 由 Op 生成的文件, 在 Op 运行结束后,将会上传到 Artifact 仓库中,在使用 Artifact 进行传递时,传递的是 Artifact 所对应文件
Parameter 即 string, list, array 等类型的参数, 在使用 Parameter 进行传递时传递的便是具体的值
Inputs 传递给 Op 的 Parameter 或 Artifact
Outputs 由 Pipeline 生成的 Parameter 或 Artifact
CodeLab CodeLab 是 AIStudio 新版 Notebook 开发环境,目前只开放了新建项目可使用

Pipeline 的具体使用教程请查看文档《Pipeline使用教程》

环境信息

您可查看当前运行环境的硬件信息和镜像基础信息。

硬件信息:

展示CPU(CPU核数)、GPU(GPU卡详细信息)、总显存、总内存、总硬盘信息;

环境配置:

展示 Python版本;

操作步骤

点击侧边栏环境信息按钮,查看具体信息

数据模型可视化

VisualDL是一个面向深度学习任务设计的可视化工具。VisualDL 利用了丰富的图表来展示数据,用户可以更直观、清晰地查看数据的特征与变化趋势,有助于分析数据、及时发现错误,进而改进神经网络模型的设计。喜欢的同学可以去star支持一下哦~

BML CodeLab已经集成VisualDL工具以便于您的使用,您可在左侧点击VDL启动数据模型可视化服务。

BML CodeLab数据可视化服务操作说明

Step1 创建日志文件LogWriter,训练代码中增加 Loggers 来记录不同种类的数据,设置实验结果存放路径. 注意我们的logdir = "./log", 即需要把log目录放到/home/work/log.

from visualdl import LogWriter

if __name__ == '__main__':
    value = [i/1000.0 for i in range(1000)]
    # 初始化一个记录器
    with LogWriter(logdir="./log/scalar_test/train") as writer:

Step2 训练过程中插入数据打点语句,将结果储存至日志文件中

for step in range(1000):
            # 向记录器添加一个tag为`acc`的数据
            writer.add_scalar(tag="acc", step=step, value=value[step])
            # 向记录器添加一个tag为`loss`的数据
            writer.add_scalar(tag="loss", step=step, value=1/(value[step] + 1))

Step3 切换到「VDL」数据模型可视化页签,指定日志文件与模型文件(不指定日志文件无法启动VisualDL)

*注意:VisualDL启动中不可删除或替换日志/模型文件;日志文件可多选,模型文件一次只能上传一个,且模型文件暂只支持模型网络结构,不支持展示各层参数

  • 选择日志文件

    PaddleX
  • 选择模型文件

    PaddleX

Step4 点击「启动VisualDL」后,再点击「进入VisualDL」即可打开可视化界面

*注意:使用VisualDL需要Python3以上版本;端口8080是VisualDL的专用端口,严禁占用,否则无法正常启动VisualDL

目前,VisualDL 支持 scalar, image, audio, graph, histogram, pr curve, high dimensional 七个组件,项目正处于高速迭代中,敬请期待新组件的加入。

组件名称 展示图表 作用
Scalar 折线图 动态展示损失函数值、准确率等标量数据
Image 图片可视化 显示图片,可显示输入图片和处理后的结果,便于查看中间过程的变化
Audio 音频可视化 播放训练过程中的音频数据,监控语音识别与合成等任务的训练过程
Graph 网络结构 展示网络结构、节点属性及数据流向,辅助学习、优化网络结构
Histogram 直方图 展示训练过程中权重、梯度等张量的分布
PR Curve 折线图 权衡精度与召回率之间的平衡关系
High Dimensional 数据降维 将高维数据映射到 2D/3D 空间来可视化嵌入,便于观察不同数据的相关性

Scalar--标量组件

介绍

Scalar 组件的输入数据类型为标量,该组件的作用是将训练参数以折线图形式呈现。将损失函数值、准确率等标量数据作为参数传入 scalar 组件,即可画出折线图,便于观察变化趋势。

记录接口

Scalar 组件的记录接口如下:

add_scalar(tag, value, step, walltime=None)

接口参数说明如下:

参数 格式 含义
tag string 记录指标的标志,如train/loss,不能含有%
value float 要记录的数据值
step int 记录的步数
walltime int 记录数据的时间戳,默认为当前时间戳

*注意tag的使用规则为:

  1. 第一个/前的为父tag,并作为一栏图片的tag
  2. 第一个/后的为子tag,子tag的对应图片将显示在父tag下
  3. 可以使用多次/,但一栏图片的tag依旧为第一个/前的tag

具体使用参见以下三个例子:

  • 创建train为父tag,acc和loss为子tag:train/acctrain/loss,即创建了tag为train的图片栏,包含acc和loss两张图片:

  • 创建train为父tag,test/acc和test/loss为子tag:train/test/acctrain/test/loss,即创建了tag为train的图片栏,包含test/acc和test/loss两张图片:

  • 创建两个父tag:accloss,即创建了tag分别为acc和loss的两个图片栏::

    Demo

  • 基础使用

下面展示了使用 Scalar 组件记录数据的示例,代码见Scalar组件

from visualdl import LogWriter

if __name__ == '__main__':
    value = [i/1000.0 for i in range(1000)]
    # 初始化一个记录器
    with LogWriter(logdir="./log/scalar_test/train") as writer:
        for step in range(1000):
            # 向记录器添加一个tag为`acc`的数据
            writer.add_scalar(tag="acc", step=step, value=value[step])
            # 向记录器添加一个tag为`loss`的数据
            writer.add_scalar(tag="loss", step=step, value=1/(value[step] + 1))

运行上述程序后,点击可视化选择相应日志文件即可查看可视化结果

  • 多组实验对比

下面展示了使用Scalar组件实现多组实验对比

多组实验对比的实现分为两步:

  1. 创建子日志文件储存每组实验的参数数据
  2. 将数据写入scalar组件时,使用相同的tag,即可实现对比不同实验同一类型参数
from visualdl import LogWriter

if __name__ == '__main__':
    value = [i/1000.0 for i in range(1000)]
    # 步骤一:创建父文件夹:log与子文件夹:scalar_test
    with LogWriter(logdir="./log/scalar_test") as writer:
        for step in range(1000):
            # 步骤二:向记录器添加一个tag为`train/acc`的数据
            writer.add_scalar(tag="train/acc", step=step, value=value[step])
            # 步骤二:向记录器添加一个tag为`train/loss`的数据
            writer.add_scalar(tag="train/loss", step=step, value=1/(value[step] + 1))
    # 步骤一:创建第二个子文件夹scalar_test2       
    value = [i/500.0 for i in range(1000)]
    with LogWriter(logdir="./log/scalar_test2") as writer:
        for step in range(1000):
            # 步骤二:在同样名为`train/acc`下添加scalar_test2的accuracy的数据
            writer.add_scalar(tag="train/acc", step=step, value=value[step])
            # 步骤二:在同样名为`train/loss`下添加scalar_test2的loss的数据
            writer.add_scalar(tag="train/loss", step=step, value=1/(value[step] + 1))

运行上述程序后,点击可视化选择相应日志文件即可查看以下折线图,观察scalar_test和scalar_test2的accuracy和loss的对比。

功能操作说明

  • 支持数据卡片「最大化」、「还原」、「坐标系转化」(y轴对数坐标)、「下载」折线图

  • 数据点Hover展示详细信息

  • 可搜索卡片标签,展示目标图像

  • 可搜索打点数据标签,展示特定数据

  • X轴有三种衡量尺度
  1. Step:迭代次数
  2. Walltime:训练绝对时间
  3. Relative:训练时长
  • 可调整曲线平滑度,以便更好的展现参数整体的变化趋势

Image--图片可视化组件

介绍

Image 组件用于显示图片数据随训练的变化。在模型训练过程中,将图片数据传入 Image 组件,就可在 VisualDL 的前端网页查看相应图片。

记录接口

Image 组件的记录接口如下:

add_image(tag, img, step, walltime=None)

接口参数说明如下:

参数 格式 含义
tag string 记录指标的标志,如train/loss,不能含有%
img numpy.ndarray 以ndarray格式表示的图片
step int 记录的步数
walltime int 记录数据的时间戳,默认为当前时间戳

Demo

下面展示了使用 Image 组件记录数据的示例,代码文件请见Image组件

import numpy as np
from PIL import Image
from visualdl import LogWriter


def random_crop(img):
    """获取图片的随机 100x100 分片
    """
    img = Image.open(img)
    w, h = img.size
    random_w = np.random.randint(0, w - 100)
    random_h = np.random.randint(0, h - 100)
    r = img.crop((random_w, random_h, random_w + 100, random_h + 100))
    return np.asarray(r)


if __name__ == '__main__':
    # 初始化一个记录器
    with LogWriter(logdir="./log/image_test/train") as writer:
        for step in range(6):
            # 添加一个图片数据
            writer.add_image(tag="eye",
                             img=random_crop("../../docs/images/eye.jpg"),
                             step=step)

运行上述程序后,点击可视化选择相应日志文件即可查看可视化结果

功能操作说明

  • 可搜索图片标签显示对应图片数据

  • 支持滑动Step/迭代次数查看不同迭代次数下的图片数据

Audio--音频播放组件

介绍

Audio组件实时查看训练过程中的音频数据,监控语音识别与合成等任务的训练过程。

记录接口

Audio 组件的记录接口如下:

add_audio(tag, audio_array, step, sample_rate)

接口参数说明如下:

参数 格式 含义
tag string 记录指标的标志,如audio_tag,不能含有%
audio_arry numpy.ndarray 以ndarray格式表示的音频
step int 记录的步数
sample_rate int 采样率,注意正确填写对应音频的采样率

Demo

from visualdl import LogWriter
import numpy as np
import wave


def read_audio_data(audio_path):
    """
    Get audio data.
    """
    CHUNK = 4096
    f = wave.open(audio_path, "rb")
    wavdata = []
    chunk = f.readframes(CHUNK)
    while chunk:
        data = np.frombuffer(chunk, dtype='uint8')
        wavdata.extend(data)
        chunk = f.readframes(CHUNK)
    # 8k sample rate, 16bit frame, 1 channel
    shape = [8000, 2, 1]
    return shape, wavdata


if __name__ == '__main__':
    with LogWriter(logdir="./log") as writer:
        audio_shape, audio_data = read_audio_data("./testing.wav")
        audio_data = np.array(audio_data)
        writer.add_audio(tag="audio_tag",
                         audio_array=audio_data,
                         step=0,
                         sample_rate=8000)

运行上述程序后,点击可视化选择相应日志文件即可查看可视化结果

功能操作说明

  • 可搜索音频标签显示对应音频数据

  • 支持滑动Step/迭代次数查看不同迭代次数下的音频数据

  • 支持播放/暂停音频数据

  • 支持音量调节

  • 支持音频下载

Graph--网络结构组件

介绍

Graph组件一键可视化模型的网络结构。用于查看模型属性、节点信息、节点输入输出等,并进行节点搜索,协助开发者们快速分析模型结构与了解数据流向。

在生成Model文件后,在可视化模块中选择模型文件,启动后即可查看网络结构可视化:

功能操作说明

  • 一键上传模型

    • 支持模型格式:PaddlePaddle、ONNX、Keras、Core ML、Caffe、Caffe2、Darknet、MXNet、ncnn、TensorFlow Lite
    • 实验性支持模型格式:TorchScript、PyTorch、Torch、 ArmNN、BigDL、Chainer、CNTK、Deeplearning4j、MediaPipe、ML.NET、MNN、OpenVINO、Scikit-learn、Tengine、TensorFlow.js、TensorFlow
  • 支持上下左右任意拖拽模型、放大和缩小模型
  • 搜索定位到对应节点

  • 点击查看模型属性

  • 支持选择模型展示的信息

  • 支持以PNG、SVG格式导出文件

  • 点击节点即可展示对应属性信息

  • 支持一键更换模型

Histogram--直方图组件

介绍

Histogram组件以直方图形式展示Tensor(weight、bias、gradient等)数据在训练过程中的变化趋势。深入了解模型各层效果,帮助开发者精准调整模型结构。

记录接口

Histogram 组件的记录接口如下:

add_histogram(tag, values, step, walltime=None, buckets=10)

接口参数说明如下:

参数 格式 含义
tag string 记录指标的标志,如train/loss,不能含有%
values numpy.ndarray or list 以ndarray或list格式表示的数据
step int 记录的步数
walltime int 记录数据的时间戳,默认为当前时间戳
buckets int 生成直方图的分段数,默认为10

Demo

下面展示了使用 Histogram组件记录数据的示例,代码见Histogram组件

from visualdl import LogWriter
import numpy as np


if __name__ == '__main__':
    values = np.arange(0, 1000)
    with LogWriter(logdir="./log/histogram_test/train") as writer:
        for index in range(1, 101):
            interval_start = 1 + 2 * index / 100.0
            interval_end = 6 - 2 * index / 100.0
            data = np.random.uniform(interval_start, interval_end, size=(10000))
            writer.add_histogram(tag='default tag',
                                 values=data,
                                 step=index,
                                 buckets=10)

运行上述程序后,点击可视化选择相应日志文件即可查看可视化结果

功能操作说明

  • 支持数据卡片「最大化」、「下载」直方图

  • 可选择Offset或Overlay模式

    • Offset模式

    • Overlay模式

  • 数据点Hover展示参数值、训练步数、频次

    • 在第240次训练步数时,权重为-0.0031,且出现的频次是2734次

  • 可搜索卡片标签,展示目标直方图

  • 可搜索打点数据标签,展示特定数据流

PR Curve--PR曲线组件

介绍

PR Curve以折线图形式呈现精度与召回率的权衡分析,清晰直观了解模型训练效果,便于分析模型是否达到理想标准。

记录接口

PR Curve组件的记录接口如下:

add_pr_curve(tag, labels, predictions, step=None, num_thresholds=10)

接口参数说明如下:

参数 格式 含义
tag string 记录指标的标志,如train/loss,不能含有%
values numpy.ndarray or list 以ndarray或list格式表示的实际类别
predictions numpy.ndarray or list 以ndarray或list格式表示的预测类别
step int 记录的步数
num_thresholds int 阈值设置的个数,默认为10,最大值为127

Demo

下面展示了使用 PR Curve 组件记录数据的示例,代码见PR Curve组件

from visualdl import LogWriter
import numpy as np

with LogWriter("./log/pr_curve_test/train") as writer:
    for step in range(3):
        labels = np.random.randint(2, size=100)
        predictions = np.random.rand(100)
        writer.add_pr_curve(tag='pr_curve',
                            labels=labels,
                            predictions=predictions,
                            step=step,
                            num_thresholds=5)

运行上述程序后,点击可视化选择相应日志文件即可查看可视化结果

功能操作说明

  • 支持数据卡片「最大化」、「还原」、「下载」PR曲线

  • 数据点Hover展示详细信息:阈值对应的TP、TN、FP、FN

    <img src="https://user-images.githubusercontent.com/48054808/86740477-43370600-c069-11ea-93f0-f4d05445fbab.png" width="50%"/>
  • 可搜索卡片标签,展示目标图表

  • 可搜索打点数据标签,展示特定数据

  • 支持查看不同训练步数下的PR曲线

  • X轴-时间显示类型有三种衡量尺度

    • Step:迭代次数
    • Walltime:训练绝对时间
    • Relative:训练时长

High Dimensional--数据降维组件

介绍

High Dimensional 组件将高维数据进行降维展示,用于深入分析高维数据间的关系。目前支持以下两种降维算法:

  • PCA : Principle Component Analysis 主成分分析
  • t-SNE : t-distributed stochastic neighbor embedding t-分布式随机领域嵌入

记录接口

High Dimensional 组件的记录接口如下:

add_embeddings(tag, labels, hot_vectors, walltime=None)

接口参数说明如下:

参数 格式 含义
tag string 记录指标的标志,如default,不能含有%
labels numpy.array 或 list 一维数组表示的标签,每个元素是一个string类型的字符串
hot_vectors numpy.array or list 与labels一一对应,每个元素可以看作是某个标签的特征
walltime int 记录数据的时间戳,默认为当前时间戳

Demo

下面展示了使用 High Dimensional 组件记录数据的示例,代码见High Dimensional组件

from visualdl import LogWriter


if __name__ == '__main__':
    hot_vectors = [
        [1.3561076367500755, 1.3116267195134017, 1.6785401875616097],
        [1.1039614644440658, 1.8891609992484688, 1.32030488587171],
        [1.9924524852447711, 1.9358920727142739, 1.2124401279391606],
        [1.4129542689796446, 1.7372166387197474, 1.7317806077076527],
        [1.3913371800587777, 1.4684674577930312, 1.5214136352476377]]

    labels = ["label_1", "label_2", "label_3", "label_4", "label_5"]
    # 初始化一个记录器
    with LogWriter(logdir="./log/high_dimensional_test/train") as writer:
        # 将一组labels和对应的hot_vectors传入记录器进行记录
        writer.add_embeddings(tag='default',
                              labels=labels,
                              hot_vectors=hot_vectors)

运行上述程序后,点击可视化选择相应日志文件即可查看可视化结果

功能操作说明

  • 支持展示特定打点数据

  • 可搜索展示特定数据标签或展示所有数据标签

  • 支持「二维」或「三维」展示高维数据分布

  • 可选择「PCA」或「T-SNE」作为降维方式

# 查看当前挂载的数据集目录, 该目录下的变更重启环境后会自动还原
# View dataset directory. 
# This directory will be recovered automatically after resetting environment. 
!ls /home/aistudio/data
# 查看工作区文件, 该目录下的变更将会持久保存. 请及时清理不必要的文件, 避免加载过慢.
# View personal work directory. 
# All changes under this directory will be kept even after reset. 
# Please clean unnecessary files in time to speed up environment loading. 
!ls /home/aistudio/work
# 如果需要进行持久化安装, 需要使用持久化路径, 如下方代码示例:
# If a persistence installation is required, 
# you need to use the persistence path as the following: 
!mkdir /home/aistudio/external-libraries
!pip install beautifulsoup4 -t /home/aistudio/external-libraries
# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: 
# Also add the following code, 
# so that every time the environment (kernel) starts, 
# just run the following code: 
import sys 
sys.path.append('/home/aistudio/external-libraries')

请点击此处查看本环境基本用法.
Please click here for more detailed instructions.

资源监控

BML CodeLab提供资源实时监控功能,您可查看资源实时使用情况。

资源监控指标 介绍
CPU占用率 当前已使用CPU量/CPU总可使用量
内存占用率 当前已使用的内存/内存总可使用量
硬盘占用率 当前已使用的磁盘大小/磁盘总可用量
GPU占用率 可选择GPU卡,显示已使用的GPU量/该卡总可用量
显存占用率 可选择GPU卡,显示选择GPU卡已使用显存大小/该卡总可用量

操作步骤

点击侧边栏资源监控按钮,进入资源页面,您可选择具体GPU卡进行监控

image.png

快捷键操作

  • 常用操作列表
模式 内容 快捷键(Windows) 快捷键(Mac)
命令模式 (Esc切换) 运行块 Shift-Enter Shift-Enter
命令模式 在下方插入块 B B
命令模式 在上方插入块 A A
命令模式 删除块 d-d d-d
命令模式 切换到编辑模式 Enter Enter
编辑模式 (Enter切换) 运行块 Shift-Enter Shift-Enter
编辑模式 缩进 Clrl-] Command-]
编辑模式 取消缩进 Ctrl-[ Command-[
编辑模式 注释 Ctrl-/ Command-/
编辑模式 函数内省 Tab Tab

分享项目内容

Notebook项目在没有版本的时候无法公开, 此举是为了保证用户fork您的项目时, 可以获得完整的Notebook及其依赖文件, 这样其他用户才能顺利运行该项目.

  • 下方为缺乏版本而不能公开的示例:

SetPublic.gif

常见问题解答

1、切换环境后,之前配置的暗色系以及字体为何复原?

答:由于切换环境涉及硬件环境的改变和执行器的重启,当前对于一些偏好设置暂未进行记录,将于后期进行优化,提升您的使用体验.

上一篇
Notebook环境使用说明
下一篇
脚本任务