项目介绍:SqueezeLLM —— 高效的大模型量化框架
SqueezeLLM是一个专为提升大语言模型(LLM)服务效率而研发的后训练量化框架。这个项目采用了一种全新的名为“密集与稀疏量化”的方法,以解决大模型部署时所面临的内存瓶颈问题。
背景与挑战
大语言模型(LLM)以其庞大的参数量而著称,形成了极大的内存占用,这对模型的部署和服务效率提出了巨大的挑战。减少精度的量化方法因此被引入,希望通过降低模型权重的存储需求来减轻内存负担。然而,传统粗糙的量化方式往往会导致模型性能的严重下降,这成为了一个亟待解决的问题。
密集与稀疏量化方法
SqueezeLLM提出的“密集与稀疏量化”将权重矩阵分为了两个部分:密集部分和稀疏部分。密集部分可以进行较重度的量化处理而不影响整体性能,而稀疏部分则保留了敏感的和极值的权重信息,从而保证了模型的准确性。
这一创新性的量化策略允许在明显减小内存占用的同时,保持甚至提升模型的准确率和质量。在实验中,与FP16基线模型相比,使用相同或更小内存的SqueezeLLM模型变体在MMLU测试上取得了高达2%的性能提升。
实用成果与支持模型
目前,SqueezeLLM支持多款流行的大模型,包括LLaMA系列(7B至65B)、LLaMA-2(7B和13B)、经过指令调优的Vicuna(7B和13B)、XGen(7B,支持8k序列长度)以及OPT系列(1.3B至30B)。这些模型都可以分别在不同的比特宽度(3-bit 和 4-bit)以及稀疏级别下(0% 到 0.45%)进行量化。
这一框架的开放性和灵活性也体现在支持用户自定义模型的量化能力上,有关详细流程可以参考项目的代码库。
进展与生态系统集成
目前,SqueezeLLM的密集与稀疏量化代码已上线,支持自定义模型量化,Mistral模型已经集成并可供使用。同时,SqueezeLLM还被集成到了官方的vLLM框架当中,极大方便了用户在已有系统中的应用。
安装与使用指南
用户可以通过创建conda环境,克隆代码库及安装相关依赖来快速上手使用SqueezeLLM。详细的安装步骤及模型运行、评测流程请参阅代码库的相关文档。
通过简单命令行操作,用户可以对选择的量化模型进行基准测试和困惑度评估,以此验证模型的实际表现和效率。
致谢与引用
SqueezeLLM的开发过程中, 参考并复用了多个开源库,其中包括GPTQ及其衍生的LLaMA版本。希望使用该框架的用户能够在学术工作中对下列文章进行引用以表达感谢:
@article{kim2023squeezellm,
title={SqueezeLLM: Dense-and-Sparse Quantization},
author={Kim, Sehoon and Hooper, Coleman and Gholami, Amir and Dong, Zhen and Li, Xiuyu and Shen, Sheng and Mahoney, Michael and Keutzer, Kurt},
journal={arXiv},
year={2023}
}
通过SqueezeLLM,用户可以在大幅降低模型内存占用的同时保持高性能表现,为模型的高效部署提供了高效便捷的解决方案。希望这一框架能够助力更多的研究与应用场景,实现技术与效率的双赢。