✏️
BMNNSDK2开发手册
  • BM1684 BMNNSDK2 入门手册
  • 一、BMNNSDK2软件包
    • 1.1 BMNNSDK2 简介
    • 1.2 BMNNSDK2 文档
    • 1.3 基本概念介绍
    • 1.4 获取BMNNSDK2 SDK
    • 1.5 安装BMNNSDK2 SDK
      • 1.5.1 环境配置-Linux
      • 1.5.2 环境配置-Windows
      • 1.5.3 环境配置-SoC
    • 1.6 更新BMNNSDK
    • 1.7 参考样例简介
    • 1.8 BMNNSDK2更新记录
    • 1.9 BMNNSDK2已知问题
  • 二、快速入门
    • 2.1 跑通第一个例子:综述
    • 2.2 跑通第一个例子:模型迁移
    • 2.3 跑通第一个例子:算法迁移
  • 三、网络模型迁移
    • 3.1 模型迁移概述
    • 3.2 FP32 模型生成
      • 3.2.1 编译Caffe模型
      • 3.2.2 编译TensorFlow模型
      • 3.2.3 编译MXNet模型
      • 3.2.4 编译PyTorch模型
      • 3.2.5 编译 Darknet 模型
      • 3.2.6 编译ONNX模型
      • 3.2.7 编译Paddle模型
    • 3.3 INT8 模型生成
      • 3.3.1 准备lmdb数据集
      • 3.3.2 生成FP32 Umodel
      • 3.3.3 生成INT8 Umodel
      • 3.3.4 精度测试
      • 3.3.5 生成INT8 Bmodel
      • 3.3.6 auto_cali一键量化工具
    • 3.4 实例演示
      • 3.4.1 create_lmdb_demo
      • 3.4.2 classify_demo
      • 3.4.3 face_demo
  • 四、算法移植
    • 4.1 算法移植概述
    • 4.2 C/C++编程详解
    • 4.3 Python编程详解
    • 4.4 解码模块
    • 4.5 图形运算加速模块
    • 4.6 模型推理
    • 4.7 实例演示
  • 五、打包和发布
    • 5.1 概述
    • 5.2 PCIE加速卡模式
    • 5.3 SOC模式
  • 附录
由 GitBook 提供支持
在本页
  1. 三、网络模型迁移

3.1 模型迁移概述

上一页2.3 跑通第一个例子:算法迁移下一页3.2 FP32 模型生成

最后更新于2年前

​能够运行于算丰系列 TPU平台的模型是定制模型BModel,用户需要首先进行模型迁移,把训练好的其他框架下的模型转换为BModel才能在算丰系列TPU上运行。

当前BMNNSDK已支持绝大部分开源的 Caffe、Darknet、MXNet、ONNX、PyTorch、TensorFlow、Paddle Paddle等框架下的算子和模型,更多的网络层和模型也在持续支持中。关于对算子和模型的支持情况,请查看。

#
深度学习框架
版本要求
使用的bmnetx模型编译器

1

Caffe

官方版本

bmnetc

2

Darknet

官方版本

bmnetd

3

MXNet

mxnet>=1.3.0

bmnetm

4

ONNX

onnx == 1.7.0

(Opset version == 12) onnxruntime == 1.3.0 protobuf >=3.8.0

bmneto

5

PyTorch

pytorch>=1.0.0

bmnetp

6

TensorFlow

tensorflow>=1.10.0

bmnett

7

Paddle Paddle

paddlepaddle>=2.1.1

bmpaddle

我们提供了NNToolChain工具套件帮助用户实现模型迁移。对于BM1684平台来说,它既支持float32模型,也支持int8量化模型。其模型转换流程以及章节介绍如图:

NNToolChain工具套件提供了bmnetc、bmnetd、bmnetm、bmneto、bmnetp、bmnett、bmnetu等工具,分别用来转换Caffe、Darknet、MXNet、ONNX、Pytorch、Tensorflow、UFramework(算能科技自定义的模型中间格式框架)等框架下的模型:经前端工具解析后,模型编译器BMNet Compiler会对各种框架的模型进行离线转换,生成 TPU 能够执行的指令流并序列化保存为BModel文件;当执行在线推理时, 由BMRuntime负责BModel模型的读取、数据的拷贝传输、TPU推理的执行以及计算结果的读取等。

当用户模型中所需要使用的网络层或算子不被 BMNNSDK 所支持,需要开发自定义算子或层时,可以使用我们提供的BMNET 前端插件,在已提供的 BMNET 模型编译器的基础上增加用户自定义层或者算子。目前支持以下几种实现自定义层或算子的方式:

  1. 基于BMLang开发:BMLang 是一种面向 Sophon TPU 的上层编程语言,适用于编写高性能的深度学习、图像处理、矩 阵运算等算法程序。我们提供了基于 C++ 和基于 Python 两种 BMLang 编程接口。详情请参考SDK中document目录下的用户手册《BMLang.pdf》。

  2. 基于 BMCPU 开发:BMCPU 支持用户对 TPU 不能实现的 layer 进行 CPU 编程。详情请参考SDK中document目录下的用户手册《NNToolChain.pdf》中的6.4节“ BMCPU插件使用”。

若您在使用过程中遇到问题,可联系算能科技获取技术支持。

如果需要运行fp32 BModel,请参考章节。

如果需要运行in8 BModel,需要先准备量化数据集、将原始模型转换为fp32 UModel、再使用量化工具量化为int8 UModel、最后使用bmnetu编译为int8 BModel,具体请依次参考章节。

基于 OKKernel (BMKernel)开发:OKKernel(BMKernel) 是面向用户推出的针对 Sophon TPU 的底层编程模型,通过根据芯片底层指令集封装的一套原子操作接口,向用户最大程度提供芯片的可编程能力。详情下载网页版。

3.2 FP32模型生成
3.3 INT8模型生成
《OKKernel用户开发文档》
《NNToolChain用户开发手册》
模型转换流程及对应章节介绍图