
使用 SWIFT 对 Yi 系列模型进行 AWQ/HQQ/GPTQ 量化从安装到推理的完整实战【免费下载链接】YiA series of large language models trained from scratch by developers 01-ai项目地址: https://gitcode.com/GitHub_Trending/yi/YiSWIFT 是 ModelScope 开源的一站式大模型训练、推理、评测与部署框架支持多模态大模型并能直接打通训练-评测-应用的完整链路。本文以 Yi-1.5-6B-Chat 为例讲解如何用 SWIFT 对 Yi 系列模型执行 AWQ、GPTQ、BNB、HQQ、EETQ 五种主流量化覆盖环境安装、量化后端编译、swift export离线量化与swift infer推理验证的完整流程读完即可在自己的 GPU 环境下把 Yi 模型压缩到 4-bit 并跑通推理。SWIFT 量化能力概览SWIFT 内置了统一的量化入口支持通过以下五种技术对模型进行量化| 量化方法 | 类别 | 特点 | 使用方式 | |--|--|--|--| | AWQ | 激活感知权重量化PTQ | 通过少量校准数据保护重要权重通道低 bit 下精度损失小 |swift export离线量化 | | GPTQ | 基于误差补偿的 PTQ | 使用 Hessian 信息逐层补偿量化误差 |swift export离线量化 | | BNBbitsandbytes | 训练/推理时量化 | 与 Transformers 深度集成支持 4/8-bit 加载 |swift infer即时量化 | | HQQ | 无需校准数据的 PTQ | 基于二阶统计量量化速度快无需反向传播 |swift infer即时量化 | | EETQ | 基于 EETQ 库的低比特量化 | 由网易有道开源侧重推理加速 |swift infer即时量化 |从源码结构看SWIFT 通过swift export与swift infer两个 CLI 入口统一调度上述后端export面向需要输出持久化量化权重文件的场景AWQ/GPTQ而infer支持边量化边推理的快速验证场景BNB/HQQ/EETQ。安装 ms-swift 框架首先克隆 SWIFT 仓库并安装带 LLM 依赖的版本git clone https://github.com/modelscope/swift.git cd swift pip install -e .[llm]-e表示以可编辑模式安装便于后续直接使用仓库内的最新代码[llm]额外引入大语言模型推理所需的基础依赖。按需安装量化后端SWIFT 本身不捆绑量化后端需要根据你选择的量化方式单独安装对应依赖。每种后端的安装都与 CUDA 版本存在对应关系务必按官方说明匹配版本# 使用 awq 量化: # autoawq 和 cuda 版本有对应关系请按照 AutoAWQ 官方仓库选择版本 pip install autoawq -U # 使用 gptq 量化: # auto_gptq 和 cuda 版本有对应关系请按照 AutoGPTQ 官方安装文档选择版本 pip install auto_gptq -U # 使用 bnb 量化: pip install bitsandbytes -U # 使用 hqq 量化: # 需要 transformers4.41 pip install hqq # 使用 eetq 量化: # 需要 transformers4.41参考 EETQ 官方仓库从源码编译 git clone https://github.com/NetEase-FuXi/EETQ.git cd EETQ/ git submodule update --init --recursive pip install .安装要点autoawq与auto_gptq属于 CUDA 扩展编译产物与 torch/CUDA 版本强绑定版本不匹配会导致 import 失败或运行崩溃安装前先确认nvidia-smi与python -c import torch; print(torch.__version__, torch.version.cuda)的输出hqq与eetq需要transformers4.41建议一并升级eetq通过git submodule update --init --recursive拉取子模块后本地编译安装。环境对齐可选如果运行时报依赖错误可执行环境对齐脚本通常无需运行仓库使用最新环境测试# 环境对齐 (通常不需要运行. 如果你运行错误, 可以跑下面的代码, 仓库使用最新环境测试) pip install -r requirements/framework.txt -U pip install -r requirements/llm.txt -U这两条命令分别将 SWIFT 框架依赖与 LLM 相关依赖升级到 requirements 文件锁定的版本用于消除本地环境与 SWIFT 测试环境的版本偏差。实战一使用 SWIFT 对 Yi 进行 AWQ 量化AWQActivation-aware Weight Quantization量化需要校准数据集来感知激活分布。除自定义数据集外SWIFT 内置了alpaca-zh、alpaca-en、sharegpt-gpt4:default等常用数据集可直接通过--dataset指定。执行量化CUDA_VISIBLE_DEVICES0 swift export \ --model_type yi-1_5-6b-chat --quant_bits 4 \ --dataset alpaca-zh alpaca-en sharegpt-gpt4:default --quant_method awq命令参数解析| 参数 | 含义 | 本例取值 | |--|--|--| |CUDA_VISIBLE_DEVICES0| 指定使用 0 号 GPU | 0 | |--model_type| 待量化的模型类型标识SWIFT 根据它自动映射模型权重与模板 |yi-1_5-6b-chat| |--quant_bits| 量化位宽 | 4即 INT4 | |--dataset| 量化校准数据集空格分隔可传入多个 |alpaca-zh alpaca-en sharegpt-gpt4:default| |--quant_method| 量化算法 |awq|从源码看 AWQ 的核心量化配置仓库中的 quant_autoawq.py 展示了 AutoAWQ 的底层量化参数swift export --quant_method awq本质上是把这些参数自动化quant_config { zero_point: True, # 启用零点对称量化进一步提升精度 q_group_size: args.group_size, # 分组量化组大小默认 128 w_bit: args.bits, # 权重位宽默认 4 } model.quantize(tokenizer, quant_configquant_config) model.save_quantized(args.output_dir, safetensorsTrue)即 AWQ 量化的三个关键超参为位宽 w_bit对应--quant_bits、分组大小 q_group_size默认 128组越小精度越高但开销越大、是否启用 zero_point。量化结果以 safetensors 格式保存与 tokenizer 文件一同输出。使用量化后的模型进行推理量化完成后用swift infer加载产物即可对话CUDA_VISIBLE_DEVICES0 swift infer \ --model_type yi-1_5-6b-chat \ --model_id_or_path yi-1_5-6b-chat-awq-int4参数说明--model_type模型类型与量化时保持一致--model_id_or_path量化后模型的位置可填模型名如yi-1_5-6b-chat-awq-int4或本地路径。推理正确性验证仓库中的 eval_quantized_model.py 提供了独立于 SWIFT 的验证方式——通过AutoAWQForCausalLM.from_quantized加载量化模型后执行生成测试可用来交叉确认量化权重可用python eval_quantized_model.py --model /quantized_model --trust_remote_code实战二使用 SWIFT 快速完成 HQQ 量化与推理对于 BNB、HQQ、EETQ 这类无需离线导出权重的量化方式swift infer一步即可完成加载 → 量化 → 推理CUDA_VISIBLE_DEVICES0 swift infer \ --model_type yi-1_5-6b-chat \ --quant_method hqq \ --quantization_bit 4参数说明--quant_method量化方法可替换为bnb、eetq等--model_type模型类型--quantization_bit量化位宽此处为 4INT4。相比 AWQ 流程HQQ 无需校准数据集量化过程中不依赖反向传播与激活分布统计因此耗时更短适合快速评估模型在低 bit 下的表现若需持久化量化权重再分发部署则应使用swift export路线。量化方案的参考效果与横向对比在同一仓库的量化专题文档中提供了两种离线量化方案在 Yi-1.5-6B-Chat 上的资源占用参考来自 autoawq-yi-quantization.md 与 autogptq-yi-quantization.md| 量化方案 | 显存使用 | 硬盘占用 | |--|--|--| | Yi-1.5-6B-Chat 原始 FP16 | 6G | 24.5G | | AutoAWQINT4 | — | 压缩后显著减小 | | AutoGPTQINT8 | 7G | 27G |注以上数据为仓库文档在特定环境下的实测值实际占用会随 CUDA 版本、量化位宽与批处理大小变化请以本机实测为准。与 SWIFT 生态的衔接SWIFT 量化能力可以与同一框架内的其他环节无缝衔接使用 finetune-yi-with-swift.md 微调得到的 Yi 模型可直接替换--model_type对应的权重路径参与量化量化后的模型同样支持通过 Inference_using_swift.ipynb 中演示的swift infer流程进行部署与评测若需更细粒度控制可绕过 SWIFT直接使用仓库内置脚本 quant_autoawq.pyAutoAWQ 路线见 README与 quant_autogptq.pyGPTQ 路线见 README自行完成量化。常见问题与注意事项CUDA 版本不匹配autoawq、auto_gptq、eetq均为 CUDA 扩展安装失败或 import 报错时优先检查 torch/CUDA 与扩展包的版本对应关系必要时改用源码编译安装。transformers 版本过低HQQ 与 EETQ 要求transformers4.41请提前升级。校准数据集不可用AWQ 量化依赖数据集若内置数据集下载失败可通过--dataset指定本地自定义数据集路径替代。量化位宽选择--quant_bits 4与--quantization_bit 4分别用于 export 与 infer 场景4-bit 是精度与显存开销的主流平衡点8-bit 精度更高但压缩收益下降。首次运行下载权重SWIFT 会按model_type自动从 ModelScope/HuggingFace 拉取权重与对话模板离线环境需提前将模型下载到本地并改用本地路径。【免费下载链接】YiA series of large language models trained from scratch by developers 01-ai项目地址: https://gitcode.com/GitHub_Trending/yi/Yi创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考