Transformer实战(32)——Transformer模型压缩
- 0. 前言
- 1. 高效 Transformer 简介
- 2. 模型压缩
- 3. 使用 DistilBERT 进行知识蒸馏
- 4. 剪枝 Transformer
- 5. 量化
- 6. 使用 bitsandbytes 简化量化过程
- 小结
- 系列链接
0. 前言
我们已经学习了如何设计自然语言处理 (Natural Language Processing,NLP) 架构,以利用Transformer成功解决实际任务。在本节中,我们将学习如何通过蒸馏、剪枝和量化将训练好的模型转化为高效模型,还将了解模型模型压缩的实际应用。随着大规模神经网络模型的扩展,在有限计算能力下运行大模型变得越来越困难,如何构建高效的模型变得尤为重要。轻量化的通用语言模型(例如DistilBERT)可以像未蒸馏的模型一样进行微调,并能够获得与未压缩模型相媲美的性能。我们还将简要介绍bitsandbytes,以实现更高效、更简便的量化。
1. 高效 Transformer 简介
基于Transformer的模型在许多NLP问题中取得了优异表现,但其代价是平方级的内存和计算复杂度。我们可以将复杂性问题总结如下:
- 由于自注意力机制的复杂度随序列长度呈平方级增长,
Transformer模型在处理长序列时效率较低 - 内存受限的情况下(例如
16GB GPU),模型可以处理512个词元的句子进行训练和推理,但通常无法处理更长的输入序列 NLP模型的规模不断增长,从BERT-Base的