AI嵌入式系统:算法优化与实现
上QQ阅读APP看书,第一时间看更新

1.2 机器学习在嵌入式系统中的实现

从1.1节的介绍可以看到,机器学习算法,尤其是神经网络算法需要进行大量的运算和存储,目前要解决这一问题大致有两条技术路线:一条是基于定制化硬件提升嵌入式处理器的运算效率,另一条是基于算法优化来解决问题。其中,在定制化的AI加速运算硬件方面,进一步分为基于通用多处理器的并行化方案和基于专用运算加速引擎的方案。

图1-5给出基于多处理器的方案,比如NVIDIA通过专用的嵌入式GPU实现神经网络运算的加速,这一方案的优点是能够通过软件灵活定义每个处理器的功能,对不同AI算法的兼容性好,但由于每个处理器需要占用大量的电路资源,并且功耗高,因此这一方案主要用于对性能要求高,但对硬件成本和功耗不敏感的领域,比如自动驾驶等。

图1-6给出了基于运算加速引擎的AI嵌入式系统方案。和基于多处理器的方案相比,这里将多处理器替换成多个专用运算引擎,比如矩阵乘法引擎、卷积引擎、数据排序和检索引擎等,由于每个运算加速引擎功能单一并且明确,因此能够充分地优化以提高运算效率并降低功耗。在相同运算量下,这一架构的功耗通常低于多处理器架构。但付出的代价是硬件加速引擎的功能固定、难以改变,损失了灵活性和对不同运算的兼容性。

本书讨论的是基于传统嵌入式处理器的AI实现技术,侧重通过算法改进和软件优化提升嵌入式系统的AI运算能力,这一方案充分利用现有处理器的运算硬件特点,不需要新的专用硬件。由于传统嵌入式处理器在运算能力、存储容量等方面的限制,对很多高性能AI的应用还是有所限制。书中所讨论的很多算法是基于通用嵌入式处理器实现的,但它们也能应用于多处理器系统,并能够改造成运算加速引擎的形式。

图1-5 基于多处理器架构的AI运算加速方案

图1-6 基于运算加速引擎的AI嵌入式系统方案

为了能够在资源有限的嵌入式系统中实现机器学习推理算法,需要从不同层次进行优化,图1-7从高到低地给出了各个层次优化的说明。

图1-7 机器学习算法在嵌入式系统实现时所使用的优化手段分层

下面具体解释各个层次优化的内容:

·系统方案优化

针对特定机器学习问题考虑使用何种解决方案,比如对于视觉图像分类应用,是通过支持向量机实现,还是通过深度神经网络实现,或是通过随机森林实现。不同的机器学习算法在运算量、内存、分类精度以及训练难度上各有优缺点,需要开发者进行权衡。

·机器学习推理模型结构优化

对于给定的机器学习算法,考虑其运算结构的简化,使用包括近似算法、模型剪枝、特征降维等手段降低运算复杂度。另外,对于给定的机器学习算法运算图,可以通过运算模块的等效变换消除冗余的中间数据计算,比如神经网络中卷积层和BN层的参数融合等。

·算子优化

针对机器学习算法的底层运算模块进行优化,降低运算复杂度,具体方案包括基于近似算法降低运算量,比如通过矩阵的低秩近似分解降低矩阵乘法运算量;基于变换域的快速算法降低运算复杂度,比如通过频域变换将卷积运算转成逐点乘法运算。

·位运算优化

基于数据二进制表示的更底层的优化,比如将常数乘法运算转成加减法实现,对浮点数乘法也可以通过对它的指数域和尾数域分别进行加减实现近似计算等。

·面向CPU硬件特性优化

针对嵌入式系统所使用的特定CPU硬件进行优化,包括使用特定CPU所具备的SIMD指令实现数据向量并行运算,使用高位宽的寄存器同时实现多个低位宽数据并行计算等。这一部分优化和硬件特性紧密相关。

以上给出的优化层级中,每一层通过优化带来的运算效率提升量都与具体问题相关,但大致来说,层级越高,优化带来的提升越大。本书讨论的内容涵盖上述这几个层级。