新闻详情

新闻详情

首页 / 资讯中心 / 详情

LMDeploy INT4 模型量化和部署实战:AWQ/GPTQ 4bit 权重压缩、推理与服务

发布时间:2026/9/27 21:24:57来源:尧图网络
LMDeploy INT4 模型量化和部署实战:AWQ/GPTQ 4bit 权重压缩、推理与服务
人工智能大模型模型推理服务推理引擎本地部署模型量化【免费下载链接】lmdeployLMDeploy is a toolkit for compressing, deploying, and serving LLMs.项目地址https://gitcode.com/gh_mirrors/lm/lmdeploy点击查看免费下载本文以 LMDeploy 的 w4a16INT4 权重量化技术为主线完整讲解如何在当前开源仓库的 TurboMind 引擎上完成 4bit 模型的 AWQ 量化、量化后模型的命令行对话验证、离线 pipeline 推理、OpenAI 兼容 RESTful 服务部署以及 RTX 4090 上的真实吞吐表现。读完本文你将掌握从一条命令完成 INT4 量化到把量化模型封装为可对外服务的端到端方案并理解 AWQ 平滑量化在源码中的落地细节可直接复用于 InternLM、Llama、Qwen 等主流架构模型。一、概述什么是 w4a16TurboMind 引擎支持什么w4a16 是指权重以 4bit 整数存储、激活值仍保持 16bit 浮点精度的量化方案是当前在消费级 GPU 上部署大模型最主流的压缩手段之一。LMDeploy 的TurboMind 引擎支持推理由两种业界主流算法量化得到的 4bit 模型AWQActivation-aware Weight Quantization基于激活值分布感知的权重量化方法量化时利用校准数据集的激活统计信息对权重做平滑缩放从而显著降低 4bit 量化带来的精度损失GPTQGenerative Pre-trained Transformer Quantization基于二阶 Hessian 信息的逐层权重量化方法同样能产出 4bit 权重。需要注意一个关键前提LMDeploy 的量化模块目前仅内置 AWQ 量化算法。也就是说你可以用lmdeploy lite auto_awq一键产出 AWQ 4bit 模型也可以直接加载社区已有的 GPTQ 4bit 模型进行推理但仓库本身不提供 GPTQ 量化工具GPTQ 模型需通过 AutoGPTQ 等外部工具预先量化。这一边界在 lmdeploy/cli/lite.py 的 CLI 定义中体现得十分清楚auto_awq子命令对应 AWQ 算法实现而auto_gptq子命令仅作为入口存在实际调用 lmdeploy/lite/apis/gptq.py 中的auto_gptq封装。1.1 支持 AWQ/GPTQ INT4 推理的 NVIDIA GPUTurboMind 引擎对 INT4 推理的 GPU 架构支持范围如下对应 CUDA Compute CapabilityGPU 架构Compute Capability代表显卡Voltasm70V100Turingsm7520 系列RTX 2080 Ti 等、T4Amperesm80 / sm8630 系列、A10、A16、A30、A100Ada Lovelacesm8940 系列RTX 4090 等也就是说从 V100 到 RTX 40 系列均可运行 INT4 推理无需依赖最新的 Hopper 架构。进行量化和推理前请先按照 安装指南 完成 lmdeploy 的安装。二、模型量化一条命令完成 AWQ 4bit 压缩2.1 标准量化命令LMDeploy 将量化能力封装为lmdeploy lite auto_awq子命令。以量化internlm/internlm2_5-7b-chat为例完整命令如下export HF_MODELinternlm/internlm2_5-7b-chat export WORK_DIRinternlm/internlm2_5-7b-chat-4bit lmdeploy lite auto_awq \ $HF_MODEL \ --calib-dataset wikitext2 \ --calib-samples 128 \ --calib-seqlen 2048 \ --w-bits 4 \ --w-group-size 128 \ --batch-size 1 \ --work-dir $WORK_DIR量化结束后量化后的权重文件含模型配置、tokenizer 等会全部保存在$WORK_DIR指定的目录下。绝大多数情况下上述可选参数可以直接采用默认值。例如量化同一模型命令可以简化为lmdeploy lite auto_awq internlm/internlm2_5-7b-chat --work-dir internlm2_5-7b-chat-4bit2.2 量化参数详解默认值与取值范围从 lmdeploy/cli/lite.py 的 CLI 参数定义和 lmdeploy/cli/utils.py 的ArgumentHelper中可以确认各参数的默认值与语义参数默认值说明--calib-datasetwikitext2校准数据集名称。可选值wikitext2、c4、pileval、gsm8k、neuralmagic_calibration、open-platypus、openwebtext--calib-samples128用于校准的样本数。设置为0表示无数据量化data free quantization即不需要加载校准数据集--calib-seqlen2048校准时的序列长度--w-bits4权重量化位数--w-group-size128权重量化统计的分组大小per-group 量化粒度--batch-size1运行校准样本的 batch size。显存小则用小 batch-sizebatch-size 越大校准耗时越短但占用更多显存--search-scaleFalse是否搜索缩放比例smooth 系数。默认关闭此时仅以 0.5 的固定比例做平滑量化--work-dir./work_dir量化结果输出目录--devicecuda权重量化设备支持cuda与npu--dtypeauto加载权重与校准推理的数据类型可选auto、float16、bfloat16--revisionNone远程模型的版本号分支名、tag 或 commit id不指定则用默认版本--download-dirNone模型下载与加载目录默认使用 HuggingFace 默认缓存目录--trust-remote-codeFalse是否信任并执行远端自定义代码其中--calib-samples 0的无数据量化路径在 lmdeploy/lite/apis/auto_awq.py 中实现此时直接调用load_model_and_tokenizer加载模型跳过基于校准数据集激活统计的平滑步骤仅对权重做纯统计量化适合无法获取校准数据的场景。2.3 关键实践建议--work-dir参数务必包含模型名就像示例中internlm2_5-7b-chat-4bit这样。原因在于推理接口会以模糊搜索方式将--work-dir与内置对话模板chat template做匹配模型名携带在目录名中时推理时即可自动选中合适的对话模板无需手动指定。量化后精度有损时的处理建议开启--search-scale重新量化并把--batch-size调大例如 8。search_scale开启后量化过程会明显变慢--batch-size影响显存占用量可根据机器实际情况酌情调整。从源码看开启--search-scale后校准阶段会使用CalibrationContextV2并搜索每个线性层的最优平滑比例见 lmdeploy/lite/apis/calibrate.py而关闭时则使用固定 alpha0.5 的CalibrationContext。量化结果自带量化配置元数据量化完成后auto_awq会在模型 config 中写入quantization_config字段包含quant_methodawq、versiongemm、bits、group_size、zero_point等关键信息见 lmdeploy/lite/apis/auto_awq.py这使得推理端可以自动识别模型为 AWQ 格式。2.4 量化完成后快速验证对话量化完成后可以直接在控制台与量化模型对话快速验证效果lmdeploy chat ./internlm2_5-7b-chat-4bit --model-format awq注意这里必须显式指定--model-format awq让 TurboMind 引擎按 AWQ 4bit 权重格式加载模型。三、AWQ 量化原理与源码实现解读理解 AWQ 在 LMDeploy 中的落地方式有助于你判断量化结果异常时该如何调整参数。整个流程在 lmdeploy/lite/quantization/awq.py 中实现核心有三步第一步层结构映射。文件头部定义了NORM_FCS_MAP与FC_FCS_MAP两张映射表覆盖 Llama、InternLM、Qwen、Phi-3、GLM、Mixtral、Qwen2-VL 等主流架构。例如对 Llama 系列input_layernorm对应self_attn.k_proj/q_proj/v_projself_attn.v_proj对应self_attn.o_proj。这张表告诉量化器哪些 LayerNorm 后的线性层、哪些相邻线性层之间存在激活分布关联从而决定平滑量化的作用对象。当模型架构不在映射表中时check_awq_supported 会抛出NotImplementedError。第二步平滑smoothing。AWQ 的核心思想是把量化难度从激活迁移到权重。smooth_ln_fcs根据校准阶段收集到的激活尺度act_scales与权重尺度w_scales按scales act_scales^alpha / w_scales^(1-alpha)默认alpha0.5计算缩放系数对 LayerNorm 权重做除法、对后续全连接层权重做乘法从而在数学上等价地削平激活的极端值见 smooth_ln_fcs。smooth_fc_fcs处理 v_proj→o_proj 这类相邻线性层的平滑并针对 Llama-2 的 GQA 结构、Qwen 的融合 QKV 结构做了特判见 smooth_fc_fcs。第三步权重量化。平滑之后quant_weights对每个目标线性层调用pseudo_quantize_tensor做伪量化按group_size128分组每组计算 scale 与 zero-point将权重离散到 4bit 整数范围再用WeightOnlyQLinear替换原始nn.Linear见 quant_weights 与 pseudo_quantize_tensor。含lora的模块会被自动跳过量化SKIPPED_MODULE [lora]。从源码结构看量化全程遵循逐层加载到 GPU → 平滑/量化 → 释放回 CPU的流水线并在每层处理后调用torch.cuda.empty_cache()并打印峰值显存占用因此显存紧张时减小--batch-size和--calib-seqlen是有效的缓解手段。四、模型评测量化后的模型质量需要用权威评测体系验证。LMDeploy 官方推荐使用OpenCompass来评测量化模型在多个维度上的能力评测时通过 LMDeploy 提供的推理后端加载 4bit 模型。具体评测方法请参考 OpenCompass 官方文档中使用 LMDeploy 进行评测的指南章节其中给出了在 OpenCompass 中配置 LMDeploy 后端、指定model_formatawq等参数的方法。此外仓库内的 autotest/evaluate 目录提供了基于 LMDeploy API 的评测用例如 test_api_evaluate.py可作为自行搭建评测链路的参考。五、模型推理5.1 本地量化模型的离线推理量化完成后通过以下几行代码即可实现批量离线推理from lmdeploy import pipeline, TurbomindEngineConfig engine_config TurbomindEngineConfig(model_formatawq) pipe pipeline(./internlm2_5-7b-chat-4bit, backend_configengine_config) response pipe([Hi, pls intro yourself, Shanghai is]) print(response)要点说明必须通过TurbomindEngineConfig(model_formatawq)显式声明模型为 AWQ 格式TurboMind 引擎才会按 4bit 分组量化权重加载model_format在 lmdeploy/cli/utils.py 中定义了hf、awq、gptq、compressed-tensors、fp8、mxfp4等取值pipeline返回的是一个包含多条回复的响应对象支持传入字符串列表做批量推理关于pipeline的完整参数说明请参考 pipeline.md。5.2 直接推理 HuggingFace Hub 上的 AWQ 4bit 模型除了本地量化模型LMDeploy 还支持直接推理 HuggingFace Hub 上已用 AWQ 量化好的 4bit 权重模型典型来源包括lmdeploy 官方空间和TheBloke 空间下发布的模型# 推理 lmdeploy 空间下的模型 from lmdeploy import pipeline, TurbomindEngineConfig pipe pipeline(lmdeploy/llama2-chat-70b-4bit, backend_configTurbomindEngineConfig(model_formatawq, tp4)) response pipe([Hi, pls intro yourself, Shanghai is]) print(response) # 推理 TheBloke 空间下的模型 from lmdeploy import pipeline, TurbomindEngineConfig, ChatTemplateConfig pipe pipeline(TheBloke/LLaMA2-13B-Tiefighter-AWQ, backend_configTurbomindEngineConfig(model_formatawq), chat_template_configChatTemplateConfig(model_namellama2) ) response pipe([Hi, pls intro yourself, Shanghai is]) print(response)两个示例体现了两种常见场景第一个示例中tp4表示 4 卡张量并行tensor parallelism用于 70B 级别的大模型tp取值应为 2 的幂次第二个示例中由于模型名中不携带可模糊匹配的模板信息因此通过ChatTemplateConfig(model_namellama2)手动指定对话模板这与 2.3 节建议work-dir 带模型名以自动匹配模板的机制形成互补。六、推理服务一键封装 OpenAI 兼容 RESTful APILMDeploy 的api_server支持把量化模型一键封装为服务对外提供的 RESTful API 与 OpenAI 接口兼容。启动命令如下lmdeploy serve api_server ./internlm2_5-7b-chat-4bit --backend turbomind --model-format awq服务默认监听端口为23333--backend turbomind指定使用 TurboMind 引擎--model-format awq指定量化格式二者缺一不可。服务启动后可以在终端通过api_client与 server 对话lmdeploy serve api_client http://0.0.0.0:23333通过 Swagger UI 在线阅读和试用各接口浏览器访问http://0.0.0.0:23333即可看到 Swagger UI在线调试/v1/chat/completions、/v1/models等接口查阅接口定义文档各接口的详细定义与使用方法见 api_server.md。七、推理性能LMDeploy 在NVIDIA GeForce RTX 4090上对 4bit 量化的 Llama-2-7B-chat 与 Llama-2-13B-chat 做了 token 生成速度对比。测试配置为 batch size 1(prompt_tokens, completion_tokens) (1, 512)即单条 prompt token、生成 512 个 token单位为 tokens/smodelllm-awqmlc-llmturbomindLlama-2-7B-chat112.9159.4206.4Llama-2-13B-chatN/A90.7115.8可以看到在相同的 4bit 量化与单 batch 条件下TurboMind 引擎在两个模型上的吞吐均高于对比方案。需要注意该数据是特定硬件RTX 4090与特定测试配置下的实测结果实际吞吐会随模型大小、输入输出长度、batch size、GPU 型号而变化不应外推为普适结论。如果你在自己的环境复测可以参照 benchmark 目录下的基准测试脚本如 benchmark_throughput.py搭建测试。八、快速问答FAQQ1量化时出现 Out of Memory显存不够怎么办可以通过以下组合手段降低显存占用减小传参--calib-seqlen例如从 2048 降到 1024 或更低增大传参--calib-samples用更多短样本替代长序列样本降低单次激活显存使用--batch-size为 1源码中 batch size 直接影响校准阶段送入模型的样本张量大小。Q2量化时无法连接 HuggingFace 并下载数据集/模型怎么办可以尝试使用 HuggingFace 镜像站加速下载在终端先执行export HF_ENDPOINThttps://hf-mirror.com再重新执行量化命令即可。此外auto_awq也支持通过--download-dir指定已下载模型的本地目录避免重复走网络下载见 lmdeploy/lite/apis/auto_awq.py本地路径存在时直接跳过下载。九、总结与延伸阅读至此你已经掌握 LMDeploy 从 AWQ 4bit 量化、精度验证、离线推理到在线服务的完整链路lmdeploy lite auto_awq负责量化压缩lmdeploy chat负责快速对话验证pipeline TurbomindEngineConfig(model_formatawq)负责批量离线推理lmdeploy serve api_server负责对外提供服务。核心要点可以概括为量化时通过--search-scale与更大的--batch-size挽回精度推理时务必声明model_formatawq服务化时同时指定--backend turbomind与--model-format awq。如需进一步深入仓库内以下文档与源码可供继续研究量化工具链完整 CLI 定义lmdeploy/cli/lite.pyAWQ 量化入口实现lmdeploy/lite/apis/auto_awq.pyAWQ 平滑与伪量化核心算法lmdeploy/lite/quantization/awq.py校准流程与层类型映射lmdeploy/lite/apis/calibrate.py安装指南docs/zh_cn/get_started/installation.mdpipeline 使用详解docs/zh_cn/llm/pipeline.mdapi_server 接口文档docs/zh_cn/llm/api_server.md相关量化主题W8A8 量化见 docs/zh_cn/quantization/w8a8.mdKV Cache 量化见 docs/zh_cn/quantization/kv_quant.md赞分享人工智能大模型模型推理服务推理引擎本地部署模型量化【免费下载链接】lmdeployLMDeploy is a toolkit for compressing, deploying, and serving LLMs.项目地址https://gitcode.com/gh_mirrors/lm/lmdeploy点击查看免费下载相关推荐LMDeploy W4A16 INT4 权重量化与推理实战AWQ/GPTQ 从量化、评估到服务部署完整指南LMDeploy W4A16 INT4 权重量化与推理实战AWQ/GPTQ 从量化、评估到服务部署完整指南 LMDeploy 的 TurboMind 引擎支持人工智能大模型模型推理服务推理引擎本地部署模型量化LMDeploy TurboMind 运行 llm-compressor INT4 量化模型指南AWQ/GPTQ 量化、部署与精度评测LMDeploy TurboMind 运行 llm compressor INT4 量化模型指南AWQ/GPTQ 量化、部署与精度评测 LMDeploy 的人工智能大模型模型推理服务推理引擎本地部署模型量化基于 AutoAWQ 的 Yi 模型 AWQ 量化实战从 INT4 权重量化到推理部署基于 AutoAWQ 的 Yi 模型 AWQ 量化实战从 INT4 权重量化到推理部署 本指南以开源仓库 quantization/awq/README.md大模型微调模型量化多模态本地部署上一篇告别繁琐DOM操作Knockout.js让你的界面交互设计提速3倍下一篇Minishift网络配置完全手册DNS、代理和容器通信的最佳实践创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

RAG原理-PQ乘积量化 2026/9/27 22:21:13

RAG原理-PQ乘积量化

RAG 原理:PQ 乘积量化当向量数量达到百万、千万甚至更大规模时,瓶颈不仅是“搜索范围太大”,还包括原始向量占用内存过高、距离计算成本过大。PQ(Product Quantization,乘积量化)的核心目标,就是…

阅读更多 →
前端监控工具怎么选:P90和平均值分别适合什么场景 2026/9/27 22:21:06

前端监控工具怎么选:P90和平均值分别适合什么场景

直答:平均值看整体趋势,P90看长尾体验。前端性能是长尾分布,平均值被慢用户拉偏;排查问题时P90更有用。前端性能看板上,"平均加载时间2.3秒"看起来还行,但用户反馈说"有时候卡得要死"。…

阅读更多 →
TDengine 开源时序数据库深度解析:从超级表到工业数采落地 2026/9/27 22:21:04

TDengine 开源时序数据库深度解析:从超级表到工业数采落地

1. 背景:工业与物联网海量时序数据的痛点在 CNC 数控机床、PLC 产线、传感器网关等工业数采场景中,数据有一个共同的形态:每条数据都带一个时间戳,且按时间顺序持续产生。设备点位(主轴转速、进给速度、主轴负载、温度…

阅读更多 →
网站被黑别慌 3步修复fullpage.jswordpress漏洞的速查手册 2026/9/27 22:20:51

网站被黑别慌 3步修复fullpage.jswordpress漏洞的速查手册

网站被黑别慌 3步修复fullpage.jswordpress漏洞的速查手册 刚接到客户电话,声音都抖了:“后台打不开,首页全是乱七八糟的博彩广告代码!”…

阅读更多 →
VsCode好用插件必装推荐:用TaoToken统一Key接入Cline与CC Switch的settings.json配置骨架 2026/9/27 22:20:45

VsCode好用插件必装推荐:用TaoToken统一Key接入Cline与CC Switch的settings.json配置骨架

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
低代码开发 AI Agent Harness Engineering:Coze/Dify 平台的高级玩法与局限性 2026/9/27 22:20:45

低代码开发 AI Agent Harness Engineering:Coze/Dify 平台的高级玩法与局限性

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉