量化是什么?

优化设计以管理量化错误

量化是将连续的无限值映射到一个较小的离散有限值集合的过程。在模拟和嵌入式计算的上下文中,它是关于用数字表示逼近真实世界的值,这种表示引入了对值的精度和范围的限制。量化引入了算法中的各种误差来源,如舍入误差、下溢或溢出、计算噪声和极限环。这导致了理想系统行为和计算数值行为之间的数值差异。

要管理量化的效果,需要选择正确的数据类型来表示真实的信号。您需要考虑用于编码信号的数据类型的精度、范围和伸缩,还需要考虑量化对算法数值行为的非线性累积效应。当您拥有反馈循环等结构时,这种累积效应会进一步加剧。


为什么量化问题

在转换嵌入式硬件设计的过程中需要考虑量化误差。量化误差影响信号处理、无线、控制系统、FPGA、ASIC、SoC、深度学习和其他应用。

信号处理和无线应用中的量化

在信号处理的应用中,量化误差会产生噪声,降低信号的质量信噪比(信噪比)。信噪比以dB为单位,通常描述为每增加一个比特降低x分贝。为了管理量化噪声并将其保持在可接受的水平,您需要选择正确的设置,如数据类型和舍入模式。

优化量化FIR滤波器。

优化量化FIR滤波器。

控制系统中的量化

在设计控制系统时,特别是低功耗微控制器时,可以使用整数或定点算法来平衡实时性能要求和低功耗约束。在这样的设计中,您需要选择数据类型,以适应来自输入传感器的信号的动态范围和精度,同时满足输出信号的精度要求,所有这些都不会因为量化而出现数值差异。

see example).

" data-toggle="lightbox" class="add_margin_0 ">用于磁场定向控制的永磁同步电机的量子化模型(见示例)。

永磁同步电机磁场定向控制量子化模型(看例子).

FPGA、ASIC和SoC开发中的量化

将浮点设计转换为定点设计可以通过减少FPGA资源利用率、降低功耗、满足延迟需求等来帮助最小化功耗和资源消耗。然而,这种转换引入了量化误差,因此在转换设计时必须适当地预算量化噪声。

see example).

" data-toggle="lightbox" class="add_margin_0 ">LTE数字下转换器的量化模型(见示例)。

LTE (看例子).

深度学习中的量化

对于深度学习网络来说,量化是帮助加速推理以及减少嵌入式设备的内存和功耗的重要一步。缩放的8位整数量化保持了网络的准确性,同时减小了网络的规模。这使得部署到内存占用更小的设备上,为其他算法和控制逻辑留下更多空间。

当考虑到目标硬件(GPU, FPGA, CPU)架构时,可以进行量化优化。这包括整数计算、利用硬件加速器和融合层。量化步骤是一个迭代过程,以实现可接受的网络精度。

深度网络量化与部署

了解如何在MATLAB中使用白盒方法对深度神经网络进行量化、校准和验证,以在性能和准确性之间做出权衡,然后将量化的DNN部署到嵌入式GPU和FPGA硬件板上。

read article).

" data-toggle="lightbox" class="add_margin_0 ">规模化MNIST分类率的混淆矩阵。

尺度MNIST分类率的混淆矩阵(读文章).

在本视频中,我们演示了在MATLAB中深度学习量化工作流程。使用模型量化库支持包,我们演示了如何校准、量化和验证诸如Resnet50这样的深度学习网络。
了解深度网络量化,以及在深度网络量化应用程序中什么是量化的。展示了一个部署到GPU和CPU的语义分割网络示例。
了解和下载深度学习工具箱模型量化库支持包。

量化的工作方式

量化误差是非线性运算的累积效应,如信号分数部分的舍入或信号动态范围的溢出。在为嵌入式硬件转换设计时,通过观察设计中的关键信号或变量,并对量化误差进行预算,使数值差异在可接受的容忍范围内,可以将量化误差考虑在内。

控制系统中各个点的量化误差显示量化的累积非线性性质。

控制系统中各个点的量化误差显示量化的累积非线性性质。


用MATLAB和Simulink进行量化

使用MATLAB和Simulink,您可以:

  • 探讨和分析量化误差的传播
  • 自动量化您的设计到有限的精度
  • 调试量化导致的数值差异

探索和分析量化误差

您可以通过自动模型范围的仪器收集仿真数据和统计信息。这些数据的MATLAB可视化使您能够探索和分析您的设计,以了解您的数据类型选择如何影响底层信号。

从仿真中可视化信号的范围和精度。

从仿真中可视化信号的范围和精度。

自动量化您的设计

您可以通过选择特定的数据类型来量化您的设计,或者您可以迭代地探索不同的定点数据类型。使用引导工作流,您可以看到量化对系统的数值行为的总体影响。

或者,您可以解决优化问题,并为您的设计选择最优的异构数据类型配置,以满足系统数值行为的容差约束。

使用定点工具转换工作流程。

使用定点工具转换工作流程。

了解更多关于定点转换的信息:

由于量化而导致的调试数值差异

使用MATLAB,您可以识别、跟踪和调试由于量化(如溢出、精度损失和浪费的范围或设计中的精度)而导致的数值问题的来源。

从仿真中可视化信号的范围和精度。

跟踪溢出到MATLAB代码中的相应行。

参见:滤波器的设计用Simulink进行电机控制设计用MATLAB和Simulink进行硬件设计

Baidu
map