✏️
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. 三、网络模型迁移
  2. 3.2 FP32 模型生成

3.2.3 编译MXNet模型

BMNETM是针对MXNet的模型编译器,可以将MXNet格式的模型结构文件和参数文件(比如:lenet-symbol.json和lenet-0100.params)经过图编译优化后,转换成BMRuntime所需的文件。可选择将每一个操作的NPU模型计算结果和原始模型在mxnet框架上的计算结果进行对比,保证模型转换的正确性。

bmnetm的使用例程参见${BMNNSDK}/examples/nntc/bmnetm。

  • bmnetm安装:

cd /workspace/bmnet/bmnetm/
pip3 install bmnetm-x.x.x-py2.py3-none-any.whl # <x.x.x>为对应SDK版本
  • 命令行形式:

    python3 -m bmnetm [--model=<path>] \
                      [--weight=<path>] \
                      [--shapes=<string>] \
                      [--input_names=<string>] \
                      [--net_name=<name>] \
                      [--opt=<value>] \
                      [--dyn=<bool>] \
                      [--outdir=<path>] \
                      [--target=<name>] \
                      [--cmp=<bool>] \
                      [--enable_profile=<bool>] \
                      [--list_ops]

    参数介绍如下:

    args

    type

    Description

    model

    string

    Necessary. MxNet symbol .json path

    weight

    string

    Necessary. MxNet weight .params path

    shapes

    string

    Necessary. Shapes of all inputs, default use the shape in prototxt, format [[x,x,x,x],[x,x],…], these correspond to inputs one by one in sequence

    input_names

    string

    Optional. Set input name according to .json. They correspond to shapes one by one. Default: “data”. Format “name1,name2,…”.

    net_name

    string

    Necessary.Name of the network, default use the name in prototxt

    opt

    int

    Optional. Optimization level. Option: 0, 1, 2, default 1.

    dyn

    bool

    Optional. Use dynamic compilation, default false.

    outdir

    string

    Necessary. Output directory

    target

    string

    Necessary. Option: BM1682, BM1684; default: BM1682

    cmp

    bool

    Optional.Check result during compilation. Default: true

    mode

    string

    Optional. Set bmnetc mode. Option: compile, GenUmodel. Default: compile.

    enable_profile

    bool

    Optional. Enable profile log. Default: false

    list_ops

    Optional. List supported ops.

  • Python形式:

import bmnetm
## compile fp32 model
bmnetm.compile(
    model = "/path/to/.json",       ## Necessary
    weight = "/path/to/.params",    ## Necessary
    outdir = "xxx",                 ## Necessary
    target = "BM1684",              ## Necessary
    shapes = [[x,x,x,x], [x,x,x]],  ## Necessary
    net_name = "name",              ## Necessary
    input_names=["name1","name2"]   ## optional, if not set, default is "data"
    opt = 2,                        ## optional, if not set, default equal to 1
    dyn = False,                    ## optional, if not set, default equal to False
    cmp = True,                     ## optional, if not set, default equal to True
    enable_profile = True           ## optional, if not set, default equal to False
)

bmnetm若成功,输出的 log 最后会看到以下信息:

######################################
# Store bmodel of BMCompiler.
######################################

bmnetm成功后,将在指定的文件夹中生成一个compilation.bmodel的文件,该文件则是转换成功的 bmodel,用户可以重命名。

上一页3.2.2 编译TensorFlow模型下一页3.2.4 编译PyTorch模型

最后更新于3年前