【寒武纪(6)】MLU推理加速引擎MagicMind,最佳实践(二)混合精度

混合精度在精度损失范围内实现数倍的性能提升。

支持的量化特性

【寒武纪(6)】MLU推理加速引擎MagicMind,最佳实践(二)混合精度_第1张图片

构建混合精度的流程

构建混合精度的流程如下,支持浮点或半精度编程,以及量化精度编程两种方式。

  • 浮点或半精度 无需提供tensor分布
  • 量化编程需要设置tensor分布。

【寒武纪(6)】MLU推理加速引擎MagicMind,最佳实践(二)混合精度_第2张图片

网络粒度和算子粒度的设置输入精度和输出数据类型

网络中算子的输入精度和输出数据类型在不做修改时维持原始精度。如果需要修改输入精度和输出的类型,有两种方式:
1、按照网络粒度设置。推荐方法,整个网络所有的算子所使用的输入精度和输出数据类型都设置了。
2、按照算子粒度设置。精细化设置每一个算子使用的输入精度和输出类型。比较灵活但是比较复杂。算子粒度比网络粒度的优先级高,同时设置时,会使用算子粒度。
在这里插入图片描述

网络设置的配置示例:
【寒武纪(6)】MLU推理加速引擎MagicMind,最佳实践(二)混合精度_第3张图片

算子颗粒度设置示例:
【寒武纪(6)】MLU推理加速引擎MagicMind,最佳实践(二)混合精度_第4张图片

【寒武纪(6)】MLU推理加速引擎MagicMind,最佳实践(二)混合精度_第5张图片
【寒武纪(6)】MLU推理加速引擎MagicMind,最佳实践(二)混合精度_第6张图片

2混合精度编程

基本概念:

  • 整网输入
  • 整网输出
  • 中间层输入
  • 中间层输出
  • const tensor输出

默认情况下

整网输入、整网输出、const tensor 在网络创建时直接指定或者后续更改。
网络中间层输入类型由上一层算子连接关系自动推导,中间层输出类型(除ICastNode可以指定目标类型外)默认为float 32

设置类型

使用INodeSetxxx 后,即使不同的网络层的类型不匹配,MagicMind 会自动完成必要的数据转换。

【寒武纪(6)】MLU推理加速引擎MagicMind,最佳实践(二)混合精度_第7张图片

一种途径:创建float32 的网络,然后设置INodeSetxxxx偏好。

【寒武纪(6)】MLU推理加速引擎MagicMind,最佳实践(二)混合精度_第8张图片

第二种途径:改变整网的输入类型,const tensor类型、整网输出类型,结合偏好输入和输出类型,构建全float16网络,减少MagicMind的自动插入数据类型转换Node。【寒武纪(6)】MLU推理加速引擎MagicMind,最佳实践(二)混合精度_第9张图片

3 量化数据类型

onnx框架量化参数和寒武纪量化参数,以及数值范围Range

【寒武纪(6)】MLU推理加速引擎MagicMind,最佳实践(二)混合精度_第10张图片

手动设置量化参数

如果用户知道数据的分布范围,可以调用接口,将数据范围手动设置到Range类。

使用校准器获得并设置数据的分布范围

基于浮点模型和样本数据—>计算并设置数据分布范围,并根据滤波器的数据分布特点选择不同的量化粒度。

要求:

  • 提供浮点网络
  • 样本数据

快速生成量化模型并完成部署。
【寒武纪(6)】MLU推理加速引擎MagicMind,最佳实践(二)混合精度_第11张图片
【寒武纪(6)】MLU推理加速引擎MagicMind,最佳实践(二)混合精度_第12张图片
【寒武纪(6)】MLU推理加速引擎MagicMind,最佳实践(二)混合精度_第13张图片

远端校准

校准器一般运行在本地MLU,(也就是校准需要运行MLU?),可以远程调用MLU。
【寒武纪(6)】MLU推理加速引擎MagicMind,最佳实践(二)混合精度_第14张图片

校准器会按照给定的设置进行数据动态范围的调整和设置。

量化统计方法

两种方法:线性统计和最小二乘统计(最小二乘仅支持int8)。

量化粒度设置

两种量化设置 per_tensor :按照张量量化,per_axis:按照通道量化。

配置选项:weight_quant_granularity 和 custom_nodes

1weight_quant_granularity 配置除DepthWise卷积外的全局量化粒度

【寒武纪(6)】MLU推理加速引擎MagicMind,最佳实践(二)混合精度_第15张图片

2custom_nodes 配置DepthWise卷积量化粒度

3custom_nodes 支持“按照节点类型”配置某些类的粒度

4ITensor::SetDynamicRange ITensor::SetDynamicRangPerAxis 配置某算子是否分通道

量化对称性

从量化统计到量化参数计算,支持对称量化和非对称量化。
在这里插入图片描述

舍入模式

【寒武纪(6)】MLU推理加速引擎MagicMind,最佳实践(二)混合精度_第16张图片

【寒武纪(6)】MLU推理加速引擎MagicMind,最佳实践(二)混合精度_第17张图片

(正文完)

你可能感兴趣的:(寒武纪)