开源公告|高效机器学习模型压缩套件Angel -SNIP

SNIP是一个Python工具,它结合了精调、蒸馏和量化,帮助用户压缩和加速预训练模型,尤其适用于资源受限的场景。通过PTQ+QAT量化和自研蒸馏算法,SNIP能在保持效果的同时实现无损加速,且只需少量代码修改即可使用。未来,SNIP计划扩展更多压缩策略并开源相关算法。

038c75a44cf7f419b29e70c1c1bb5236.gif

伴随着神经网络模型能力的增强,其本身的复杂度也在不断增加。这就造成模型的推理代价持续上升, 使得搜索系统的负载压力在不停增长。因此对模型进行可部署的压缩加速成为了不可或缺的技术需求。

SNIP 是一款基于python的集成“精调+蒸馏+模型加速”为一体的模型上线助力工具。用户只需要提供预训练模型和业务精调数据,并且修改 3~8 行训练代码, SNIP就会自动输出加速后的模型。工具效果方面,通过对多种量化与蒸馏算法的深度优化,我们相比业界方案实现了更高的加速效果,同时在多业务上都成功适配了行之有效的无损加速手段。

SNIP支持作为一个python包进行使用,同时对用户环境的依赖程度低,易于部署并使用,兼顾了效果与灵活性。

SNIP适用场景

  • 受限于现有的机器资源,需要对全精线上模型进行压缩,可以通过SNIP对指定结构的模型进行量化、蒸馏以达到模型加速的效果。

  • 对于需要精调模型的场景,可以单独使用SNIP的蒸馏算法对模型进行效果调优。

SNIP算法方案

SNIP通过对用户模型进行PTQ+QAT的量化处理,由此得到量化后的模型,但由于量化带来的精度损失通常难以通过微调恢复,因此SNIP通过配套的自研蒸馏算法来辅助模型调优,由此达到无损量化的目的。

7d934d87e5376bc54e35ad5859b5be1f.png

SNIP功能介绍

  • 支持整套精调、蒸馏和模型量化的流程。

  • 支持蒸馏与量化解耦的使用方式。

  • 具备优秀的易用性,在用户脚本上仅仅需要改动七行代码即可实现量化训练。

  • 支持deepspeed和python启动方式。

  • 支持config或args初始化SNIP。

  • 支持多种可控蒸馏方式。

SNIP易用性展示

SNIP具备优秀的易用性,对于用户脚本的干扰性小,只需要简单的几行初始化操作以及forward和蒸馏操作,便可以轻松使用SNIP工具的精调、蒸馏与量化的流程,减少了用户上线加速模型所需时间,同时做到了高效与易用性。

030667c3f46f7c8a1a485f1eef118199.png

SNIP项目规划

作为模型压缩加速工具包,SNIP后续将会不断在内部扩充算法、功能,并逐步增加开源内容,例如稀疏、裁剪、长句优化等应用场景广泛的算法。针对不同的模型,不同的训练环境做到多种多样的压缩策略,以满足不同业务生态下的压缩加速需求。

eaaac3cecae067c47abf0be3dc32c990.png

项目开源地址:

https://github.com/Angel-ML/SNIP

484b00bf9ed85d0befe1ece3e7edbb2d.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值