模型压缩调研

文章目录

    • 更新记录
    • 0. 前言
    • 1. 方向与现状
    • 2. 短期计划
    • 长期工作安排

更新记录

  • 2021-05-06:初步调研现状,确定短期内的工作。

0. 前言

  • 本文介绍模型压缩所包含的研究方向、现状以及后续研究安排。

  • 注意:本文内容仅面向算法层优化,不考虑硬件、框架优化。

1. 方向与现状

研究方向 基本内容 应用现状 个人评价
结构优化 使用矩阵分解、权重共享等手段,设计实现轻量化网络结构 使用现成的轻量化网络,或使用NAS获取轻量化网络 短期内不考虑,但未来肯定要学习
量化 使用更少的bits来表示一个参数,一般分为PTQ(训练后量化)和QAT(量化感知训练) 几乎所有部署框架都支持PTQ;QAT支持较少 短期研究PTQ;长期角度看一定要研究QAT
知识蒸馏 使用大模型训练小模型 基本模型压缩都会使用该方法,大小模型基本都会使用NAS构建 短期内不考虑,但未来肯定要学习
剪枝 修改原有模型结构 使用较少,使用NAS替代 不考虑该方案

2. 短期计划

  • 短期计划就是实现模型量化,PTQ(Post Training Quantization)和QAT(Quantization Aware Training)的对比如下。
量化方法 PTQ QAT
模型精度 下降较多,不可控 下降较少,可控
推理速度 没有区别 没有区别
实现难度
框架支持程度 所有推理框架都支持 支持框架较少,需要大量编码
注意事项 FP16量化对于硬件有要求,INT8量化需要进行校准。 需要修改训练代码,包括模型构建代码以及训练细节
  • 下标介绍各个框架对于模型量化的支持程度
框架 TensorFlow PyTorch Paddle TensorRT NCNN MNN
是否支持PTQ
是否支持QAT
是否支持量化结构转换为ONNX /
支持设备 CPU/GPU CPU/GPU CPU/GPU GPU CPU CPU
个人评价 没有了解细节,感觉对部署支持较好,NVidia也支持相关QAT功能。 官方量化功能不支持模型转换,NVidia发布了大量工具,但都不支持QAT 支持一整套训练、压缩、部署工具。但除了官方,其他资料几乎没有 使用方便,但量化后模型精度下降较多 只支持INT8量化 只支持INT8量化,支持QAT
  • 后续工作主要有以下几方面:
    • 训练代码中添加量化后模型精度测试功能。
    • 研究 TensorRT 相关工具。
    • 研究 Paddle 相关工具。
    • 研究 MNN 相关工具。

长期工作安排

  • 调研 TensorFlow 模型压缩现状。
  • 跟进 PyTorch 官方量化工具的模型部署现状。
  • 跟进 PyTorch 非官方量化工具QAT现状。
  • 调研 NAS 工具以及现状。
  • 调研知识蒸馏工具以及现状。
  • 调研 TVM 模型压缩、部署现状。

你可能感兴趣的:(模型压缩调研)