优秀的机器学习模型压缩
一个以Awesome风格整理的列表,汇集了最佳的机器学习模型压缩和加速研究论文、文章、教程、库、工具等资源。欢迎提交PR!
目录
论文
综述
- 深度神经网络模型压缩与加速综述
- 模型压缩作为约束优化,以神经网络为应用。第一部分:通用框架
- 模型压缩作为约束优化,以神经网络为应用。第二部分:量化
- 高效深度学习:关于如何使深度学习模型更小、更快、更好的综述
- 深度学习的FP8格式 由NVIDIA、Arm和Intel于2022年发布 - FP8提供了INT8的性能和FP16的精度。E4M3作为FP8的一个变体,具备INT8的优势,同时不损失精度和吞吐量。
架构
- MobileNets:用于移动视觉应用的高效卷积神经网络
- MobileNetV2:倒置残差和线性瓶颈:用于分类、检测和分割的移动网络
- Xception:使用深度可分离卷积的深度学习
- ShuffleNet:一种极其高效的用于移动设备的卷积神经网络
- SqueezeNet:达到AlexNet级别的精度,但参数减少50倍,模型大小<0.5MB
- Fast YOLO:一种用于视频中实时嵌入式目标检测的快速You Only Look Once系统
- AddressNet:基于移位的高效卷积神经网络原语
- ResNeXt:深度神经网络的聚合残差变换
- ResBinNet:残差二值神经网络
- 用于图像分类的残差注意力网络
- Squeezedet:统一的小型低功耗全卷积神经网络
- SEP-Nets:小型高效模式网络
- 动态容量网络
- 无需核技巧学习无限层网络
- 高效稀疏-Winograd卷积神经网络
- DSD:用于深度神经网络的密集-稀疏-密集训练
- 协调滤波器以加速深度神经网络
- 具有随机深度的深度网络
量化
- 移动设备量化卷积神经网络
- 走向网络量化的极限
- 量化神经网络:以低精度权重和激活训练神经网络
- 使用向量量化压缩深度卷积网络
- 训练三值量化
- ZipML框架:端到端低精度模型训练的可能性、局限性和深度学习的一些应用
- ShiftCNN:卷积神经网络推理的通用低精度架构
- 使用半波高斯量化进行低精度深度学习
- 深度网络的损失感知二值化
- 循环神经网络中权重和激活的量化
- 循环神经网络的定点性能分析
- 比特下降:重新审视神经网络的量化
- 通过块级量化实现8位优化器
- LLM.int8():大规模Transformer的8位矩阵乘法 [博客文章]
- SmoothQuant:大型语言模型的准确高效后训练量化 由麻省理工学院和英伟达(2022)发布 [代码]
- ZeroQuant:大型Transformer模型的高效低成本后训练量化 由微软(2022)发布 [代码]
- nuQmm:大规模生成语言模型高效推理的量化矩阵乘法 由NAVER CLOVA和韩国浦项科技大学(2022)发布
- MKQ-BERT:4位权重和激活的量化BERT 由腾讯AI平台部(2022)发布
- 理解和克服高效Transformer量化的挑战 由高通AI研究院(2021)发布 [代码]
- Mesa:Transformer的节省内存训练框架 由莫纳什大学(2021)发布
- 4位精度的案例:k位推理缩放规律 由Tim Dettmers等人(2022)发布 - 总的来说,他们的发现表明,4位精度在总模型比特数和零样本准确率方面几乎普遍最优。
- GPTQ:生成式预训练Transformer的精确后训练量化 由Elias Frantar等人(2022)发布。
- 其他列表:
二值化
- 用于高效硬件加速的可分离滤波器二值化卷积神经网络
- 二值化神经网络:训练权重和激活限制为+1或-1的深度神经网络
- 局部二值卷积神经网络
- XNOR-Net:使用二值卷积神经网络进行ImageNet分类
- DoReFa-Net:使用低比特宽度梯度训练低比特宽度卷积神经网络
剪枝
- 使用直接稀疏卷积和引导剪枝实现更快的CNN
- 深度压缩:通过剪枝、训练量化和霍夫曼编码压缩深度神经网络
- 剪枝卷积神经网络以实现资源高效推理
- 剪枝滤波器以提高卷积网络效率
- 使用能源感知剪枝设计节能卷积神经网络
- 学习剪枝:探索快速准确解析的前沿
- 精细剪枝:使用贝叶斯优化联合微调和压缩卷积网络
- 同时学习权重和连接以实现高效神经网络
- ThiNet:用于深度神经网络压缩的滤波器级剪枝方法
- 深度神经网络的数据驱动稀疏结构选择
- 神经网络压缩的软权重共享
- 用于高效DNN的动态网络手术
- 通过通道剪枝加速超深神经网络
- AMC:移动设备上模型压缩和加速的自动机器学习
- ESE:FPGA上具有稀疏LSTM的高效语音识别引擎
- 大规模语言模型可以在一次性中准确剪枝(2023) - 剪枝方法:训练后、分层。量化方法:联合稀疏化和训练后量化。
他们提出了
SparseGPT
,这是第一个能够在100-1000亿参数规模模型上高效工作的准确一次性剪枝方法。SparseGPT
通过将剪枝问题简化为极大规模的稀疏回归实例来实现。它基于一种新的近似稀疏回归求解器,用于解决分层压缩问题,该方法足够高效,可以在几小时内在单个GPU上执行最大的公开可用GPT模型(1750亿参数)。同时,SparseGPT的准确性足以在剪枝后几乎不损失精度,无需任何微调。 - UPop:用于压缩视觉语言Transformer的统一渐进式剪枝 由清华大学等人提出(ICML 2023)[代码]
- 大型语言模型的简单有效剪枝方法 由CMU、Meta AI Research等人提出(2024年5月) - 流行的幅度剪枝方法基于假设最接近0的权重可以被设为0而对性能影响最小,从而移除网络中最小的权重。在LLM中,中间层输出的一部分幅度可能比同一层的其他输出大20倍。移除与这些大输出相乘的权重(即使接近零)可能会显著降低性能。因此,同时考虑权重和中间层输出的剪枝技术可以在对性能影响较小的情况下加速网络。重要性:随着移动设备和个人电脑变得足够强大可以运行这些模型,在不影响性能的情况下压缩模型的能力变得越来越重要。[代码:Wanda]
知识蒸馏
- 在神经网络中蒸馏知识
- 深度模型压缩:从噪声教师中蒸馏知识
- 利用知识蒸馏学习高效目标检测模型
- 深度神经网络的无数据知识蒸馏
- 知识投影用于设计更薄更快的深度神经网络
- Moonshine:使用廉价卷积进行蒸馏
- 从人脸分类到对齐和验证的模型蒸馏与知识迁移
- 喜欢你所喜欢的:通过神经元选择性迁移进行知识蒸馏
- 序列级知识蒸馏
- 使用条件对抗网络学习知识蒸馏的损失
- 暗知识
- DarkRank:通过跨样本相似性迁移加速深度度量学习
- FitNets:为瘦深网络提供提示
- MobileID:通过从神经元蒸馏知识压缩人脸模型
- 更多关注注意力:通过注意力迁移改善卷积神经网络的性能
低秩近似
- 使用低秩展开加速卷积神经网络
- 用于快速低功耗移动应用的深度卷积神经网络压缩
- 具有低秩正则化的卷积神经网络
- 利用卷积网络内的线性结构进行高效评估
- 加速用于分类和检测的超深卷积网络
- 非线性卷积网络的高效精确近似
- LoRA:大型语言模型的低秩适应 - Hu等人为GPT类模型提出了低秩适配器。
- QLoRA:量化LLM的高效微调 由Tim Dettmers等人撰写(2023年)
卸载
近年来,专门用于LLM推理的系统不断涌现,如FasterTransformer(NVIDIA,2022)、PaLM推理(Pope等,2022)、Deepspeed-Inference(Aminabadi等,2022)、Accelerate(HuggingFace,2022)、LightSeq(Wang等,2021)、TurboTransformers(Fang等,2021)。
为了在易获得的硬件上实现LLM推理,卸载是一项必不可少的技术——据我们所知,在当前系统中,只有Deepspeed-Inference和Huggingface Accelerate包含此功能。
- FlexGen:使用单个GPU实现大型语言模型的高吞吐量生成推理 由斯坦福大学HazyResearch等机构撰写,2023年。[推文]
并行化
用于模型加速的压缩方法(即模型并行)相关论文:
- 压缩激活值是否有助于模型并行训练?(2023) - 该论文首次对压缩算法(基于剪枝、基于学习和基于量化 - 使用Transformer架构)在提高模型并行通信速度方面的有效性进行了实证研究。摘要: 1)激活值压缩不等同于梯度压缩;2)训练设置非常重要;3)不要压缩早期层的激活值。
文章
网络上发布的内容。
操作指南
- 如何使用TensorFlow量化神经网络
- 🤗 PEFT:在低资源硬件上对十亿规模模型进行参数高效微调(2023) - Hugging Face的PEFT库使得能够将Transformers中最流行和高性能的模型与Accelerate的简单性和可扩展性结合起来。目前支持的PEFT方法包括:LoRA、前缀调优、提示调优和P-Tuning(使用可训练的连续提示嵌入)。他们将探索更多PEFT方法,如(IA)3和瓶颈适配器。结果:现在微调Flan-T5-XXL所需的参数数量为9.4M,约比AlexNet少7倍(来源:推文)。
杂项
- 为什么机器学习的未来是微型化
- 图像分析深度学习模型压缩:方法和架构
- 缩小深度学习模型的万无一失方法 由麻省理工学院(Alex Renda等人)撰写 - 一种剪枝算法:训练至完成,全局剪掉20%幅度最小的权重(最弱连接),使用学习率回退到原始(早期训练)率重新训练,反复迭代直至达到所需稀疏度(模型达到你想要的微小程度)。
参考
博客
- 量化可视化指南 - Maarten Grootendorst (2024年7月)揭秘大型语言模型的压缩 - 一篇通俗易懂的入门文章,介绍了量化以及GPTQ、GGUF和BitNet(1位)等工具和库中广泛支持的量化方法。
- 🤗 Transformers中原生支持的量化方案概述(2023年9月)
- TensorFlow模型优化工具包 — 剪枝API
- 压缩用于图像分类和检测的神经网络 - Facebook AI研究人员开发了一种新方法,通过量化神经网络的权重来减少其内存占用,同时保持较短的推理时间。他们成功将一个76.1%top-1准确率的ResNet-50压缩到5 MB,还将Mask R-CNN压缩到6 MB以内。
- 压缩BERT的所有方法 - 概述了基于不同特征的大型NLP模型(BERT)的各种压缩方法,并比较了它们的结果。
- 深度学习模型压缩方法。
- 未来我们真的需要模型压缩吗?
- 量化:Cohere的ML运营工程师Carol Chen撰写的Nvidia H100用于Transformer推理的分析。
Transformer引擎结合使用FP8和FP16,以减少内存使用并提高性能,同时仍能保持大型语言模型的准确性。
- LLM量化技术和格式比较(2023年10月)- 详细比较了GGUF(llama.cpp)、GPTQ、AWQ、EXL2、q4_K_M、q4_K_S和load_in_4bit的困惑度、显存占用、速度、模型大小和加载时间。
- 哪种量化方法最适合你:GGUF、GPTQ还是AWQ(2024年1月)- 对三种主要量化方法—GPTQ、AWQ和GGUF的简单介绍。
工具
库
- TensorFlow模型优化工具包。附带博文:TensorFlow模型优化工具包 — 剪枝API
- XNNPACK是一个高度优化的浮点神经网络推理运算符库,适用于ARM、WebAssembly和x86(SSE2级别)平台。它基于QNNPACK库。然而,与QNNPACK不同,XNNPACK完全专注于浮点运算符。
- Bitsandbytes是CUDA自定义函数的轻量级封装,特别是8位优化器和量化函数。
- NNCP - 一个使用神经网络构建实用无损数据压缩器的实验。最新版本使用Transformer模型(较慢但压缩比最佳)。LSTM(较快)也可使用。
框架
论文实现
- facebookresearch/kill-the-bits - Facebook AI Research论文"And the bit goes down: Revisiting the quantization of neural networks"的代码和压缩模型。
视频
演讲
培训和教程
许可证
我在本仓库中向您提供的代码和资源均采用开源许可证。由于这是我的个人仓库,您获得的代码和资源许可来自于我个人,而非我的雇主。
- 代码:MIT许可证。版权所有 2022- Cedric Chee
- 文本内容:知识共享 署名-相同方式共享 4.0 国际许可协议(CC BY-SA 4.0)