1. 前言¶
1.1. 声明¶
本文档提供的信息属于上海燧原科技有限公司和/或其子公司(以下统称“燧原科技”)所有,且燧原科技保留不经通知随时对本文档信息或对任何产品和服务做出修改的权利。本文档所含信息和本文档所引用燧原科技其他信息均“按原样”提供。燧原科技不担保信息、文本、图案、链接或本文档内所含其他项目的准确性或完整性。燧原科技不对本文档所述产品的可销售性、所有权、不侵犯知识产权、准确性、完整性、稳定性或特定用途适用性做任何暗示担保、保证。燧原科技可不经通知随时对本文档或本文档所述产品做出更改,但不承诺更新本文档。
在任何情况下,燧原科技不对因使用或无法使用本文档而导致的任何损害(包括但不限于利润损失、业务中断和信息损失等损害)承担责任。燧原科技不承担因应用或使用本文档所述任何产品或服务而产生的任何责任。
燧原科技和燧原科技的标志是上海燧原科技有限公司申请和/或注册的商标。本文档并未明示或暗示地授予客户任何专利、版权、商标、集成电路布图设计、商业秘密或任何其他燧原科技知识产权的权利或许可。
本文档为版权所有并受全世界版权法律和条约条款的保护。未经燧原科技的事先书面许可,任何人不可以任何方式复制、修改、出版、上传、发布、传输或分发本文档。为免疑义,除了允许客户按照本文档要求使用文档相关信息外,燧原科技不授予其他任何明示或暗示的权利或许可。
燧原科技对本文档享有最终解释权
1.2. 版本历史¶
时间 |
版本 |
作者 |
---|---|---|
2022.6.30 |
1.0 |
Enflame Tech |
2022.11.30 |
2.0 |
Enflame Tech |
2023.5.30 |
3.0 |
Enflame Tech |
2023.7.14 |
3.5 |
Enflame Tech |
2. 介绍¶
2.1. 概述¶
TopsModelGraph 是一款用于神经网络、深度学习和机器学习模型可视化的工具,支持以图形化的方式查看 onnx,pb,hlir模型文件内容。
3. 运行环境设定¶
3.1. 硬件要求¶
名称 |
最低配置 |
推荐配置 |
---|---|---|
处理器 |
/ |
多核处理器 |
硬盘 |
10G |
20G固态硬盘 |
显示器 |
1024x768 |
1920x1080或更高 |
操作系统 |
/ |
Windows10,Ubuntu18.04,CenterOS7.9 |
内存 |
8G |
16GB |
3.2. 安装方法¶
TopsModelGraph提供3个平台的安装包(win10,ubuntu,centos/RHEL)。
3.2.1. Windows安装(exe)¶
首先找到安装文件TopsModelGraph-xxxx.exe双击。
选择安装语言。
安装向导。
安装许可协议。
选择安装组件。
选择安装位置。
安装中
安装完毕运行TopsModelGraph程序或者可以通过桌面上创建的快捷方式启动。
3.2.2. Ubuntu安装(deb)¶
找到TopsModelGraph-xxxx.deb。
打开终端,使用sudo dpkg -i TopsModelGraph-xxxx.deb。
安装后可以在终端使用,TopsModelGraph-xxxx启动或者在桌面找到快捷方式启动。
3.2.3. Centos/RHEL安装(rpm)¶
注意:
当Centos是7.9时,默认GCC版本是4.8.5,需要将GCC版本升级为5.4.0
GCC版本升级安装步骤如下:
wget http://mirrors.nju.edu.cn/gnu/gcc/gcc-5.4.0/gcc-5.4.0.tar.gz
tar zvxf gcc-5.4.0.tar.gz
cd gcc-5.4.0/
./contrib/download_prerequisites
mkdir gcc-build-5.4.0
cd gcc-build-5.4.0/
../configure --enable-checking=release \
--enable-languages=c,c++ \
--with-arch_32=x86-64 \
--build=x86_64-redhat-linux \
--disable-multilib
make && make install
更新gcc连接
mv /usr/bin/gcc{,-4.8.5}
mv /usr/lib64/libstdc++.so.6{,-4.8.5}
mv /usr/bin/g++{,-4.8.5}
ln -s /usr/local/bin/gcc /usr/bin/gcc
ln -s /usr/local/lib64/libstdc+.so.6 /usr/lib64/libstdc+.so.6
ln -s /usr/local/bin/g++ /usr/bin/g++
找到TopsModelGraph-xxxx.rpm。
打开终端,使用sudo rpm -ivh TopsModelGraph-xxxx.rpm。
安装后可以在终端使用,TopsModelGraph-xxxx启动或者在桌面找到快捷方式启动。
3.3. 卸载方法¶
3.3.1. Windows卸载(exe)¶
打开控制面板找到程序和功能选项。
找到TopsModelGraph右键卸载。
确认卸载。
3.3.2. Ubuntu卸载(deb)¶
在终端中输入sudo dpkg -r topsmodelgraph选择需要卸载的版本。
确认后卸载。
3.3.3. Centos/RHEL卸载(rpm)¶
在终端中输入sudo rpm -e topsmodelgraph选择需要卸载的版本。
确认后卸载。
3.4. 混精校准环境准备¶
混精校准需要用到的工具如下:
工具名称 |
说明 |
安装方式 |
---|---|---|
Vsftpd |
用于在本机和远程服务器之间传输onnx,irmg,sample file,相关配置等文件以及分析结果 |
sudo apt install vsftpd |
TopsRider |
基础软件运行环境,包括TopsIntefer,TopsIDEAS相关组件工具 |
./TopsRider-i2x-xxxx_deb_amd64.run |
TopsModelGraphRTC |
用于接收客户端传送的混精编译和运行配置,并解析构建TopsIDEAS执行命令 |
unzip topsrtc-1.0.x.zip |
TopsModelGraph |
客户端,提供混精量化操作界面,配置,执行,结果查看全流程 |
exe,rpm,deb包,安装在本地 |
注意:
在安装相应的工具时,请注意其适应的版本环境,选择对应的系统环境安装;
混精校准使用的容器名称必须默认是‘topsideas’。
3.4.1. 创建默认用户¶
在目标机器创建名为tools的默认用户
注意:
需要创建用户名为tools,密码为123456的用户,用户主目录为/home/tools
3.4.2. Vsftpd¶
安装: sudo apt install vsftpd
配置:复制如下文件内容到 /etc/ 目录
cp vsftpd.userlist /etc/
vsftpd.userlist:
tools
/etc/vsftpd.conf 文件中追加如下内容:
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO
user_sub_token=$USER
local_root=/home/$USER/ftp
工作环境目录创建:在/home/tools下创建ftp服务主目录/ftp/pub,
启动:service vsftpd restart
3.4.3. TopsRider¶
参考TopsRider相关文档:http://docs.enflame.cn/sw/manuals/topsinstaller/
注意:
在安装过程中TopIDEAS相关选项必须被选中安装
最小安装方式,如下图所示:
参考TopsIDEAS文档:http://10.16.11.32/TopsIDEAS/webdoc_external/README.html
TopsIDEAS命令行使用参考:http://10.16.11.32/TopsIDEAS/webdoc_external/gcu/index.html
3.4.4. TopsModelGraphRTC¶
安装:通过命令unzip topsrtc-1.0.x.zip解压缩到任意目录下即可。 启动:在成功解压完成后目录中的bin目录下执行start.sh即可。
其它注意事项:
如果运行环境是win时,在进行访问ftp网络服务时,注意选择允许,如果没有注意,需要手动调整防火墙开放ftp服务。
4. 快速开始¶
4.1. 打开TopsModelGraph文件¶
支持打开查看的model graph文件后缀包括:pb,onnx,hlir,mgzip。主要分为4种格式,通过tensorflow graph proto持久化的文件,后缀为pb;通过pytorch模型持久化的文件,后缀为onnx;以及通过TopsModelGraph工具导出的包含注释和书签内容的压缩文件,后缀为mgzip。
点击TopsModelGraph主菜单的 ‘文件->打开模型文件’,然后在弹出的文件选择窗口中选择想要打开的文件即可。
4.2. 执行混精校准¶
4.2.1. 创建混精校准项目¶
通过全局菜单文件→新建→Tops项目,或者全局工具栏按钮创建Tops项目。
填写项目名称
点击‘完成’完成Tops项目创建
提示 当工作空间已存在Tops项目,但并未在topsmodelgraph中的Tops项目导航视图中显示,可通过菜单文件→导入…,在对应向导页中选择导入项目所在根目录后,选择导入项目后点击完成打开对应项目。
4.2.2. 配置混精校准目标服务器¶
在网络服务器节点上右键新建→服务节点,创建混精校准任务运行服务器。
点击‘确定’完成混精校准服务器创建。
4.2.3. 配置构型配置¶
导入准备混精校准对应的onnx模型文件(此处以lprnet-pt-op13-fp32-N.onnx为例),并在配置构型中配置模型路径信息,以及样本文件信息。
在当前系统资源管理器中选择需要混精校准的目标ONNX模型,并复制,在新建的Tops项目中的Models目录节点点击鼠标右键,选择粘贴,成功粘贴后,目标ONNX模型会已子结点的方式出现在Models目录节点之下。
在tops项目中双击配置构型节点后打开对应编辑器,并默认激活的一个编译配置编辑器页,并在当前编辑器器页中选择Onnx节点,在显示的右侧详情编辑区域中,点击浏览并在弹出对话框中选择混精校准目标onnx模型文件。
选择模型对应的样本文件。
选择完成后,点击全局工具栏上保存按钮进行配置信息保存。
4.2.4. 自动混精校准任务执行¶
点击全局菜单上的校准配置按钮,在弹出向导点击下一步,查看对应配置对应信息,并点击完成第一次自动混精校准任务执行。
点击下一步,进入分析校准信息配置,在混精校准类中选择自动混精校准。
点击下一步。
点击下一步后点击完成。
点击完成后会在对应的目标服务器上执行自动混精校准任务,此时可在下面控制台中看到自动混精任务执行工程输出信息。
当混精校准任务任务执行完成后,在对应的弹出提示框中选择查看分析记录。
自动跳转到配置构型编辑器中的混精记录编辑器页,并可以在列表中查看到通过上述操作并执行的自动混精记录。
点击自动混精记录后,可以在下方的混精分析结果视图中查看到62,63号算子需要设置为FP32。
4.2.5. 第一次手动混精校准任务执行¶
根据上一步自动混精结果发现62,63号算子需要设置为FP32,需要点击上述自动混精记录操列对应的手动混精链接,对62,63号算子进行FP32设置,并再次启动混精任务。
并点击编辑器右上方按钮进行第二次混精校准任务,在任务发布向导中也可以看到对应算子设置精度为FP32的算子,最后点击完成开始执行第二次混精任务执行。
点击下一步,进入分析校准信息配置,在混精校准类中已自动选择手动混精校准。
点击下一步,进入混精分析校准算子配置,可以看到62,63号算子在对应的设置为FP32的算子列表中显示被选中。
点击下一步后点击完成。
点击完成后会在对应的目标服务器上执行手动混精校准任务,此时可在下面控制台中看到手动混精任务执行输出信息。
当混精校准任务任务执行完成后,在对应的弹出提示框中选择查看分析记录,也可直接打模型图,查看相关算子的分析结果。
当选择查看分析记录后,会自动跳转到配置构型编辑器中的混精记录编辑器页,并可以在列表中查看到通过上述操作并执行的手动混精记录条目,可看到当前手动混精分析结果是Pass通过的,当选择当前对应条目时,可在下方的混精分析结果视图中查看全网分析结果和算子分析结果。
需要查看相关算子具体的分析结果,则可以分析结果列表中的条目,也可以点击条目对应操作列中的查看详情,打开混精目标模型的图编辑器,来查看相关算子的分析结果,其中设置为FP32的63号算子通过鼠标左键选中后,右侧属性视图的分析结果中显示混精校准结果是通过的。
4.2.6. 第二次手动混精校准任务执行¶
当上一次手动混精校准任务任务执行完成后,可以在上次混精校准成功基础之上,针对63号算子获取更为详尽的混精分析数据统计信息,则可以在打开的分析结果模型图上鼠标左键点击63号算子,在右侧的属性视图校准配置页中选择统计分析当前HLIR算子,也可在算子图形的悬停工具条中选中分析校准,即可完成对应算子复杂数据统计分析设置。
并点击编辑器右上方按钮进行第二次混精校准任务,在混精校准配置向导中也可以看到对应算子设置为复杂数据统计算子,最后点击完成开始执行第二次手动混精任务执行。
4.2.7. 完成¶
当第二次混精校准任务完成后,可以看到混精校准任务执行Pass通过,同时63号算子相关的复杂数据分析统计信息结果也会在对应的视图中进行显示。
5. 主菜单¶
一级菜单包含:文件,编辑,视图,帮助
文件的子菜单包含:
新建:新建Tops项目;
打开模型文件:可选择打开本地的模型文件;
打开远程的模型文件:打开远程机器的模型文件;
保存:保存编辑器的修改;
切换工作空间:切换其它工作空间,或者新建工作空间,新打开的界面布局以及内容应保持关闭前的布局以及打开的文件内容;
重新启动:重新启动TopsModelGraph工具,新打开的界面布局以及内容应保持关闭前的布局以及打开的文件内容;
退出:退出TopsModelGraph工具。
编辑的子菜单包含:
Undo
Redo
剪切
复制
粘贴
删除
视图的子菜单包含:
外观
隐藏工具栏
隐藏状态栏
切换到全屏
将活动视图或编辑器最大化
将活动视图或编辑器最小化
显示视图
属性
模型结构
模型缩略图
算子类型统计
书签
控制台
Tops服务器
Tops项目导航
重置布局
首选项
帮助的子菜单包含:
帮助文档
Tops插件市场
关于TopsModelGraph
下面将对以上主菜单功能中的稍微复杂的部分进行详细介绍。
5.1. 首选项配置¶
可以通过首选项来设置TopsModelGraph的操作和显示。在窗口菜单->首选项,来打开首选项对话框 。
5.1.1. 日志级别¶
日志级别有以下几种:
DEBUG 指出细粒度信息事件对调试应用程序有帮助的,主要用于开发过程中打印一些运行信息。
INFO 消息在粗粒度级别上突出强调应用程序的运行过程。打印一些你感兴趣的或者重要的信息,可以用于生产环境中输出程序运行的一些重要信息。
WARN 表明会出现潜在错误的情形,有些信息不是错误信息,但是也要给程序员的一些提示。
ERROR 指出虽然发生错误事件,但仍然不影响系统的继续运行。打印错误和异常信息。
OFF 最高等级的,用于关闭所有日志记录。
优先级从高到低分别是OFF、ERROR、WARN、INFO、DEBUG。 如果将log level设置在某一个级别上,那么比此级别优先级高的log都能打印出来。例如,如果设置优先级为WARN,那么ERROR、WARN级别的log能正常输出,而INFO、DEBUG级别的log则会被忽略。
5.1.2. 混精校准¶
5.1.3. 外观¶
名称 |
说明 |
---|---|
允许使用主题 |
默认勾选,可以使用主题功能 |
主题 |
可以选择不同风格的主题 |
颜色和字体 |
可以选择不同的颜色和字体 |
使用圆形选项卡 |
勾选后,选项卡拐角为圆形 |
显示最近使用的标签 |
勾选后编辑器标签溢出后出现的显示列表中按照最近使用排序,否则按照标签的打开顺序 |
5.1.4. 远程连接¶
名称 |
说明 |
---|---|
远程服务 |
选择远程连接的类型 |
增加 |
增加一个新的远程连接 |
编辑 |
编辑选中的远程连接 |
移除 |
删除选中的远程连接 |
打开 |
建立好远程连接的认证 |
关闭 |
断开远程连接的认证 |
新建连接
6. 主工具栏¶
主工具栏从左到右依次是:
新建向导:新建Tops项目;
打开模型文件:功能同主菜单中的打开模型文件操作;
保存:关联相关编辑器修改,执行保存任务;
校准配置…:选择指定项目的指定配置的混精操作,并下发执行;
Tops插件市场:管理插件;
放大:对模型图进行放大;
缩小:对模型图进行缩小;
比例尺输入框:按照指定的比例放大、缩小模型,其中Page指调整模型图大小使得全部可见;Height指调整模型图大小使得高度范围全部可见;Width指调整模型图大小使得宽度范围全部可见。同时通过其它方式进行放大缩小操控时,比例尺中的值由50%-75%-100%-150%-200%-250%-300%-400%进行连续切换。
6.1. 插件市场¶
通过工具栏按钮‘Tops插件市场’可打开市场管理界面,用于安装存在的插件如图:
选择要安装的插件点击‘安装’,随后弹出窗口提示重新启动,新安装的插件必须重新启动才能生效。
7. 模型透视图¶
模型透视图默认显示布局包含以下视图:
模型编辑器:居中位置,展示模型图的结构,节点,连接关系等信息。
大纲视图:左下角位置,显示模型的缩略图。
属性视图:右边位置,显示所选中的节点包含的属性信息。包含节点的基本信息,输入,输出。
模型结构视图:左上角位置,以树形结构显示节点列表,输入输出以及属性信息,并且提供搜索功能。
控制台视图:下方位置,显示操作过程中一些提示性信息。
算子类型统计视图:下方位置,显示当前所展示的模型中所有op的列表,并且统计出其类型以及输入输出形状,支持导出csv文件。
书签视图:下方位置,显示当前所展示模型中所有添加的书签信息。
下面将对每个视图的功能展开更加详细的介绍。
7.1. 模型编辑器¶
用于展示模型结构,以及控制可显示内容,对齐进行更改等变化。Model Graph由Node,Edge组成,构成一个有向无环图。
Node分类有两种:普通节点和子图,普通节点即输入输出,参数,算子类型等节点,同一种类型的节点显示颜色相同;子图例如onnx文件模型中的loop,block以及mlir文件模型中的fusion类型的节点可以通过右键菜单‘打开子图’的方式打开一个新的模型视图。
Edge的分类有两种。实线和虚线,主要针对pb文件的模型图,实线代表了数据流的传递,虚线代表了依赖传递。
7.1.1. 模型编辑器选用板¶
选用板部分支持三种操作图形的模式:
选择模式:支持通过鼠标点击的方式选中节点,支持鼠标单选,ctrl+鼠标多选。 单选:鼠标点击单个节点,并且切换到其它节点时,同一时刻只能选中高亮一个节点,高亮的节点轮廓红线高亮;选中连线,连线红色高亮。 多选:ctrl+鼠标点击多个节点,多个节点轮廓红线高亮。
平移模式:鼠标左键选择‘平移模式’,可通过鼠标拖动移动图形位置。
默认状态下支持1和2。
7.1.2. 模型编辑器工具栏¶
名称 |
说明 |
---|---|
显示算子名称 |
在模型图中显示算子的名称信息 |
显示算子属性 |
在模型图中显示算子的属性信息 |
显示算子输入输出 |
在模型图中显示算子的输入输出信息 |
显示传递输入 |
在模型图连线上显示传递的输入信息 |
放大 |
放大模型图 |
缩小 |
缩小模型图 |
还原 |
还原模型图大小 |
水平居中显示 |
水平方向居中显示模型图 |
在点击显示XXX操作后,模型展示内容将补充展示对应的信息,同时该按钮提示信息变化为‘隐藏XXX’,再次点击该按钮时则取消展示对应的信息。
7.1.3. 模型编辑器菜单¶
名称 |
说明 |
---|---|
打开子图 |
针对子图类型的节点,打开其内部结构在一个新的视图 |
跳转到输入 |
跳转到该节点/边的Source节点,选中的节点需有Source节点 |
跳转到输出 |
跳转到该节点/边的Target节点,选中的节点需有Target节点 |
添加书签 |
选中单节点并且未添加书签,可以针对此节点添加书签功能 |
删除书签 |
选中已经添加了书签的节点可进行删除书签操作 |
高亮子分支 |
选中一个节点则高亮该节点所在的分支,选中两个节点则高亮两个节点之间的部分,其余部分呈灰色透明状 |
取消高亮 |
取消所有高亮的操作,恢复原图展示效果 |
导出模型(注释和书签) |
导出模型包含注释和书签的内容统一到一个压缩文件,后缀为mgzip |
添加注释 |
选中单节点,或多节点进行添加注释的操作 |
删除注释 |
选中存在注释的部分可以进行删除注释的功能 |
显示注释 |
选中存在注释的部分可以打开注释内容 |
下面对部分功能进行详细介绍以及效果展示:
7.1.3.1. 添加书签¶
选中某一未添加书签的节点,鼠标右键点击弹出菜单添加书签,弹出如下窗口,输入相应的信息,点击‘确定’则书签添加成功,书签视图自动弹出,并显示已为该模型添加的所有书签,包含新添加的书签。添加书签的节点均黄色高亮显示。
注意:添加书签,输入名称不能为空,并且长度不能超过40个字符,描述不作任何限制,如果输入错误,会给出适当的提示信息,并且“确定”按钮灰掉,直到输入正确的信息。
7.1.3.2. 高亮子分支¶
高亮子分支选中一个节点:
高亮子分支选中两个节点:
特别强调:如果选中的单节点是在模型图的主分支,则高亮子分支并不会有任何效果,因为这样的操作其所选分支仍然为整个模型图。
7.1.3.3. 匹配高亮¶
匹配高亮即选中部分节点,寻找并高亮与其结构相似的部分。在选中时,选中的部分必须相连并且符合树形结构,第一个选择的节点必须是根节点。示例如图:
7.1.3.4. 添加注释¶
任意方式单选或多项节点,鼠标右键点击弹出菜单添加注释,弹出请求输入注释名称的窗口,注释名称默认为选中节点的名称以‘_’拼接组合,如果节点名称本身有‘.’会被自动替换成‘_’。
7.1.3.5. 导出模型(注释和书签)¶
导出模型包含注释信息和书签信息作为一个后缀为mgzip的压缩文件。再重新打开该文件,对应的注释信息和书签信息得以保留显示。 特别强调:因为模型目前本身并不支持真正的编辑重新写入,所以任何针对模型的添加书签,注释行为都不会改变原模型文件的内容,如果需要保存,则可以通过该菜单重新将模型以及其附加信息导出为一个新的文件,也可覆写当前的mgzip文件.
7.1.4. 模型编辑器快捷键¶
名称 |
说明 |
---|---|
鼠标滚轮滚动 |
上下移动图形 |
‘ctrl’+ 鼠标滚轮滚动 |
放大缩小图形 |
7.2. 控制台视图¶
用户在打开模型文件过程中,以及其它操作的日志输出展示,例如:点击TopsModelGraph文件的工具栏按钮‘显示算子名称’,控制台中则会打印提示信息。
7.2.1. 控制台视图介绍¶
7.2.1.1. 菜单¶
名称 |
说明 |
---|---|
复制 |
可以选中控制台中的内容复制到粘帖板 |
全部选中 |
可以把控制台中的全部内容选中 |
查找 |
查询控制台中的内容 |
清除 |
删除控制台中的内容 |
滚动锁定 |
锁定控制台不再根据最新的输出刷新当前位置 |
自动换行 |
控制台自适应视图的宽度调整行内显示的内容 |
7.2.1.2. 工具栏¶
名称 |
说明 |
---|---|
清除控制台 |
删除控制台中的内容 |
滚动锁定 |
锁定控制台不再根据最新的输出刷新当前位置 |
自动换行 |
控制台自适应视图的宽度调整行内显示的内容 |
锁定控制台 |
锁定控制台,即使其它控制台有输出内容时,也不会自动切换 |
显示选择的控制台 |
选择不同的控制台 |
打开控制台 |
新建不同的控制台 |
7.3. 属性视图¶
当选中节点之后,属性视图对应的显示出节点的所有详细信息。针对不同类型的模型文件,不同的节点,属性视图展示的内容都会稍有不同。 示例:针对onnx文件的模型,对于大多数的算子类型节点主要包括以下信息:
算子类型;
算子名称;
算子属性列表,以表格的形式列出属性的名称,类型,值;
算子输入信息,以表格的形式列出输入节点的别名,名称,类型,操作(包含详情和复制数据),点击详情可弹出新的窗口用于查看值信息;
算子输出信息,以表格的形式列出输入节点的别名,名称;
针对onnx模型文件节点类型可以通过一个外链查看其定义解释,例如下面示例中,选中卷积类型节点,点击属性视图右上角的图标,则打开有关该算子的解释信息网页如图:
在属性视图中,对于部分输入信息有详细的值信息可通过点击‘详情’按钮查看值信息,值的排列根据其特征采用json格式进行排列。示例如图:
7.4. 模型结构视图¶
模型结构视图用于查看和搜索模型的所有信息,以树形结构方式展示,根节点为模型名称,模型名称下一级为节点包括输入输出节点,算子节点,节点的下一级为输入输出,属性信息。
模型结构视图与对应的模型编辑器视图有联动作用,当切换模型编辑器时,模型结构视图自动刷新为新的模型内容,在其中一个视图选中某节点,另一视图也会选中对应的节点并跳转到其可见的位置。
7.4.1. 搜索功能¶
搜索功能提供了丰富的搜索方式,支持搜索算子名称,类型,属性,输入,输出名称,同时也支持全局搜索。并且也支持浏览搜索历史记录,重新执行历史搜索任务。 以上功能可通过模型结构视图的搜索框,搜索工具按钮协同工作。 搜索工具栏按钮:
从左到右依次为:搜索历史查看;搜索框文本输入;区分大小写;正则表达式;搜索类型下拉列表选择。
7.5. 算子类型统计视图¶
算子类型统计视图与对应的模型编辑器视图有联动作用,当切换模型编辑器时,算子类型统计视图自动刷新为新的统计内容,在其中一个视图选中某节点,另一视图也会选中对应的节点并跳转到其可见的位置。 点击每一列的标题栏可进行排序,默认按照字母的顺序进行排序,第一次点击为正序,再次点击则为相反的顺序。
算子类型统计视图工具栏中包含两个按钮:
刷新:主要针对onnx文件模型的算子类型统计输入输出部分内容,如果没有安装TopsIDEAS插件,将无法获取这部分内容,安装之后,如果没有自动获取输入输出部分信息,则需要手动点击刷新获取该部分信息。
导出CSV:可以将表格内容导出为csv文件。
7.6. 书签视图¶
算子类型统计视图与对应的模型编辑器视图有联动作用,当切换模型编辑器时,算子类型统计视图自动刷新为新的模型包含的书签内容,每一条书签信息与一个节点对应,在其中一个视图选中某节点或书签信息,另一视图也会选中对应的节点或书签信息并跳转到其可见的位置。
书签视图支持两个右键菜单操作:
编辑书签:对已经存在的书签名称或内容进行修改。
删除书签:删除书签后,模型图中对应的节点高亮显示应取消。
8. 混精校准透视图¶
混精校准透视图主要用于执行模型混精校准任务,并查看生成的校准结果。包含Tops项目的创建,混精模型的导入,混精参数配置,下发,以及混精校准结果查看等视图。
混精校准透视图默认显示布局包含以下视图:
Tops项目导航视图:左上角位置,以树形结构显示Tops项目构成,包含:模型,hlir,配置构型等节点,每一个节点关联对应编辑器可以双击打开进行查看和编辑对应信息;
模型编辑器:居中位置,展示模型图结构,增加了校准结果信息标记;
混精校准配置编辑器:居中位置,用于编辑混精校准配置相关参数,查看分析记录;
Tops目标服务器:左下角位置,用于配置执行混精操作的目标机器;
模型结构视图:左下角位置,以树形结构显示节点列表,输入输出以及属性信息,并且提供搜索功能,增加了校准结果信息标记;
大纲视图:左下角位置,显示模型的缩略图;
控制台视图:下方位置,显示操作过程中一些提示性信息;
算子校准结果详情视图:下方位置,显示当前所展示的hlir模型中所选中算子的校准结果详情,包含历史记录;
量化结果视图:下方位置,显示选中的分析记录所对应的模型层面混精校准结果和算子层面混精校准结果;
书签视图:下方位置,显示当前所展示模型中所有添加的书签信息;
算子类型统计视图:下方位置,显示当前所展示的模型中所有op的列表,并且统计出其类型以及输入输出形状,支持导出csv文件;
属性视图:右边位置,显示所选中的节点包含的属性信息。包含节点的基本信息,输入,输出。针对校准结果hlir模型图增加了校准结果,校准配置,
如上面所介绍的,大多数视图在模型透视图中已经存在,功能和使用方式并未发生很大的变化,因此下面将结合混精校准流程只对新增的视图展开详细的介绍。
8.1. 混精校准流程¶
混精校准是基于hlir模型图,通过指定算子的statistic_id反复调整混精方案中fp32算子的数量以及其它相关混精配置参数,下发混精任务在目标机器,然后获取分析结果返回到客户端,查看结果是否符合精度要求,在符合精度要求的条件下,寻找到最优的混精方案。
在执行混精校准操作时,如果启动的TopsModelGraph不在混精校准透视图下,可以在主工具栏菜单点击混精校准透视图进行切换;如果整体UI视图布局不是所期望的,或者少了某一个视图,则可通过点击主菜单:视图->重置布局,恢复默认的混精校准透视图布局,也可点击主菜单:视图->显示视图->xxx视图,打开想要查看的视图。
混精校准的流程大致如下:
创建目标服务器节点,选择激活目标服务器,用于执行混精校准业务;
创建Tops项目,构建混精任务;
导入模型文件;
导入样本数据集;
默认执行全量的混精校准任务;
查看混精结果,判断是否符合预期;
调整混精算子数量以及混精参数,再次下方混精任务,反复调试,直到获得想要的结果。
8.1.1. 创建目标服务器节点¶
在Tops目标服务器视图,右键菜单选择 新建->服务器节点,创建目标机,输入相关配置,如果期望立即激活设置为混精良化运行环境则勾选”是否为开发节点”,如图:
Tops目标服务器视图支持如下右键菜单操作:
新建:新建一个目标服务器节点;
打开:重新打开目标服务器配置界面,修改配置;
激活为开发节点:激活服务器,使用当前服务器配置作为目标服务器进行混精校准业务的执行,同时所有项目的目标服务器节点都会更新为激活服务器;
删除:删除目标服务器。
目标服务器节点有三种状态:
状态图标 |
说明 |
---|---|
服务器处于离线状态,连接异常 |
|
服务器处于在线状态,可用于连接 |
|
服务器处于在线状态,并且成功连接,当前处于激活状态,可用于下发混精校准业务,激活状态的节点字体为黑体加粗 |
8.1.2. 创建Tops项目¶
在Tops项目导航视图,右键菜单选择 新建->Tops项目,输入相关配置,默认创建的项目目录结构如图:
Tops项目导航视图支持如下右键菜单操作:
新建:在任何位置都可以通过右键菜单‘新建’创建一个Tops项目;
打开:可针对模型,hlir文件,构建配型节点打开对应的编辑器界面,也可双击打开;
复制,粘贴,剪切,删除:复制或剪切对应的节点内容然后可在同级位置进行粘贴;
刷新:当项目资源发生变化后,如果资源导航视图未能理解刷新,可通过刷新按钮来进行手动刷新,主要应用场景为在workspace文件目录中变更资源后刷新资源导航视图。
8.1.3. 导入onnx模型¶
选择需要测试的onnx模型文件,复制然后粘贴在项目导航视图的模型节点中,双击即可打开模型图查看。
8.1.4. 混精校准初始配置¶
在项目导航视图中双击编译配置,打开配置界面:
选择onnx文件,通过点击Browse浏览项目结构内容,选择onnx文件:
2. 导入Sample Data Set,在样本数据集管理界面,点击样本文件工具栏的”Add sample file”按钮,浏览添加样本数据集:
所有编译配置完成后,进行保存 Ctrl+s
由于目前尚不知道算子的统计id,默认不指定fp32精度算子以及需要dump统计分析结果的算子,则在混精运算中,默认所有算子fp16精度(除去部分默认仅仅支持fp32精度的算子),所有算子均dump统计分析结果(出去部分默认无统计分析结果的算子)。基于上面的基本配置,便可以执行一次全量混精校准业务。
默认fp32精度算子:
log,exp,tanh
默认不统计分析结果算子:
transpose,reshape,not,broadcast_in_dim,compare,slice,convert,resize,concatenate
8.1.5. 全量混精校准执行¶
在主工具栏按钮点击”Calibration Configuration” 选择创建的项目,配置构型:
持续点击下一步直至完成,下发执行首次的全量混精校准任务
Console中将实时打印混精校准业务执行的状态信息,直至混精校准执行完成,弹窗提示如下:
8.1.6. 混精量化结果查看¶
当上一步任务显示执行成功之后,可选择查看分析记录,切换至分析记录页面查看分析结果,如果未看到,点击分析记录工具栏刷新按钮,则会看到分析记录显示出最新执行的一条混精量化校准分析结果,如图:
分析记录页面提供了丰富的查找功能,搜索输入框可以输入分析指令中想要查找的信息片段;分析数据统计类型,可以选择基本数据统计或复杂数据统计,默认为所有;也可以指定查询范围开始时间和结束时间;输入完所有查询条件后点击查询按钮,则可以过滤出期望看到的分析结果。
每一条分析记录包含了时间信息,目标机器的地址信息,统计类型,分析指令详情,校准结果。 分析记录列表支持右键菜单:浏览,删除,刷新。
浏览:在文件系统中查看分析结果;
删除:删除选定的分析记录;
刷新:当文件系统中分析记录资源发生变化时,可手动点击刷新,更新分析记录显示。
在分析记录列表中,点击‘@’列按钮,同浏览功能一样可打开分析结果所在文件系统目录;点击‘详情’可通过hlir图编辑器视角查看分析结果,通过选中某一条分析记录双击可起到相同作用;点击删除即删除分析记录。
在分析记录列表下方显示记录详情,当在分析列表中选中某一条分析记录时,记录详情部分信息自动更新为该记录的详细内容,分为基本信息和分析结果。
基本信息中包含了:模型名称,分析服务器地址,分析数据统计类型以及分析指令。 分析结果:是一个来自底层TopsIDEAS执行混精量化任务生成的json格式的结果文件。
分析结果页面如图:
如果觉得展示窗口比较小,不方便查看,点击分析结果页面右上角的按钮,则可以通过打开一个新的独立窗口来进行结果查看。
8.1.7. 量化结果视图¶
量化结果视图从整体层面可以查看量化结果的每一项指标。在默认的量化透视图中,量化结果视图处于下方,打开量化结果视图,选中某一条分析记录,则可以查看量化结果。 模型分析结果页,查看模型层面分析结果:
如果模型输出存在多个,可通过切换模型输出名称,查看不同的模型输出结果。 每一项校准结果pass值如果是true则以绿色背景高亮显示,false则以红色背景高亮显示。
算子分析结果页,查看算子层面分析结果:
其中‘pass’列根据结果的true/false采用绿色/红色背景高亮;numpy_allclose列结果如果是非pass,则可通过点击‘详情’链接查看fail的详细信息。
8.1.8. 混精校准结果在HLIR图中的展示¶
通过双击分析记录打开hlir图编辑器,可通过模型图视角查看分析结果,如图:
在混精结果的模型图中,节点分为了四类颜色:
绿色:表示混精模式下,精度达标;
红色:表示混精模式下,精度未达标;
淡紫色:表示无统计分析结果;
黄色:表示RAW模式中,模型混精校准结果整体PASS,但算子校准结果FAIL。
同时,在属性视图中增加了标签页‘校准结果’,可显示选中算子的混精校准分析结果,当有多个输出时,可通过切换输出名称,查看不同输出的分析结果。
8.1.9. 算子校准结果详情视图¶
算子校准结果详情视图从算子层面查看混精校准历史记录,可以直观的看到算子每一次的分析结果,从而进行对比查看。
在激活算子校准结果详情视图情况下,在混精结果的模型图中选中单算子,该视图则在历史维度上以表格的形式展示出算子的历史分析结果记录,如图:
8.1.10. 混精算子以及统计算子配置¶
当一次全量的混精校准任务执行完成后,如果结果未pass,则需要反复修改指定fp32精度的算子,以及相关混精校准参数,进行再次混精校准任务执行,以期达到最终pass的目标。
配置fp32精度算子的方式有三种:
通过分析结果hlir图,选中需要修改精度的算子,在属性视图中,切换至校准配置标签页,勾选该算子是否设为fp32精度以及是否dump统计信息,hlir图中该算子图元右下角也会添加对应的装饰图标,也可以将鼠标移动到需要设置的算子图形上,然后在算子图形右上区域出现的悬停工具栏进行设置。如图:
在分析结果hlir编辑器工具栏同样提供了下发混精校准任务的按钮,当基于当前分析结果再次配置完混精算子后,可直接通过此按钮执行新的混精校准任务。
通过校准配置页面配置,打开配置构型编辑器,切换到校准配置页面,首先打开全量混精校准任务中产生的hlir文件,然后在校准配置中选中hlir文件,绑定hlir文件以获取算子统计id信息。在Select Calibration Op和Select Statistic Op列表中进行勾选,如图:
该配置视图分别提供了全选按钮和全部取消的按钮,选择统计算子也支持按照统计id和算子类型两种选中模式。
在配置Select Op部分内容时,必须保持对应的hlir文件同时打开,也可以通过hlir图形编辑器右键菜单选择”添加/删除 量化/统计 算子”.在配置界面添加和图形界面添加都将保持同步,并且在hlir图算子图元上添加对应的装饰图元,如图:
8.1.11. 模型结构视图增强¶
在查看量化分析结果的hlir图时,与之关联的模型结构视图也对pass/fail的算子进行了标注,如图:
8.2. 模型调试流程¶
8.2.1. 模型调试配置¶
打开调试配置编辑器,在创建的Tops项目中鼠标左键双击调试配置节点,打开对应配置编辑器。
基本调试参数配置 在编辑器左侧的树形结构界面上,点击Onnx节点,后在编辑器右侧的详细配置信息界面中选择需要调试的ONNX模型文件。
在当前编辑器中调整各调试参数的的阈值和需要设置为FP32的算子。
输入覆盖参数配置 在编辑器左侧的树形结构界面上,点击Inputs节点,通过右键菜单新建input或者右侧的配置编辑界面完成新建输入覆盖信息的配置。
点击树形结构上新增的input节点,可以在右侧的配置编辑界面完成形状,数据以及随机范围值等详细信息的填写。
8.2.2. 启动模型调试任务¶
点击调试配置编辑器右上的调试配置启动按钮打开调试配置向导。
点击下一步进入调试配置信息向导页,并查看确定相关配置信息。
点击下一步进入设置为FP32的算子列表信息。
点击完成后会在对应的目标服务器上执行模型调试任务,此时可在下面控制台中看到调试任务执行输出信息。
8.2.3. 查看调试任务结果¶
当调试任务任务执行完成后,在对应的弹出提示框中选择查看调试记录,也可直接打找到的模型图,查看相关算子的调试结果。
当选择查看调试记录后,会自动跳转到配置构型编辑器中的调试记录编辑器页,并可以在列表中查看到通过上述操作并执行的调试记录条目,可看到当前调试结果是未通过的。
需要查看相关调试找到的最小错误子图结果,则可以双击调试记录列表中的条目,也可以点击条目对应操作列中的查看详情,打开通过调试找到的最小错误子图,来查看相关算子的调试结果,右侧属性视图也可查看相关调试配置信息以及生成的样本数据信息。
9. 在线升级¶
注意:
前提条件,针对使用exe安装包或者deb,rpm安装包安装的客户端。需要当前对客户端安装所在目录进行权限设置,保证当前用户在对应目录下有写入权限。
在windows系统中可以通过安全设置对话框进行设置,如下图所示:
在linux系统中可以通过sudo chown -R groupname:username TopsModelgraph/installpath,如下图所示:
自动更新
在客户端启动时,会自动检查当前客户端版本是否为最新版本,如果不是,会显示版本升级提示弹出框,通过点击[安装更新]按钮完成版本升级。
当更新完成后,点击重新启动最终完成客户端版本更新。
手动更新
同时也可以通过客户端主菜单中的帮助->检查更新完成手动版本更新检查。
10. FAQ¶
10.1. 使用报错信息汇总¶
windows版本安装时,路径中不能存在中文或者空格等特殊字符,否则无法启动安装程序。
当安装系统为Centos,并且版本选择的是7.9,其默认GCC版本是4.8.2,需要将GCC版本升级为5.4.0,升级步骤参见Centos/RHEL安装(rpm)相关描述。
如果打开的onnx或者pb等模型文件非常大时可能会出现卡顿,可以在安装目录下找TopsModelGraph.ini文件修改里面的-Xmx8000m参数根据机器的内容调整(16G内存可以改为-Xmx16000m)。
针对使用exe安装包或者deb,rpm安装包安装d的客户端。需要当前对客户端安装所在目录进行权限设置,保证当前用户在对应目录下有写入权限。