1.2. 认识 Open Explorer

1.2.1. 什么是 OE

OE 是 Open Explorer 的缩写简称,中文名为天工开物(以下简称 OE),它是基于地瓜机器人自研计算平台打造的全生命周期开发平台, 主要包括模型编译优化工具集、算法仓库和应用开发 SDK 三大功能模块。基于这三大功能模块开发的应用参考解决方案,为智能驾驶、智能物联网等行业方案提供了案例支撑。

../../../_images/learn_oe_1.png
  1. 模型编译优化工具集:聚焦于智能业务场景,包括完成算法模型转换与编译流程中所涉及到的一系列软件工具集,提供模型量化、优化、编译、调试等功能。

  2. 算法仓库:贴合时下机器人领域的基础算法结构,和重点业务算法技术点,地瓜机器人提供了丰富的开源最佳实践,赋能地瓜机器人合作伙伴更快、更省地开发出自己的智能产品。

  3. 应用开发 SDK:提供丰富的基础接口与工具,支撑业务算法在旭日平台的部署,可以完整支撑客户在仿真和物理环境下的部署全流程。

OE 可以为地瓜机器人合作伙伴提供丰富多样的算法资源、灵活高效的开发工具和简单易用的开发框架。 OE 的特色和优势可以概括为以下四个方面:

../../../_images/learn_oe_2.png

为了方便用户将各种解决方案部署到地瓜机器人一系列开发板上,我们提供了集开发板系统镜像、开发环境部署、应用参考解决方案示例代码以及用户手册等文件于一体的全量开发包,称之为 OE 包。 在您获取到 OE 包后,可以先按照以下步骤对 OE 进行了解。

  1. 先参考 发布物内容 了解发布包的目录结构;

  2. 再参考 开发板套件及系统镜像说明 章节进行板端系统镜像安装/升级;

  3. 接着通过参考 浮点模型转定点模型指导手册嵌入式应用开发指导 完成模型转换与部署的全流程。

更多更全的 OE 包使用教程,欢迎参考下方指导手册进行了解,相信地瓜机器人的 OE 包可以让您开发更高效,部署更简便!

更多关于 OE 适配的硬件内容,请你详见附录中的 开发板套件及系统镜像说明 章节。

1.2.2. 发布物内容

1.2.2.1. bsp

bsp 目录下包含 resolve.sh 脚本和 tools 文件夹。

其中:

  • resolve.sh 脚本用于下载镜像包。

    注意

    X3 OE 包中此脚本下载的镜像包中包括 X3 SDB、X3 DVB 板端系统镜像。 如您需要其他开发板镜像,请联系地瓜机器人进行获取。

  • tools 文件夹下的 resolve.sh 脚本用于下载 hbupdate 板端升级工具和一些您在 Windows 下会使用到的 USB_Driver 等。 其中,hbupdate 板端升级工具我们为您提供了多平台(win/linux)的版本,内容包括:

    • hbupdate_linux_cli_{version}.tgz;

    • hbupdate_linux_gui_{version}.tgz;

    • hbupdate_win64_{version}.zip。

1.2.2.2. ddk

ddk 目录为主要的开发组件目录,目录下包含了 package 和 samples 文件夹。

1.2.2.2.1. ddk.package

ddk.package 目录下包含了发布物运行的一些基础库和组件。

  • ddk.package.board

    • ddk.package.board 文件夹下为板端可执行程序。

    • hrt_model_exec 是一个模型执行工具 ,可直接在 开发板上 进行评测模型的推理性能、获取模型信息。工具分别提供了 infer 、模型性能分析 perf 和查看模型信息 model_info 三类功能。

    • hrt_bin_dump 是模型的 layer dump 工具,工具的输出文件为二进制文件。

    • install.sh 是一键安装脚本,可以一键将 hrt 工具安装到指定的开发板。

  • ddk.package.host

ddk.package.host 文件夹下为发布物在 x86 开发环境下的环境依赖和工具依赖等。 通过执行该目录下的脚本 install.sh 即可在开发机上安装程序运行的所有环境和工具依赖。 通过执行该目录下的脚本 resolve.sh 即可下载交叉编译工具、torch 等依赖。

1.2.2.2.2. ddk.samples

ddk.samples 下包含了 ai_benchmark、ai_toolchain 和 model_zoo

ai_benchmark 提供了常见的分类、检测和分割模型的评测示例,包括性能评测和精度评测两部分。

ai_toolchain 提供了一些模型算法的一系列示例。 (其中 horizon_model_train_samples 为浮点模型训练框架示例, horizon_model_convert_sample 为浮点模型转定点模型的转换示例, horizon_runtime_sample 为定点模型的上板示例。)

model_zoo 是一个模型库,用于放置工具链示例模型编译的源模型和 runtime 模型。

1.2.2.3. resolve_all.sh

用于自动下载 OE 包内所有可下载的依赖项的脚本。

运行该脚本将依次进行如下内容的下载:

1.执行 ddk/package/host 路径下的 resolve.sh ,下载交叉编译工具、torch 等依赖。

2.执行 ddk/samples/ai_toolchain/model_zoo/runtime/ai_benchmark 路径下的 resolve_ai_benchmark_ptq.sh ,下载上板使用的 bin 模型。

3.执行 ddk/samples/ai_toolchain/model_zoo/runtime/horizon_runtime_sample 路径下的 resolve_runtime_sample.sh ,下载对应示例上板使用的 bin 模型。

4.执行 bsp/tools 路径下的 resolve.sh ,下载 hbupdate 板端升级工具和一些您在 Windows 下会使用到的 USB_Driver 等。

5.执行 bsp 路径下的 resolve.sh ,下载镜像包。

6.执行 ddk/samples/ai_toolchain/horizon_model_convert_sample 文件夹下的所有 00_init.sh ,下载示例对应的校准数据集以及原始模型。

1.2.2.4. run_docker.sh

在评测数据集和 OE 包所需 docker 下载完成的情况下,可以使用如下命令自动挂载 OE 包并启动 docker。

sh run_docker.sh {数据集路径}

sh run_docker.sh {数据集路径} cpu

1.2.3. 关键概念

  • 原始浮点模型,指您通过 TensorFlow/PyTorch 等等 DL 框架训练得到的可用模型,这个模型的计算精度为 float32。

  • 混合异构模型,是一种适合在地瓜机器人计算平台上运行的模型格式。

  • 模型转换,指的是将原始浮点模型或 QAT 转换得到的 onnx 模型转换为地瓜机器人混合异构模型的过程。

  • 模型量化,目前工业界最有效的模型优化方法之一,量化是指定点与浮点等数据之间建立一种数据映射关系,使得以较小的精度损失代价获得了推理性能收益,可简单理解为用“低比特”数字表示 FP32 等数值,如 FP32–>INT8 可以实现 4 倍的参数压缩,在压缩内存的同时可以实现更快速的计算。

  • hbm 文件,即 Horizon BPU Model,HBDK 编译器生成的模型文件,hbm 包含 BPU 指令、模型参数、输入输出描述等信息。

  • PTQ,即训练后量化方案,先训练浮点模型,然后使用校准图片计算量化参数,将浮点模型转为量化模型的量化方法。

  • QAT,即量化感知训练方案,在浮点训练的时候,就先对浮点模型结构进行干预,使得模型能够感知到量化带来的损失,减少量化损失精度的方案。

还有更多针对文档中缩略词的介绍,请您参考 常用缩略语 章节的介绍。