项目目录结构
项目目录结构总览¶
仓库顶层目录结构¶
msmodelslim/
├── ascend_utils/ # 昇腾 Ascend 相关工具与适配(推理、剪枝、量化、蒸馏、安全等)
├── config/ # 全局配置目录(如 config.ini)
├── docs/ # 项目文档(安装、算法说明、API 文档、案例等)
├── example/ # 各模型/任务的量化示例脚本与示例数据
├── lab_calib/ # 量化校准使用的数据集与配置(json/jsonl、图片等)
├── lab_practice/ # 各模型系列的“最佳实践”量化/推理 YAML 配置
├── msmodelslim/ # 主代码包,包含量化核心逻辑与各框架/模型适配
├── precision_tool/ # 量化精度评估工具(precision_tool、TruthfulQA 等)
├── security/ # 安全检查模块(路径安全、类型安全等)
├── test/ # 测试用例与测试脚本(单测、系统测试、冒烟测试、fuzz 等)
├── install.sh # 安装脚本/环境初始化
├── requirements.txt # Python 依赖列表
├── pytest.ini # pytest 测试配置
├── README.md # 项目总览与使用说明
├── LICENSE # 开源许可证
├── OWNERS # 代码所有者/审批配置
└── setup.py # 打包与安装配置脚本
说明:以上只是最外层项目结构,真正的核心代码主要集中在
msmodelslim/目录中,下面重点展开。
msmodelslim/ 结构(一级目录)¶
msmodelslim/
├── __init__.py
├── app/
├── cli/
├── common/
├── core/
├── infra/
├── ir/
├── mindspore/
├── model/
├── onnx/
├── processor/
├── pytorch/
├── quant/
├── Third_Party_Open_Souce_Software_Notice
└── utils/
__init__.py:包初始化逻辑(如日志、补丁加载等)。app/:应用层封装,对外提供“量化服务、一键量化、自动调优、模型分析”等高层应用。cli/:命令行入口及子命令,实现msmodelslim的 CLI 使用方式。common/:与具体框架无关的通用“模型处理能力”,如知识蒸馏、低秩分解、通用剪枝。core/:量化抽象层(QAL)、量化服务、执行器、调优策略等核心基础组件。infra/:与外部服务/资源对接的基础设施,例如 AISBench/vLLM 服务、YAML 管理等。ir/:量化中间表示(IR),定义量化类型、算子、scheme、W8A8/W4A8 等模式。mindspore/:MindSpore 框架的适配与量化实现。model/:各模型系列(DeepSeek、Qwen、Llama、Wan 等)的适配器。onnx/:ONNX 模型的后训练量化、SQuant 以及相关内核与工具。processor/:在模型前/后对权重与激活做处理的“处理器层”,如 SmoothQuant、AutoRound、稀疏化等。pytorch/:PyTorch 框架的适配层、PTQ/QAT 工具和大量 C++/CUDA 扩展。quant/:量化 session 封装,把配置、模型、量化器、处理器串联起来。utils/:通用工具,如日志、配置、DAG 工具、分布式、校验、安全等。
app/ 目录结构¶
app/ # “应用层”封装,对外提供高层应用能力
├── __init__.py
├── analysis/ # 模型/层级分析相关应用
│ ├── __init__.py
│ └── application.py # 分析应用入口(封装分析流程)
├── auto_tuning/ # 自动调优应用(策略搜索、实践管理)
│ ├── __init__.py
│ ├── application.py # 自动调优主应用入口
│ ├── evaluation_service_infra.py # 与评估服务对接的基础设施封装
│ ├── model_info_interface.py # 模型信息查询接口抽象
│ ├── plan_manager_infra.py # 调优计划(Plan)管理接口
│ ├── practice_history_infra.py # 实践历史记录管理(用于回溯和复用)
│ └── practice_manager_infra.py # 实践(Practice)管理抽象
└── naive_quantization/ # 一键量化应用
├── __init__.py
├── application.py # 一键量化主应用入口
├── model_info_interface.py # 量化前模型信息获取接口
└── practice_manager_infra.py # 量化实践管理(简单版)
cli/ 目录结构¶
cli/ # 命令行入口与子命令
├── __init__.py
├── __main__.py # `python -m msmodelslim.cli` 总入口
├── analysis/ # 分析相关 CLI 子命令
│ ├── __init__.py
│ └── __main__.py # 分析命令入口
├── auto_tuning/ # 自动调优相关 CLI 子命令
│ ├── __init__.py
│ └── __main__.py # 自动调优命令入口
├── naive_quantization/ # 一键量化相关 CLI 子命令
│ ├── __init__.py
│ └── __main__.py # 朴素量化命令入口
└── utils.py # CLI 公共工具函数(参数解析、输出等)
common/ 目录结构¶
common/ # 与框架无关的通用“模型处理”能力
├── __init__.py
├── knowledge_distill/ # 知识蒸馏公共实现
│ ├── __init__.py
│ └── knowledge_distill.py # 通用蒸馏流程与接口
├── low_rank_decompose/ # 低秩分解相关能力(LoRA/低秩近似等)
│ ├── __init__.py
│ ├── export.py # 导出低秩分解结果
│ ├── low_rank_decompose.py # 核心低秩分解逻辑
│ ├── tucker.py # Tucker 分解实现
│ └── vbmf.py # VBMF(变分贝叶斯矩阵分解)
└── prune/ # 通用剪枝实现(与具体框架解耦)
├── __init__.py
└── transformer_prune/
├── __init__.py
└── prune_model.py # Transformer 结构的通用剪枝逻辑
core/ 目录结构¶
core/ # 量化核心抽象层(QAL)、执行器、服务等
├── __init__.py
├── analysis_service/ # 分析服务(与 app.analysis 配合)
├── base/ # 核心协议与处理器抽象
├── const.py # 核心常量定义
├── graph/ # “图”相关抽象
├── observer/ # 量化统计模块(Observer)
├── practice/ # 调优/实践相关抽象
├── quant_service/ # “量化服务”核心实现(v0/v1、多模态等)
├── quantizer/ # 量化器(如何根据统计信息生成量化参数)
├── runner/ # 执行器(驱动量化/分析流程)
└── tune_strategy/ # 调优策略(如何选配置、扫参等)
详细文件名见仓库实际结构,这里只归纳每个子模块的大致职责:
- analysis_service/:封装各种分析方法(如层敏感度分析)、层选择策略及其流水线接口。
- base/:定义 Processor/Protocol 等核心接口与基类。
- graph/:定义图适配器类型,用于统一不同框架/表示下的“计算图”。
- observer/:提供 MinMax、Histogram、RecallWindow 等多种统计方式。
- quant_service/:统一的量化服务框架(modelslim_v0/v1、多模态 SD/VLM),含保存到 AscendV1/MindIE 等格式的能力。
- quantizer/:MinMax/Histogram/SSZ/GPTQ 等量化器实现,用于把统计信息转换为量化参数。
- runner/:多种执行模式(层级、流水线并行、数据并行)驱动量化/分析流程。
- tune_strategy/:调优策略及其插件机制,例如 StandingHigh 策略。
infra/ 目录结构¶
infra/ # 对接外部服务/资源的基础设施层
├── __init__.py
├── aisbench_server.py # 与 AISBench 推理服务的集成封装
├── file_dataset_loader.py # 从文件加载数据集(统一接口)
├── service_oriented_evaluate_service.py # 面向服务的评估服务封装
├── vllm_ascend_server.py # vLLM + Ascend 推理服务适配
├── vlm_dataset_loader.py # VLM 用数据集加载器
├── yaml_plan_manager.py # 基于 YAML 的调优 plan 管理
├── yaml_practice_history_manager.py # 实践历史(YAML 存储)管理
└── yaml_practice_manager.py # 实践配置(YAML)管理
ir/目录结构¶
ir/ # 量化 IR:类型、算子、配置等
├── __init__.py
├── api/ # 对外统一 IR API(quantize/dequantize 等)
├── const.py # IR 层常量(如各种 QScheme)
├── qal/ # Quantization Abstract Layer 实现(QDType/QParam/QStorage 等)
├── utils.py # IR 辅助工具
├── w8a8_fp_dynamic.py # W8A8+FP8 动态量化 IR
├── w8a8_mx_dynamic.py # W8A8 + MXFP8 动态量化 IR
└── ... # 其它 W4A8/W8A8 等模式的 IR 定义
mindspore/ 目录结构¶
mindspore/ # MindSpore 框架适配层
├── __init__.py
├── knowledge_distill/ # MindSpore 侧知识蒸馏
├── llm_ptq/ # MindSpore 大模型 PTQ 支持
├── low_rank_decompose/ # MindSpore 低秩分解
├── prune/ # MindSpore 剪枝
└── quant/ # MindSpore 量化整体流程(PTQ)
- knowledge_distill/:MindSpore 版知识蒸馏流程。
- llm_ptq/:MindSpore 大模型后训练量化,含 Python 实现与多版本
.so内核。 - low_rank_decompose/:MindSpore 下的低秩分解实现。
- prune/:Transformer 剪枝的 MindSpore 实现。
- quant/ptq_quant/:创建配置、插入量化节点、回滚、保存模型的一整套 PTQ 流程。
model/ 目录结构¶
model/ # 各模型系列适配器(对接具体大模型)
├── __init__.py
├── base.py # 模型适配基类
├── common/ # 通用模型逻辑
├── deepseek_v3/ # DeepSeek V3 系列适配
├── deepseek_v3_2/ # DeepSeek V3.2 系列适配
├── default/ # 默认模型适配(兜底实现)
├── hunyuan_video/ # HunYuan 视频模型适配
├── kimi_k2/ # Kimi K2 模型适配
├── qwen1_5/ # Qwen1.5 适配
├── qwen2/ # Qwen2 适配
├── qwen2_5/ # Qwen2.5 适配
├── qwen3/ # Qwen3 适配
├── qwen3_moe/ # Qwen3-MoE 适配
├── qwen3_next/ # Qwen3-Next 适配
├── qwen3_vl/ # Qwen3-VL 适配
├── qwen3_vl_moe/ # Qwen3-VL-MoE 适配
├── qwq/ # QwQ 模型适配
├── wan2_1/ # Wan2.1 模型适配
├── wan2_2/ # Wan2.2 模型适配
├── interface.py # 适配器统一接口
└── interface_hub.py # 适配器注册/路由中心
- common/:封装通用的前向调用方式(层级/模型级)、Transformers 支持、VLM 基础类等。
- 其余子目录:针对特定模型系列实现相应的
model_adapter,用于桥接“上层量化/服务逻辑”和“底层真实模型实现”。
onnx/ 目录结构¶
onnx/ # ONNX 模型的量化/优化支持
├── __init__.py
├── post_training_quant/ # ONNX 后训练量化(PTQ)主实现
│ ├── config.py
│ ├── dag/ # ONNX 图解析与 DAG 构建
│ ├── data_free/ # 无数据量化(Data-free)流程
│ ├── label_free/ # 无标注量化(Label-free)流程
│ ├── quantize.py # PTQ 主入口
│ └── util.py
├── squant_ptq/ # SQuant PTQ 相关实现(含 aok 优化器等)
│ ├── aok/ # 算子级优化器及变换
│ ├── onnx_ptq_kia/ # KIA 风格的 ONNX PTQ 内核
│ ├── onnx_quant_tools.py
│ ├── quant_config.py
│ └── quant_deploy.py
└── ... # 若干 .so 内核库和工具
processor/ 目录结构¶
processor/ # “处理器层”,在模型前后对参数/激活做处理
├── __init__.py
├── anti_outlier/ # 各类 SmoothQuant / FlexSmooth / IterSmooth 异常值抑制
├── base.py # Processor 基类
├── common/ # 通用模块级处理函数
├── container/ # 处理器组合/分组
├── kv_smooth/ # KV Cache 相关平滑与监听
├── memory/ # 中间结果加载
├── quant/ # 与量化强相关的 Processor(AutoRound/FA3 等)
├── quarot/ # QuaRot 相关处理器
└── sparse/ # 稀疏化处理(ADMM/FloatSparse 等)
- anti_outlier/:异常值抑制系列算法的实现及公共组件。
- quant/:AutoRound、FA3 等直接参与量化精调的 Processor。
- quarot/:基于 Hadamard 变换的 QuaRot 算法处理器及工具。
pytorch/ 目录结构¶
pytorch/ # PyTorch 框架适配与扩展
├── __init__.py
├── knowledge_distill/ # PyTorch 知识蒸馏
├── llm_ptq/ # 大模型 PTQ(PyTorch 版)
├── llm_sparsequant/ # 大模型稀疏量化
├── low_rank_decompose/ # PyTorch 低秩分解
├── lowbit/ # 低比特算子内核
├── mindspeed_adapter/ # 与 MindSpeed 等系统适配
├── multi_modal/ # 多模态相关加速/缓存
├── prune/ # PyTorch 剪枝
├── quant/ # PTQ/QAT 工具(含大量 C++/CUDA 内核)
├── ra_compression/ # Rope/Attention 相关压缩
├── sparse/ # 稀疏训练/推理支持
└── weight_compression/ # 权重量化/压缩与安全相关
该目录下有大量
.so扩展库和工具脚本,是 PyTorch 相关能力的主要实现区域。
quant/ 目录结构¶
quant/ # 量化“会话”层封装
├── __init__.py
└── session/
├── __init__.py
└── session.py # Session 抽象:把配置、模型、processor、quantizer 串起来
utils/ 目录结构¶
utils/ # 各种通用工具函数和基础设施
├── __init__.py
├── cache/ # 内存/PyTorch 模型缓存
├── config_map.py # 配置映射工具
├── config.py # 通用配置加载/管理
├── dag_utils/ # DAG/模型结构相关工具与 Hook
├── dependency_check.py # 依赖检查工具
├── distributed/ # 分布式相关辅助(初始化、ops、helper 等)
├── exception_decorator.py # 统一异常装饰器
├── exception.py # 自定义异常类型
├── function_hijacker.py # 函数劫持工具(注入 Hook)
├── graph_utils.py # 图相关通用工具
├── hook_utils.py # Hook 管理工具
├── logging.py # 日志系统封装
├── memory.py # 内存使用工具
├── patch/ # 对外部库(pydantic/torch)的补丁
├── plugin/ # 插件系统(插件加载、类型化配置与工厂)
├── security/ # 安全相关检查(模型、路径、请求、shell 命令等)
├── seed.py # 统一随机种子工具
├── validation/ # 类型/值/转换校验工具
└── yaml_database.py # 基于 YAML 的轻量“数据库”封装
如果后续项目结构有调整,可以以此文件为基础进行增删修改,以保持文档与代码目录的一致性。