llmc

llmc

开源工具压缩大型语言模型提升效率

llmc是一个压缩大型语言模型的开源工具,采用先进压缩算法提高效率和减小模型体积。它支持多种LLM和压缩方法,可在单GPU上量化评估大模型,兼容多种推理后端。项目提供LLM量化基准,帮助用户选择合适的压缩策略。

LLM压缩量化剪枝LLMC性能优化Github开源项目

llmc: 实现精准高效的大语言模型压缩

<img src="https://yellow-cdn.veclightyear.com/0a4dffa0/db2a38d0-439b-42be-906a-0a6d2498bcd1.png" alt="llmc" style="zoom:35%;" />

License arXiv GitHub Stars visitors Discord Banner QQ Doc Doc

[ English | 中文 | 日本語 ]

llmc 是一款现成的大语言模型压缩工具,利用最先进的压缩算法提高效率并减小模型大小,同时保持性能不受影响。

英文文档请点击这里

中文文档请点击这里

社区

新闻

<div align=center> <img src="https://yellow-cdn.veclightyear.com/0a4dffa0/fbeab4e2-193b-422e-9d71-078e07e4a56b.png" alt="comp" width="800" /> </div>

我们不仅仅关注最佳实践,而是从校准数据、算法和数据格式等方面对LLM量化进行模块化和公平的基准测试。通过详细的观察和分析,我们在不同配置下为性能和方法改进提供了各种新颖的见解。借助强大的LLMC工具包和全面的洞察,未来的LLM研究人员可以为其应用高效地集成合适的算法和低位格式,从而实现大型语言模型压缩的民主化。

  • 2024年7月16日: 🔥我们现在支持Wanda/Naive(Magnitude)用于LLM稀疏化和逐层混合位量化!

  • 2024年7月14日: 🔥我们现在支持基于旋转的量化算法QuaRot!

  • 2024年7月4日: 📱 我们开放了讨论渠道。如果您有任何问题,请加入我们的社区:

  • 2024年5月17日: 🚀 我们现在支持一些先进的大型模型,如LLaVA、Mixtral、LLaMA V3和Qwen V2。欢迎尝试!

  • 2024年5月13日: 🍺🍺🍺 我们发布了量化基准测试论文:

    LLM-QBench: 大型语言模型后训练量化最佳实践的基准测试

    龚瑞昊*杨勇*顾世桥*黄宇时*张云辰刘祥龙📧陶大程

    (* 表示贡献相同, 📧 表示通讯作者。)

    <div align=center> <img src="https://yellow-cdn.veclightyear.com/0a4dffa0/b26b3ed6-942f-45ba-b9ab-51250ff73f2d.png" alt="comp" width="800" /> </div>

    我们从校准成本、推理效率和量化精度等方面对量化技术进行了模块化和公平的基准测试。在不同模型和数据集上进行的近600次实验提供了三个有见地的结论,涉及校准数据、算法流程和量化配置选择。基于这些结论,我们设计了LLM PTQ流程的最佳实践,以在各种场景下实现精度和效率性能的最佳平衡。

  • 2024年3月7日: 🚀 我们发布了一个强大高效的LLM压缩工具的量化部分。值得注意的是,我们的基准测试论文即将发布😊。

亮点功能

  • 在仅一张A100/H100/H800 GPU上量化LLM(如Llama2-70B、OPT-175B)并评估其PPL💥。
  • 提供多种最先进的压缩算法与原始仓库保持一致供用户选择,用户可以在一个LLM上顺序使用多种算法💥。
  • 我们工具导出的经特定压缩算法处理的转换模型(quant部分的save_trans模式,见配置)可通过多个后端(如LightllmTensorRT-LLM)进行简单量化,得到经特定压缩算法优化的模型,该模型可由相应后端进行推理💥。
  • 我们压缩后的模型(quant部分的save_lightllm模式,见配置)具有浅层内存占用,可直接由Lightllm进行推理💥。

使用方法

  1. 克隆此仓库并安装包:

    # 安装包 cd llmc pip install -r requirements.txt
  2. 准备模型和数据。

    # 从huggingface下载LLM后,按如下方式准备校准和评估数据: cd tools python download_calib_dataset.py --save_path [校准数据路径] python download_eval_dataset.py --save_path [评估数据路径]
  3. 选择一种算法来量化您的模型:

# 以下是关于Awq的示例: cd scripts # 修改bash文件中的llmc路径,即``llmc_path``。您还可以选择位于``llmc/configs/quantization/Awq/``中的一个配置 # 来量化您的模型,或者通过更改run_awq_llama.sh中的``--config``参数来参考我们提供的配置创建您自己的配置。 bash run_awq_llama.sh

配置

为了帮助用户设计他们的配置,我们现在解释一下llmc/configs/下所有配置中的一些通用配置:

  • model:

    model: # 替换为``llmc/models/*.py``中的类名。 type: Llama # 替换为您的模型路径。 path: 模型路径 torch_dtype: auto
  • calib:

    # 注意:某些算法不需要``calib``,比如naive...因此,您可以删除这部分。 calib: # 替换为校准数据名称,例如之前下载的pileval、c4、wikitext2或ptb。 name: pileval download: False # 替换为之前下载的校准数据路径,例如pileval、c4、wikitext2或ptb。 path: 校准数据路径 n_samples: 128 bs: -1 seq_len: 512 # 替换为``llmc/data/dataset/specified_preproc.py``中的函数名。 preproc: general seed: *seed
  • eval:

    # 如果您想评估预训练/转换/伪量化模型的PPL。 eval: # 您可以评估预训练、转换、伪量化模型,并设置您想评估的位置。 eval_pos: [pretrain, transformed, fake_quant] # 替换为评估数据的名称,例如之前下载的c4、wikitext2、ptb或[c4, wikitext2]。 name: wikitext2 download: False path: 评估数据路径 # 对于70B模型评估,bs可以设置为20,inference_per_block可以设置为True。 # 对于7B / 13B模型评估,bs可以设置为1,inference_per_block可以设置为False。 bs: 1 inference_per_block: False seq_len: 2048
  • save:

    save: # ``save_trans``为True,表示您想导出转换后的模型,例如参数修改后的 # 模型,其性能和结构与原始模型相同,用户可以 # 对转换后的模型进行简单量化,以获得与 # 特定算法量化模型相同的性能。 save_trans: False # ``save_lightllm``或``save_trtllm``为True,表示您想导出真实量化模型,例如 # 低位权重以及权重和激活量化参数。 save_lightllm: False # ``save_fake``为True表示您想导出伪量化模型,例如 # 反量化权重和激活量化参数。 save_fake: False save_path: ./save
  • quant:

    quant: # 替换为``llmc/compression/quantization/*.py``中的类名 method: OmniQuant # 仅权重量化没有``act``部分。 weight: bit: 8 symmetric: True # 量化粒度:per_channel、per_tensor、per_head(不推荐)。 granularity: per_channel group_size: -1 # 校准算法:learnble、mse和minmax(默认)。 calib_algo: learnable # 使用直通估计,这对于可学习的校准算法是必要的。 ste: True act: bit: 8 symmetric: True # 量化粒度:per_token、per_tensor granularity: per_token ste: True # 静态量化(校准期间量化)或动态量化(推理期间量化)。 static: True # 这部分是为特定算法设计的,用户可以参考 # 我们提供的来设计自己的。 special: let: True lwc_lr: 0.01 let_lr: 0.005 use_shift: False alpha: 0.5 deactive_amp: True epochs: 20 wd: 0 # 如果quant_out为True,则使用前一个量化块的输出作为 # 后续块的校准数据。 quant_out: True

支持的模型列表

BLOOM

LLaMA

LLaMA V2

StarCoder

OPT

Falcon

InternLM2

MistralLLaMA V3

Mixtral

Qwen V2

LLaVA

InternLM2.5

StableLM

Gemma2

Phi2

Phi 1.5

MiniCPM

SmolLM

您可以参考llmc/models/*.py下的文件添加自己的模型类型。

支持的算法列表

量化

✅ 朴素量化

AWQ

GPTQ

SmoothQuant

OS+

OmniQuant

NormTweaking

AdaDim

QUIK

SpQR

DGQ

OWQ

LLM.int8()

HQQ

QuaRot

剪枝

✅ 朴素剪枝(幅度)

Wanda

ShortGPT

致谢

我们的代码开发参考了以下仓库:

Star历史

Star历史图表

引用

如果您发现我们的LLM-QBench论文/llmc工具包对您的研究有用或相关,请引用我们的论文:

@misc{llmc,
   author = {llmc contributors},
   title = {llmc: Towards Accurate and Efficient LLM Compression},
   year = {2024},
   publisher = {GitHub},
   journal = {GitHub repository},
   howpublished = {\url{https://github.com/ModelTC/llmc}},
}

@misc{gong2024llmqbench,
      title={LLM-QBench: A Benchmark Towards the Best Practice for Post-training Quantization of Large Language Models},
      author={Ruihao Gong and Yang Yong and Shiqiao Gu and Yushi Huang and Yunchen Zhang and Xianglong Liu and Dacheng Tao},
      year={2024},
      eprint={2405.06001},
      archivePrefix={arXiv},
      primaryClass={cs.LG}
}

@misc{gong2024llmcbenchmarkinglargelanguage,
      title={LLMC: Benchmarking Large Language Model Quantization with a Versatile Compression Toolkit},
      author={Ruihao Gong and Yang Yong and Shiqiao Gu and Yushi Huang and Chentao Lv and Yunchen Zhang and Xianglong Liu and Dacheng Tao},
      year={2024},
      eprint={2405.06001},
      archivePrefix={arXiv},
      primaryClass={cs.LG},
      url={https://arxiv.org/abs/2405.06001},
}

编辑推荐精选

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

热门AI助手AI对话AI工具聊天机器人
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

下拉加载更多