auto-round

auto-round

针对大语言模型的高效量化算法

AutoRound是一种针对大语言模型(LLM)的高效量化算法。通过符号梯度下降优化权重舍入和范围,仅需200步迭代即可达到业界领先水平,且不增加推理开销。该算法支持OPT、BLOOM、GPT-J等多种模型,提供混合精度量化、激活量化等实验功能,并兼容Intel Gaudi2硬件。AutoRound提供简洁的Python接口,方便用户进行模型量化和推理。

AutoRound量化算法LLM推理权重量化低位推理Github开源项目
<div align="center">

AutoRound

<h3>用于大语言模型的高级量化算法</h3>

python version license

<div align="left">

AutoRound是一种用于低位大语言模型推理的高级量化算法。它适用于广泛的模型。我们的方法采用符号梯度下降来微调权重的舍入值和最大最小值,只需200步就能与最新方法竞争,而且不会引入额外的推理开销,并保持较低的调优成本。下图展示了AutoRound的概述。更多详情请查看我们在arxiv上的论文,访问low_bit_open_llm_leaderboard可查看各种模型的更多准确性数据。

<div align="center">

<div align="left">

最新动态

  • [2024/08] AutoRound格式支持Intel Gaudi2设备。示例请参考Intel/Qwen2-7B-int4-inc
  • [2024/08] AutoRound增加了几个实验性功能,如激活量化、mx_fp数据类型和范数/偏置参数的快速调优。
  • [2024/07] 重要变更:nsamples的默认值从512改为128,以减少内存使用,在某些情况下可能会导致轻微的精度下降。
  • [2024/06] AutoRound格式支持推理时混合位宽和组大小,解决了非对称内核导致的显著性能下降问题。
  • [2024/05] AutoRound支持lm-head量化,在W4G128下为LLaMA3-8B节省0.7G内存。

先决条件

  • Python 3.9或更高版本

安装

从源代码构建

pip install -vvv --no-build-isolation -e . pip install -r requirements.txt python setup.py install

从pypi安装

pip install auto-round

模型量化

Gaudi2/ CPU/ GPU

from transformers import AutoModelForCausalLM, AutoTokenizer model_name = "facebook/opt-125m" model = AutoModelForCausalLM.from_pretrained(model_name) tokenizer = AutoTokenizer.from_pretrained(model_name) from auto_round import AutoRound bits, group_size, sym = 4, 128, False autoround = AutoRound(model, tokenizer, bits=bits, group_size=group_size, sym=sym) autoround.quantize() output_dir = "./tmp_autoround" autoround.save_quantized(output_dir) ##save_quantized(output_dir,format="auto_gptq")
<details> <summary>详细超参数</summary>
  • model: 要量化的PyTorch模型。

  • tokenizer: 用于处理输入数据的可选分词器。如果没有,必须提供数据集。

  • bits (int): 量化的位数(默认为4)。

  • group_size (int): 量化组的大小(默认为128)。

  • sym (bool): 是否使用对称量化(默认为False)。

  • enable_quanted_input (bool): 是否使用前一个量化块的输出作为当前块的输入进行调优(默认为True)。

  • enable_minmax_tuning (bool): 是否启用权重最小-最大值调优(默认为True)。

  • iters (int): 调优迭代次数(默认为200)。

  • lr (float): 舍入值的学习率(默认为None,将自动设置为1.0/iters)。

  • minmax_lr (float): 最小-最大值调优的学习率(默认为None,将自动设置为lr)。

  • nsamples (int): 用于调优的样本数(默认为128)。

  • seqlen (int): 用于调优的序列数据长度(默认为2048)。

  • batch_size (int): 训练的批量大小(默认为8)。

  • scale_dtype (str): 要使用的量化比例的数据类型(默认为"float16"),不同的内核有不同的选择。

  • amp (bool): 是否使用自动混合精度(默认为True)。

  • nblocks (int): 打包几个块作为一个进行调优(默认为1)。

  • gradient_accumulate_steps (int): 梯度累积步数(默认为1)。

  • low_gpu_mem_usage (bool): 是否以~20%更多调优时间为代价节省GPU内存(默认为False)。

  • dataset Union[str, list, tuple, torch.utils.data.DataLoader]: 用于调优的数据集名称(默认为"NeelNanda/pile-10k")。支持本地json文件和数据集组合,例如"./tmp.json,NeelNanda/pile-10k:train, mbpp:train+validation+test"。

  • layer_config (dict): 权重量化的配置(默认为空字典),主要用于混合位宽或混合精度。

  • device: 用于调优的设备。默认设置为'auto',允许自动检测。

</details>

提示

1 考虑增加'iters'(例如1000)以获得更好的结果,但会增加调优时间。

2 考虑增加'nsamples'(例如512)以获得更好的结果,但会使用更多内存(~20G)。

3 将'minmax_lr'设置为2.0/iters有时会产生更好的结果。

模型推理

请先运行量化代码

AutoRound格式

cuda: git clone https://github.com/intel/auto-round.git && cd auto-round && pip install -vvv --no-build-isolation -e .

cpu:

  • 选项1: pip install auto-round && pip install intel-extension-for-transformers
  • 选项2: git clone https://github.com/intel/auto-round.git && cd auto-round && pip install -vvv --no-build-isolation -e .

hpu: 推荐使用带有Gaudi软件栈的docker镜像。更多详情可以在Gaudi指南中找到。

Gaudi2/ CPU/ GPU

from transformers import AutoModelForCausalLM, AutoTokenizer from auto_round import AutoRoundConfig device = "auto" ##cpu, hpu, cuda quantization_config = AutoRoundConfig( backend=device ) quantized_model_path = "./tmp_autoround" model = AutoModelForCausalLM.from_pretrained(quantized_model_path, device_map=device, quantization_config=quantization_config) tokenizer = AutoTokenizer.from_pretrained(quantized_model_path) text = "There is a girl who likes adventure," inputs = tokenizer(text, return_tensors="pt").to(model.device) print(tokenizer.decode(model.generate(**inputs, max_new_tokens=50)[0]))

AutoGPTQ/AutoAWQ格式

1 请通过修改以下代码来保存量化模型:autoround.save_quantized(output_dir, format="auto_gptq")autoround.save_quantized(output_dir, format="auto_awq")

2 参考他们的仓库来推理模型。

支持列表

模型支持
Qwen/Qwen2-7BHF-int4模型
Qwen/Qwen2-57B-A14B-InstructHF-int4模型
Intel/neural-chat-7b-v3-3HF-int4模型, 准确性, 配方, 示例
Intel/neural-chat-7b-v3-1HF-int4模型, 准确性, 配方, 示例
mistralai/Mistral-7B-v0.1HF-int4模型-lmhead, HF-int4模型, 准确性, 配方, 示例
microsoft/phi-2HF-int4-sym模型, 准确性, 配方, 示例
google/gemma-2bHF-int4模型, 准确性, 配方, 示例
tiiuae/falcon-7bHF-int4模型-G64, 准确性, 配方, 示例
mistralai/Mistral-7B-Instruct-v0.2HF-int4模型 (审核中), 准确性, 配方, 示例
mistralai/Mixtral-8x7B-Instruct-v0.1HF-int4模型 (审核中), 准确性, 配方, 示例
mistralai/Mixtral-8x7B-v0.1HF-int4模型 (审核中), 准确性, 配方, 示例
meta-llama/Meta-Llama-3-8B-Instruct准确性, 配方, 示例
google/gemma-7b准确性, 配方, 示例
meta-llama/Llama-2-7b-chat-hf准确性, 配方, 示例
Qwen/Qwen1.5-7B-Chat准确性, 对称配方, 非对称配方, 示例
baichuan-inc/Baichuan2-7B-Chat准确性, 配方, 示例
01-ai/Yi-6B-Chat准确度, 配方, 示例
facebook/opt-2.7b准确度, 配方, 示例
bigscience/bloom-3b准确度, 配方, 示例
EleutherAI/gpt-j-6b准确度, 配方, 示例
Salesforce/codegen25-7b-multi示例
huggyllama/llama-7b示例
mosaicml/mpt-7b示例
THUDM/chatglm3-6b示例
MBZUAI/LaMini-GPT-124M示例
EleutherAI/gpt-neo-125m示例
databricks/dolly-v2-3b示例
stabilityai/stablelm-base-alpha-3b示例

参考文献

如果您发现 AutoRound 对您的研究有用,请引用我们的论文:

@article{cheng2023optimize, title={通过符号梯度下降优化权重舍入以实现大型语言模型的量化}, author={程文华 and 张伟伟 and 沈海浩 and 蔡一扬 and 何鑫 and 吕考考 and 刘毅}, journal={arXiv预印本 arXiv:2309.05516}, year={2023} }

编辑推荐精选

TRAE编程

TRAE编程

AI辅助编程,代码自动修复

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

AI工具TraeAI IDE协作生产力转型热门
蛙蛙写作

蛙蛙写作

AI小说写作助手,一站式润色、改写、扩写

蛙蛙写作—国内先进的AI写作平台,涵盖小说、学术、社交媒体等多场景。提供续写、改写、润色等功能,助力创作者高效优化写作流程。界面简洁,功能全面,适合各类写作者提升内容品质和工作效率。

AI辅助写作AI工具蛙蛙写作AI写作工具学术助手办公助手营销助手AI助手
问小白

问小白

全能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 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

下拉加载更多