msModelSlim 提供了两种量化方式:一键量化(V1)和传统量化(V0)。
- 一键量化(V1):面向零基础用户,通过命令行方式快速完成量化,具备“开箱即用”的特性。系统会自动匹配最佳实践配置,用户只需指定必要参数即可;此外也支持自定义精细化混合量化策略,灵活性高。
- 传统量化(V0):通过 Python 脚本方式执行量化,在泛化性、可读性等方面均低于一键量化,已停止演进,通常用于一键量化尚未支持的模型。
下面将以 Qwen2.5-7B-Instruct 为例完成量化并基于vllm-ascend完成一次推理。
vllm-ascend提供用于部署的Docker镜像,可以从镜像仓库拉取预构建镜像,具体参考。
以 Qwen2.5-7B-Instruct 为例,可前往 获取原始模型权重。
传统量化方式需要准备校准数据文件([object Object] 格式),用于量化过程中的校准。示例数据文件位于 [object Object] 目录下,如 [object Object]、[object Object] 等。
一键量化通过命令行方式启动,系统会自动匹配最佳实践配置。
说明:
- 最佳实践库中的配置文件放在
[object Object]中。 - 若最佳实践库中未匹配到符合条件的最优配置,系统将依据预设规则为你推荐其他可用配置,并向你确认是否使用该推荐配置继续量化。
- 如果需要打印量化运行日志,可通过环境变量
[object Object]进行设置,可选值为[object Object](默认)或[object Object]。
使用一键量化功能量化 Qwen2.5-7B-Instruct 模型,量化方式采用 w8a8:
其中:
[object Object]为 Qwen2.5-7B-Instruct 原始浮点权重路径[object Object]为用户自定义的量化权重保存路径
传统量化通过 Python 脚本执行。
不同模型有对应的量化脚本,以 Qwen 模型为例:
更多参数: 传统量化支持更多高级参数,如 [object Object](手动回退的量化层)、[object Object](稀疏量化异常值占比)、[object Object](KV Cache 量化)等。详细参数说明请参考各模型目录下的 README.md 文件。
示例 1:Qwen2.5-7B-Instruct W8A8 量化
说明:
不同模型的量化脚本位于
[object Object]目录下对应的模型子目录中,如[object Object]、[object Object]等各模型的具体量化参数和最佳实践请参考对应模型目录下的 README.md 文件
如果需要使用 NPU 多卡量化,请先配置环境变量:
[object Object]
量化完成后,在保存路径目录下会生成以下文件:
文件说明:
[object Object](或[object Object])- 包含量化参数和配置信息,描述了每个权重的量化类型(W8A8、FLOAT 等)[object Object]- 实际的量化模型权重文件[object Object]- 记录本次量化所使用的完整配置信息,可用于复现该量化权重- 其他文件为模型推理所需的配置和词汇表文件,来自原始浮点目录
量化完成后,您可以使用生成的量化权重进行推理。根据不同的推理框架,使用方法如下:
可参考 vllm-ascend 官方文档 运行Docker容器。
假设您已经参考前文使用 msModelSlim 完成了 Qwen2.5-7B-Instruct 的 W8A8 量化,量化后权重保存路径为:
在 Ascend 设备上使用 vllm-ascend 提供在线服务时,可执行:
说明:
[object Object]路径[object Object]即为 msModelSlim 输出的量化模型目录。[object Object]:指定使用适配 Ascend 的量化推理后端,加载由 msModelSlim 生成的权重。- 其余参数(如
[object Object])可根据实际业务场景调整。
服务启动后,可以通过 HTTP 接口发起推理请求,例如:
其中:
[object Object]字段需要与[object Object]保持一致。- 推理时仅需指定量化后模型目录,无需再传入原始浮点权重。
如果希望在 Python 脚本中直接加载量化后模型进行离线推理,可以使用 vllm-ascend 的 [object Object] 接口:
要点说明:
[object Object]依然指向量化后权重所在目录。[object Object]必须显式设置,以启用 Ascend 量化推理路径。- 其余采样参数可根据业务调整。
- 标记了
[object Object]的模型支持一键量化方式 - 所有在
[object Object]目录下有量化脚本的模型都支持传统量化方式
对于过大的模型(7B 及以上),如果遇到显存不足的问题,可以尝试:
Q: 量化过程中出现显存不足怎么办?
A: 可以尝试以下方法:
- 使用逐层量化,在一键量化中默认生效,传统量化中不支持
- 使用 CPU 进行量化(
[object Object]或[object Object],速度较慢但显存占用低)
Q: 量化后的模型精度下降明显怎么办?
A: 可以尝试:
Q: 如何验证量化效果?
A: 可以使用推理框架在线/离线推理,在相同输入下对比量化前后的输出差异,以及比较量化前后的差值。
Q: 如何选择使用哪种量化方式?
A: 量化方式选择建议:
- 如果模型支持一键量化,建议使用一键量化
- 如果模型不支持一键量化,建议使用传统量化(已停止演进)
Q: 一键量化和传统量化生成的权重文件有什么区别?
A: 两种方式生成的权重文件格式相同,都可以用于推理。主要区别在于: