MindPipe
MAC-AutoML/MindPipe加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
图1:MindPipe 项目封面
当你想把一个 70B 参数的大模型压缩到可以在单卡 RTX 3090 上运行时,你会发现一个尴尬的现实:AWQ 量化需要一个工具,GPTQ 量化需要另一个脚本,剪枝又是第三个仓库,而如果想把量化和剪枝组合起来用,往往只能靠手写串联脚本。更糟糕的是,每种方法都有自己独特的配置文件格式、参数命名规则和输出目录结构——这让压缩工作的复现变成了一场噩梦。
MindPipe 正是在这一背景下诞生的。它的核心理念是:用一个统一的 CLI,把目前学术界和工业界主流的模型压缩技术全部收拢到一个可复现的流水线中。截至目前,它支持 11 种量化算法、7 种剪枝算法,以及专门的压缩恢复微调方法,覆盖了从后训练量化(PTQ)到量化感知训练(QAT)的完整技术谱系。
MindPipe 由 MAC-AutoML 团队开发和维护,该团队专注于自动化机器学习和模型压缩方向。项目的设计思路深受该团队在大规模预训练模型压缩方向的实践经验影响——特别是发现现有工具普遍存在单一算法、单一日标的局限后,决定从零构建一个统一的压缩框架。
项目的另一个重要背景是昇腾 NPU 的支持需求。在国内大模型落地场景中,华为昇腾 NPU 是重要的国产算力选项,但多数国际主流压缩工具(如 llm-awq、GPTQ-for-LLaM)仅支持 CUDA 环境。MindPipe 在架构设计初期就将 GPU/NPU 统一抽象纳入考量,通过 algorithm/common/device.py 实现了设备层的统一抽象,使得同一套压缩代码可以在 NVIDIA GPU 和华为昇腾 NPU 上切换运行。
MindPipe 的量化模块覆盖了目前最主流的权重量化和激活量化技术:
每种量化方法都封装为统一的注册表接口(algorithm/quantization/registry.py),通过 CLI 参数 --quantization <method> 即可切换不同算法。
剪枝模块同样采用注册表模式,提供从非结构化剪枝到结构化剪枝再到层剪枝的完整覆盖:
MindPipe 的另一大亮点是内置完整评测体系,不依赖外部评测工具即可验证压缩效果:
这意味着用户可以在同一条命令中完成量化、PPL 验证、Zero-shot 评测的完整流程,所有结果以 JSON 格式持久化到 output_dir,方便后续分析和对比。
MindPipe 的架构遵循注册表模式(Registry Pattern):
workflow/builder.py <- CLI 参数解析 + 配置构建 workflow/executor.py <- 流水线执行引擎 workflow/schema.py <- 数据结构定义 algorithm/ <- 核心算法实现 quantization/ <- 11 种量化算法 pruning/ <- 7 种剪枝算法 finetuning/ <- Compression LoRA 微调 common/ <- 共享基础设施(设备抽象、数据加载、IO、日志) evaluation/ <- PPL / Zero-shot / VLM 评测 scripts/ <- 各算法的 shell 包装脚本
workflow/builder.py 是整个系统的入口解析器,使用 argparse 构建统一的命令行参数集,支持量化+剪枝组合执行(通过 --execution_order pruning_then_quantization 指定顺序)。每种算法通过 registry.py 注册,算法实现与配置解析完全解耦,新增算法只需实现标准接口并在 registry 中注册即可。
设备抽象层(algorithm/common/device.py)是关键设计:它封装了 CUDA/NPU 的差异,提供了统一的模型加载、显存分配和算子调度接口。针对昇腾 NPU,MindPipe 还实现了 npu_shims/ 目录下的兼容垫片(shim),处理 NPU 与 CUDA 在张量布局上的差异。
MindPipe 提供了极简的上手流程。克隆仓库后安装依赖即可使用:
git clone https://github.com/MAC-AutoML/MindPipe
cd MindPipe
pip install -r requirements.txt
单次量化命令示例(AWQ W4A16):
CUDA_VISIBLE_DEVICES=0 python main.py \
--quantization awq \
--model_path /path/to/model \
--device_map auto \
--calibration_dataset pileval \
--calibration_samples 128 \
--weight_bits 4 \
--group_size 128 \
--eval_ppl true \
--output_dir ./results/awq
组合压缩(先剪枝再量化):
CUDA_VISIBLE_DEVICES=0,1 python main.py \
--pruning wanda_sp --sparsity_ratio 0.2 \
--quantization gptq --weight_bits 4 \
--execution_order pruning_then_quantization \
--model_path /path/to/model \
--output_dir ./results/workflow
压缩后使用 Compression LoRA 恢复精度:
MODEL_PATH=/path/to/model GPU_ID=0,1 bash scripts/finetuning/flatquant_lora_auto_gpu.sh
硬件需求:16GB+ VRAM(RTX 3090/A100 可运行 7B 模型,70B 模型需要多卡或更大显存)。
大模型压缩(量化+剪枝)是 2024-2025 年 LLM 落地最核心的技术方向之一。随着 Qwen2.5、DeepSeek 等开源模型的普及,如何在消费级硬件上高效部署这些模型成为制约因素。MindPipe 的出现,通过统一 18+ 种压缩方法、GPU/NPU 双后端和端到端评测,提供了一个一站式压缩实验室。
从技术趋势看,量化与剪枝的组合使用正成为主流范式,MindPipe 在这一方向的 pipeline 支持在国内开源项目中处于领先位置。同时,其对国产算力(昇腾 NPU)的原生支持,也为国内大模型压缩工具链的完善提供了有价值的参考。