4.1. 移植开发综述

4.1.1. 算法移植流程

基于SOPHON BM168X进行产品开发会经历如下几个阶段:

  1. 评测选型: 根据应用场景,确定使用的产品形态。

  2. 模型迁移: 将原始深度学习框架下训练生成的模型转换为BM168X平台运行的FP32 BModel,必要时使用BMLang开发不支持的算子;使用量化集量化生成INT8 BModel,并测试调优确保INT8 BModel精度符合要求(推荐使用4N Batch BModel以获得最佳性能)。

  3. 算法移植: 基于BM168X硬件加速接口,对模型的前后处理及推理现有算法进行移植。

  4. 程序移植: 移植任务管理、资源调度等算法引擎代码及逻辑处理、结果展示、数据推送等业务代码。

  5. 测试调优: 网络性能与精度测试、压力测试,基于网络编译、量化工具、多卡多芯、任务流水线等方面的深度优化。

  6. 部署联调: 将算法服务打包部署到BM168X硬件产品上,并在实际场景中与业务平台或集成平台进行功能联调;必要时在生产环境中调整参数配置并收集数据进一步优化模型。

在移植工作开始前,请先确保已经按照第一节的内容下载并安装配置好所需环境:

  • 主机及硬件环境已经准备好

  • SDK压缩包正确解压

  • 若使用PCIe加速卡,确保正常安装驱动,并正常发现设备

4.1.2. 典型视频深度学习分析任务

一个典型的深度学习视频分析任务pipeline,通常包括:视频源 > 视频解码 > 预处理 > 推理 > 后处理 > 业务逻辑 > 视频/图片编码等环节。SOPHON设备对各环节的硬件加速支持情况如下:

算法步骤

支持硬件加速

sophon-OpenCV

sophon-FFmpeg

Native接口

视频/图片编解码

支持

Y

Y

BMCV(图片)/SAIL

输入预处理

支持

Y

N

BMCV/SAIL

模型推理

支持

N

N

BMRuntime/SAIL

输出后处理

部分支持

N

N

BMCV

  • 对于不支持的层或者算子可使用BMLang或者ARM 开发,然后融合到BModel中,参考 SOPHONSDK/tpu-nntc/doc 目录下的《 BMLang_cpp技术参考手册 》和 《 BMLang_python技术参考手册 》

  • 对于其他需要使用智能视觉深度学习处理器加速的算法可使用基于智能视觉深度学习处理器原子操作接口的 TPUKernel 开发,参考《 TPUKernel用户开发文档

  • MLIR模型支持情况和测试的模型案例,请参见《 TPU-MLIR开发参考手册

  • NNTC算子支持情况和已经测试的模型情况,请参见《 TPU-NNTC开发参考手册

  • 关于单模型或场景的例程可参考sophon-demo,关于使用多线程构建多模型推理任务pipeline示例代码可参考sophon-pipeline