README.md

msModelSlim 资料

欢迎来到 msModelSlim 资料,此资料目录将为你提供有关 msModelSlim 快速入门、功能、算法、接口、FAQ等介绍,帮助你更快熟悉 msModelSlim 工具。

msModelSlim 资料将在工具迭代更新中不断完善,有任何问题请联系我们,让我们一起构筑更易用的 msModelSlim 工具!

安装指南

具体安装步骤请查看安装指南

快速入门

名称 文档
一键量化快速入门 一键量化快速入门

支持矩阵

类别 文档
大模型支持矩阵 大模型支持矩阵

功能指南

msModelSlim当前支持两种量化服务:V0量化服务与V1量化服务。

msModelSlim V0量化服务基于旧版msModelSlim量化框架及其Python API 接口实现量化功能,将量化过程分为模型加载、离群值抑制和量化校准与保存三个阶段,可以在离群值抑制和量化校准阶段分别采用一种算法。

随着量化算法日益丰富,模型愈发庞大复杂,msModelSlim认识到仅凭离群值抑制算法和量化算法描述的量化方案无法满足新的模型量化需求,在算法之上还有量化策略,即不同的结构可以采用不同的量化算法;同时,随着模型规模愈发庞大,如何利用受限的资源完成大模型的量化也成为迫在眉睫的问题。

msModelSlim认为量化本质上是对模型局部结构的修改和替换,基于此msModelSlim重新设计了量化框架及其Python API,新框架将局部模块、一个算法和一批数据的结合作为基本校准单元,将量化过程视为一系列的基本校准单元,并搭建了msModelSlim V1 量化服务。

当前使用msModelSlim的方式主要包括:

  • 大模型一键量化:通过V0量化服务或V1量化服务实现,用户指定必要参数即可通过命令行快速完成量化;
  • 大模型量化敏感层分析:通过V1量化服务实现,用户指定必要参数即可通过命令行快速完成量化敏感层分析;
  • 大模型脚本量化:通过V0量化服务实现,用户按基本量化流程搭建量化脚本,实现模型加载、离群值抑制和量化校准与保存三个阶段完成量化;

用户可快速通过推荐实践找到以上方式在已支持模型上的实现,快速完成量化;也可以通过下面的表格内容找到各个功能模块的使用说明,自定义完成量化。

大模型一键量化

框架 主要模块 子模块 功能/主题 文档 相关接口说明
PyTorch 一键量化 命令行一键量化 大模型训练后量化 一键量化使用说明 一键量化接口说明
大模型量化算法 异常值抑制算法
Flex Smooth Quant
Flex Smooth Quant 算法说明 -
异常值抑制算法
Flex AWQ SSZ
Flex AWQ SSZ 算法说明 -
异常值抑制算法
Iterative Smooth
Iterative Smooth 算法说明 -
权重量化算法
SSZ
SSZ 算法说明 -
异常值抑制算法
KV Smooth
KV Smooth 算法说明 -
KVCache 量化算法 KVCache 量化算法说明 -
FA3 量化算法 FA3 量化算法说明 -
直方图激活量化算法 直方图激活量化算法说明 -
激活值阶段间混合量化算法
PDMIX
PDMIX 算法说明 -
大模型浮点稀疏 大模型浮点稀疏 -

大模型量化敏感层分析

框架 模块 功能/主题 文档 相关接口说明
PyTorch 量化敏感层分析 分析量化过程中的精度敏感层 量化敏感层分析使用指南 接口说明:必需参数
接口说明:可选参数

大模型脚本量化

框架 模块 功能/主题 文档 相关接口说明
PyTorch 大模型量化 大模型训练后量化 大模型训练后量化 AntiOutlierConfig
AntiOutlier
process
QuantConfig
Calibrator
run
save
LayerSelector
FakeQuantizeCalibrator
FA 量化使用说明 FA量化使用说明 FAQuantizer
quant
低显存量化特性使用说明 低显存量化特性使用说明 -
混合校准数据集 混合校准数据集 CalibrationData
MindSpeed 适配器 MindSpeed适配器 ModelAdapter
AntiOutlierAdapter
CalibratorAdapter
process()
开源权重转换为 msModelSlim 权重 开源权重转换为msModelSlim权重 -
大模型稀疏量化 大模型稀疏量化 大模型稀疏量化 -
权重压缩 权重压缩 CompressConfig
Compressor run
export
export_safetensors
多模态生成模型推理优化 多模态生成模型推理优化 多模态生成模型推理优化 DitCache: DitCacheSearchConfig
DitCache: DitCacheAdaptor
采样优化接口: ReStepSearchConfig
采样优化接口: ReStepAdaptor
查看其他功能

其他功能

PyTorch

框架 模块 功能/主题 文档 相关接口说明
PyTorch 大模型压缩 长序列压缩 长序列压缩 Alibi编码类型: RACompressConfig
Alibi编码类型: RACompressor
Alibi编码类型: get_alibi_windows
RoPE编码类型: RARopeCompressConfig
RoPE编码类型: RARopeCompressor
RoPE编码类型: get_compress_heads
伪量化精度测试 伪量化精度测试工具 伪量化精度测试工具 -
常规模型量化 训练后量化 训练后量化 QuantConfig
Calibrator
get_quant_params
export_param
export_quant_safetensor
export_quant_onnx
量化感知训练 量化感知训练 QatConfig
qsin_qat
save_qsin_qat_model
模型稀疏 模型稀疏 模型稀疏 SparseConfig
Compressor
compress()
稀疏加速训练 稀疏加速训练 sparse_model_depth
sparse_model_width
模型剪枝 Transformer 类模型权重剪枝调优 Transformer类模型权重剪枝调优 add_blocks_params
set_steps
prune_model_weight
基于重要性评估的剪枝调优 基于重要性评估的剪枝调优 __init__
set_importance_evaluation_function
set_node_reserved_ratio
analysis
prune
prune_by_desc
模型低秩分解 模型低秩分解 模型低秩分解 __init__
from_ratio
from_vbmf
from_dict
from_file
from_fixed
decompose_network
count_parameters

MindSpore

框架 模块 文档 相关接口说明
MindSpore 常规模型训练后量化 训练后量化 create_quant_config
quantize_model
save_model

ONNX

框架 模块 文档 相关接口说明
ONNX 常规模型训练后量化 训练后量化 post_training_quant接口: QuantConfig
post_training_quant接口: preprocess_func_coco
post_training_quant接口: preprocess_func_imagenet
post_training_quant接口: run_quantize
squant_ptq接口: QuantConfig
squant_ptq接口: OnnxCalibrator
squant_ptq接口: run()
squant_ptq接口: export_quant_onnx

common

类别 模块 文档 相关接口说明
common 模型蒸馏 模型蒸馏 get_distill_model
set_teacher_train
add_inter_soft_label
add_output_soft_label
set_hard_label
add_custom_loss_func

自主量化

面向需要将自有模型接入 msModelSlim 的开发者,msModelSlim提供了自主量化模型接入指南

案例集

案例分类 案例名称 说明
量化精度调优 w8a8精度调优策略 w8a8精度调优策略指南
w8a16精度调优策略 w8a16精度调优策略指南
稀疏量化调试 稀疏量化精度调试案例 稀疏量化精度调试方法和案例
代码集成 量化及稀疏量化场景导入代码样例 量化和稀疏量化代码集成示例
权重转换 msModelSlim量化权重转AutoAWQ&AutoGPTQ使用指南 量化权重格式转换指南
推理部署 加速库&MindIE-Torch场景下的量化权重使用案例 推理加速库中量化权重使用方法

FAQ

FAQ 旨在帮助用户解决一些使用msModelSlim工具时遇到的常见问题,目前正在逐步完善中,msModelSlim将持续补充和更新。

具体FAQ可查看FAQ