Angel-SNIP高效机器学习模型压缩套件
SNIP 是一款基于python的集成“精调+蒸馏+模型加速”为一体的模型上线助力工具。用户只需要提供预训练模型和业务精调数据,并且修改 3~8 行训练代码, SNIP就会自动输出加速后的模型。工具效果方面,通过对多种量化与蒸馏算法的深度优化,我们相比业界方案实现了更高的加速效果,同时在多业务上都成功适配了行之有效的无损加速手段。
SNIP支持作为一个python包进行使用,同时对用户环境的依赖程度低,易于部署并使用,兼顾了效果与灵活性。
SNIP适用场景
-
受限于现有的机器资源,需要对全精线上模型进行压缩,可以通过SNIP对指定结构的模型进行量化、蒸馏以达到模型加速的效果。
-
对于需要精调模型的场景,可以单独使用SNIP的蒸馏算法对模型进行效果调优。
SNIP算法方案
SNIP通过对用户模型进行PTQ+QAT的量化处理,由此得到量化后的模型,但由于量化带来的精度损失通常难以通过微调恢复,因此SNIP通过配套的自研蒸馏算法来辅助模型调优,由此达到无损量化的目的。
SNIP功能介绍
-
支持整套精调、蒸馏和模型量化的流程。
-
支持蒸馏与量化解耦的使用方式。
-
具备优秀的易用性,在用户脚本上仅仅需要改动七行代码即可实现量化训练。
-
支持deepspeed和python启动方式。
-
支持config或args初始化SNIP。
-
支持多种可控蒸馏方式。
SNIP易用性展示
SNIP具备优秀的易用性,对于用户脚本的干扰性小,只需要简单的几行初始化操作以及forward和蒸馏操作,便可以轻松使用SNIP工具的精调、蒸馏与量化的流程,减少了用户上线加速模型所需时间,同时做到了高效与易用性。
SNIP项目规划
作为模型压缩加速工具包,SNIP后续将会不断在内部扩充算法、功能,并逐步增加开源内容,例如稀疏、裁剪、长句优化等应用场景广泛的算法。针对不同的模型,不同的训练环境做到多种多样的压缩策略,以满足不同业务生态下的压缩加速需求。