AIMET工具使用指南

AIMET工具使用指南

  • AIMET工具使用指南
    • 量化
    • 压缩

AIMET工具使用指南

AIMET 支持各种神经网络量化和压缩技术。 本文档提供了使用 AIMET 量化或压缩网络的典型工作流程。 用户指南中提供了对各种技术及其用法的更深入讨论。

量化

建议使用下图中描述的步骤来量化全精度训练模型。 在顶层,步骤是:

AIMET工具使用指南_第1张图片

  1. 量化模型并评估准确性

    a. 可以通过在模型中模拟量化操作来量化模型,如量化模拟中所述。 可以在 AIMET 中评估准确性,或者可以通过目标 SDK/推理应用程序(如 Tensorflow-lite 或 Qualcomm 神经处理 SDK)量化模型。

  2. 如果量化模型的准确性不可接受,请使用以下步骤分析模型性能:
    a. 使用可视化工具检查模型权重,并确定模型是否可以受益于后训练量化技术,即跨层均衡 (CLE) 和偏置校正 (BC)。 有关 CLE 和 BC 的详细信息,包括这些技术何时适用的要求,请参见后训练技术页面。

    b. AIMET 还提供了通过量化权重来评估模型的能力,同时保持全精度激活,反之亦然。 建议确定影响量化模型性能权重量化、激活量化或两者的因素。 如果权重量化是一个问题,则后训练技术可能会有所帮助。

  3. 如果适用,应用后训练技术 CLE 和 BC,并评估模型性能。

  4. 如果激活量化是一个问题或当后训练技术不能提供令人满意的性能时,建议进行模型重新训练/微调。 再训练/微调过程在模型中插入假量化操作,并在几个时期内重新训练模型以减轻量化噪声并提高模型性能。 此处提供了有关微调的详细信息。

压缩

AIMET 支持使用以下技术进行网络压缩:Weight SVD、Spatial SVD (SSVD) 和 Channel Pruning (CP)。 这些技术旨在用于神经网络中卷积层的乘法累加 (MAC) 缩减。 基于配置的所需 MAC 减少率,即压缩模型中的 MAC 与未压缩模型中的 MAC,压缩算法自动压缩网络中的每个单独的卷积层,以大致达到总体所需的 MAC 减少。 请注意,模型的实际目标推理延迟性能取决于 MAC、内存和内存带宽、量化等几个因素。因此,基于 MAC 减少的压缩对运行时延迟的改进可能因特定模型架构而异​​。 https://quic.github.io/aimet-pages/index.html 中提供了一些典型模型的性能结果。 为了获得最佳性能,建议将空间 SVD 与通道修剪相结合。 在高层,应该执行以下步骤来使用 SSVD + CP 组合压缩网络:

AIMET工具使用指南_第2张图片

  1. 确定目标压缩率 ©,即最终压缩模型中的 MAC 与原始未压缩模型中的 MAC 的比率。 例如,目标压缩比 = 0.5 表示最终模型 MAC 是原始模型 MAC 的一半。

  2. 使用空间 SVD 技术执行压缩如下:
    a. 由于目标压缩比 C 是针对最终的 SSVD+CP 压缩模型,因此应该针对或可以通过 SSVD 实现的压缩是先验未知的。 因此,需要尝试的目标压缩比 (Cssvd) 很少。 选择几个 Cssvd > C 目标并执行 SSVD。 例如,如果 C = 0.5,则通常可以使用 Cssvd = {0.5,0.65, 0.75}。 这将产生三个 SSVD 压缩模型。

    b. 对于上一步获得的每个 SSVD 压缩模型,进行微调以提高模型精度。 此处提供了有关微调的指南 []。

  3. 从步骤 2b 中选择一个提供高精度的模型(或几个模型)。 例如,如果相对于原始未压缩模型的可容忍精度下降 SSVD+CP 压缩为 X % (X = 未压缩模型的准确度 (%) 压缩模型的准确度 (%)) ,那么模型的准确度在应选择原始未压缩模型精度的几 % (X-5 %),以避免在 CP 步骤后精度大幅下降。

    a. 请注意,如果步骤 2b 导致非常大的精度下降或下降到可容忍的精度下降范围内,则应首先通过适当调整压缩比重新访问步骤 2a/2b。

  4. 使用通道修剪技术执行压缩如下:
    a. 以很少的目标压缩率 (Ccp) 执行压缩。 可以根据从 SSVD 步骤 3 获得的模型的 Cssvd 设置压缩比,使得 Cssvd * Ccp 大约等于 C。

    b. 执行微调以提高模型精度。

  5. 在最后一步,选择一个模型,MAC 比原始未压缩模型接近 C,也满足用户的精度要求。 例如,对于 https://quic.github.io/aimet-pages/index.html 上提供的 Resnet-50 结果,使用 Csvd = 0.75 和 Ccp = 0.66 来实现整体压缩 C=0.5。

你可能感兴趣的:(sdk,tools,AIMET)