MTNN 开发者指南
适用版本: MTNN v1.6.0 | 目标平台: 摩尔线程 M1000
MTNN(Moore Threads Neural Network)是一套面向 M1000 设备的模型编译工具与推理运行时。本文从 MTNN 基础概念、模型编译、推理部署、模型仓库和 ONNX Runtime EP 五个方面介绍完整的开发与部署流程。
目录
1. MTNN 介绍
MTNN 可帮助开发者将训练好的深度学习模型部署到 M1000 设备,实现设备端机器学习推理。
1.1 主要特性
- 平台支持: 支持 M1000 Linux 平台。
- 开发接口: 提供 C/C++ API,并支持 Python 调用。
- 轻量高效: 通过模型压缩和图优化降低内存占用,提升推理效率。
1.2 开发流程
MTNN 的开发工作流主要分为两个阶段:
-
使用
mtc工具将 ONNX 模型转换为.mtnn模型。转换过程中可应用量化等优化,缩减模型大小和推理延迟,同时尽可能降低精度损失。 -
应用程序通过 MTNN Runtime API 加载并运行
.mtnn模型,基本调用流程如下:mtnn_init→mtnn_inputs_get→mtnn_inputs_set→mtnn_inference→mtnn_outputs_get
此外我们为开发者提供了 模型仓库,汇总了目前在 M1000 NPU 上已支持的模型,涵盖图像分类、目标检测、图像分割及其他常见任务。帮助开发者快速上手和部署自己的AI模型。
1.3 MTNN 工作流程
1.4 支持的算子
MTNN 通过 ONNX 标准支持以下常用算子:
| 类别 | 支持的算子 |
|---|---|
| 基础数学 | Add, Sub, Div, Mul, Abs, Exp, Log, Mod, Neg, Pow, Reciprocal, Sign, Sin, Sqrt, Sum, Mean, Erf, Ceil, Floor |
| 比较与逻辑 | Greater, GreaterOrEqual, Less, LessOrEqual, Equal, logical_and, Xor, Where, NonZero |
| 激活函数 | Clip, Celu, Sigmoid, HardSigmoid, HardSwish, LeakyRelu, Softplus, Elu, PRelu, Relu, Softsign, Tanh, Softmax, Logsoftmax |
| 归一化 | BatchNormalization, InstanceNormalization, LRN, MeanVarianceNormalization |
| 卷积与矩阵运算 | Conv2D, Conv2DTranspose, Gemm, MatMul, Einsum |
| 池化与采样 | MaxPool, AveragePool, GlobalAveragePool, GlobalMaxPool, MaxRoiPool, Resize, Upsample |
| 张量与形状操作 | Reshape, Flatten, Expand, ReverseSequence, Size, Squeeze, Unsqueeze, Shape, Concat, Split, Transpose, Slice, Tile, DepthToSpace, SpaceToDepth, Pad |
| 索引操作 | ArgMin, ArgMax, Gather, GatherND, ScatterND, Cumsum |
| 循环神经网络 | LSTM, GRU |
| 规约操作 | ReduceSum, ReduceMean, ReduceMax, ReduceMin, ReduceL1, ReduceL2, ReduceLogSum, ReduceLogSumExp, ReduceProd, ReduceSumSquare |
| 其他 | Cast, CastLike, Dropout |