DeepSpeed Model Compression

Layer Reduction

使用知识蒸馏;减少hidden layer层数,不改变层的宽度;

目的:降低延迟,减少模型大小;

输入teacher model, 输出student model

Weight & Activation quantization

在手机等嵌入式设备上,存储小加算能力弱,量化技术有大用。

属于quantization-aware training (QAT),一边训练一边量化;而不是训练完成之后量化一把。

权重矩阵,是先分组,每组内部进行量化;

weights可以在训练开始时,使用start_bits来量化,过程中,逐渐过渡到target_bits来量化;

weights、attention、FFN,可以各自使用不同的量化bits设置;

forward时,"quantize_weight_in_forward"控制weight使用量化后还是量化前的数值来进行计算;backward时,weight都使用量化后的值来计算梯度;activation在forward和backward都使用量化后的值来计算;

"weight_quantization": {
    "enabled": true,
    "quantize_groups": 64,
    "quantize_bits": {
        "start_bits": 8,
        "target_bits": 4
    }
},
"activation_quantization": {
    "quantize_bits": 8
}

activation的静态量化:预先跑一小部分数据,得到min、max,用作量化;后续不会再动了;

activation的动态量化:每个token有自己的min、max;每个image有自己的min、max;

动态量化,精度更高,但会增加一些量化计算时间开销;

"schedule_offset": 训练刚开始的这些step,不进行activation量化;为了让训练刚开始的效果稳定;

Pruning: 把一些值置为0;减小model大小,加速计算;

structured pruning: 整个一块、一个filter、一个channel,这种成片的置0;可利用GPU硬件特性,更快的加速计算;

unstructured pruning:  绝对值足够小的就置0;不考虑周围数值;(稀疏矩阵可用稀疏计算kernel来跑)

Method	Type
Sparse pruning	Unstructured and Structured
Row pruning	Structured
Head pruning	Structured
Channel pruning	Structured

1. Spare pruning

将weight矩阵里的某些数值置为0;

2. Row pruning

将矩阵的整个行置为0;

3. Head pruning

把multi-heads中的某些heads整个删掉;主要是concatenate后的向量乘以的那个转换矩阵,维度会变少,然后就是删掉的哪些heads对应的Key、Value和计算他们的矩阵,不需要了;

依据:文献上说,最后训好的模型,删掉一些head,对评测效果影响不大;

4. Channel pruning

卷据网络里,可以整个删掉一些中间层的channel;

ZeroQuant

2种结果:INT8;INT4/INT8混合;

Train完之后进行该步量化;

优点:

1. 硬件友好的量化方式,weights和activation都进行量化,量化误差小;

2. layer-by-layer知识蒸馏,不需要使用原始训练数据;目的:减少量化误差,而不是减少层数;一层优化完,再加载和优化另一层,对内存占用的小;

3. 量化/反量化,时间开销小;

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
模型压缩是指通过一系列技术手段来减小神经网络模型的尺寸和计算复杂度,以便在资源受限的设备上进行部署和推理。其中,知识蒸馏是一种常用的模型压缩方法之一。知识蒸馏的过程分为两个阶段:原始模型训练和精简模型训练。在原始模型训练阶段,训练一个复杂的"Teacher模型",它可以由多个分别训练的模型集成而成,对输入进行分类并输出相应类别的概率值。在精简模型训练阶段,训练一个参数量较小、模型结构相对简单的"Student模型",它同样可以对输入进行分类并输出相应类别的概率值。通过将"Teacher模型"的知识转移到"Student模型"中,"Student模型"可以在尺寸和计算复杂度上得到压缩,同时保持较高的性能。除了知识蒸馏,模型压缩的其他方法还包括网络剪枝、量化和低秩分解等。另外,神经网络二值化是一种更为极致的模型压缩方法,它将所有的权值用二进制数表示,从而大大减小模型尺寸。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *2* [模型压缩(Model compression)](https://blog.csdn.net/weixin_38072029/article/details/111357992)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [深度学习网络压缩模型方法总结(model compression)](https://blog.csdn.net/weixin_30617737/article/details/98228382)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值