跳转至

Inference Optimization

导言

训练由于要计算并更新梯度,一般是计算密集。但是推理一般是访存密集。

推理阶段的优化技巧(Include 模型压缩):

  • 目标: 模型压缩的主要目标是减小模型的大小,使其更适合在资源受限的环境中部署,例如移动设备或嵌入式系统。
  • 影响: 模型压缩主要关注减小模型的存储空间和计算资源需求,有助于在资源受限的设备上进行高效推理。

1. 模型剪枝:

  • 权重剪枝(Weight Pruning):通过将模型中接近于零的权重置为零,从而减少模型中的参数数量,以减小模型大小,提高推理速度。
  • 模型剪裁: 移除模型的一些层或结构,以减小模型的深度和宽度。
  • 稀疏矩阵技术(Sparse Matrix Techniques):利用稀疏矩阵的特性,只存储非零元素和其对应的索引,从而减少模型存储所需的内存空间。
  • 低秩分解(Low-Rank Decomposition):将模型参数矩阵分解为多个低秩矩阵的乘积形式,从而减少参数的数量,并提高计算效率。

Batch Normalization Folding:

Fold batch normalization/layernorm operations to improve inference speed.1

2. 量化(Quantization):

  • 将模型参数和激活量化为低精度的定点数或整数的表示,减小模型大小,提高推理速度。

    模型量化旨在将深度学习模型中的参数和激活值从高精度表示(如32位浮点数)转换为低精度表示(如8位整数或更低精度),以降低计算和存储开销,提高推理速度。常见的模型量化技术包括:

    • 权重量化(Weight Quantization):将模型的权重参数从高精度浮点数转换为低位整数或定点数表示。这样可以减小权重的存储空间,降低内存带宽需求,提高计算效率。
    • 激活量化(Activation Quantization):将模型中的激活值从高精度浮点数转换为低位整数或定点数表示。这样可以减小激活值的表示大小,降低内存带宽需求,并加快推理速度。
    • 量化感知训练(Quantization-Aware Training):在训练过程中,通过模拟低精度推理的效果,将模型参数训练为适应量化的形式。这样可以减小量化对模型性能的影响,并提高量化后模型的准确性。

其余技巧

4. 硬件优化:

  • 针对具体硬件平台(如GPU、TPU)进行优化,利用硬件特性提高推理速度。

  • PowerInfer,更少的计算卡做到高吞吐,23

  • 充分利用模型和硬件特点
    • 稀疏激活带来的推理局部性
    • CPU/GPU混合推理设计

不到1000行代码,PyTorch团队让Llama 7B提速10倍

百度智算峰会精彩回顾:视觉大模型训练与推理优化

5. 深度学习推理加速库:

  • 使用专门设计的深度学习推理库,如TensorRT、OpenVINO, cudnn等,以提高推理速度。

6. 剪枝和量化的硬件支持:

  • 利用一些硬件平台对剪枝和量化的原生支持,以提高推理速度。

kernel fusion

Combine multiple kernel functions into a single function to reduce platform overhead and improve computational efficiency.

所谓内核融合,就是将一个计算图中的节点所对应的内核函数融合成一个函数,使得整个数据流图只需要通过一次函数调用即可完成,从而减小平台调度和内核启动带来的开销。并且,通过合理地设计不同内核函数的输入输出数据的放置(例如使用GPU上的共享内存或寄存器),可以极大地提高数据传输效率,从而提升整体计算性能。

Operator Fusion:

Combine multiple operations into a single operation to reduce computational overhead.

参考文献

评论