伴随着神经网络模型能力的增强,其本身的复杂度也在不断增加。这就造成模型的推理代价持续上升, 使得搜索系统的负载压力在不停增长。因此对模型进行可部署的压缩加速成为了不可或缺的技术需求。
SNIP 是一款基于python的集成“精调+蒸馏+模型加速”为一体的模型上线助力工具。用户只需要提供预训练模型和业务精调数据,并且修改 3~8 行训练代码, SNIP就会自动输出加速后的模型。工具效果方面,通过对多种量化与蒸馏算法的深度优化,我们相比业界方案实现了更高的加速效果,同时在多业务上都成功适配了行之有效的无损加速手段。
SNIP支持作为一个python包进行使用,同时对用户环境的依赖程度低,易于部署并使用,兼顾了效果与灵活性。
SNIP适用场景
SNIP算法方案
SNIP通过对用户模型进行PTQ+QAT的量化处理,由此得到量化后的模型,但由于量化带来的精度损失通常难以通过微调恢复,因此SNIP通过配套的自研蒸馏算法来辅助模型调优,由此达到无损量化的目的。
SNIP功能介绍
SNIP易用性展示
SNIP具备优秀的易用性,对于用户脚本的干扰性小,只需要简单的几行初始化操作以及forward和蒸馏操作,便可以轻松使用SNIP工具的精调、蒸馏与量化的流程,减少了用户上线加速模型所需时间,同时做到了高效与易用性。
SNIP项目规划
作为模型压缩加速工具包,SNIP后续将会不断在内部扩充算法、功能,并逐步增加开源内容,例如稀疏、裁剪、长句优化等应用场景广泛的算法。针对不同的模型,不同的训练环境做到多种多样的压缩策略,以满足不同业务生态下的压缩加速需求。
项目开源地址:
https://github.com/Angel-ML/SNIP