用途:该技能面向大语言模型压缩与推理加速,提供基于 Wanda、SparseGPT、结构化剪枝和 N:M 稀疏等一次性剪枝方法,用于在无需重新训练的情况下减小模型体积、降低内存占用,并尽可能保持模型精度。
主要能力:
- 支持 Wanda 剪枝(权重绝对值 × 输入激活统计),属于一次性剪枝,无需重训。
- 支持 SparseGPT 二阶剪枝,按层重构,通常精度损失更低。
- 支持 N:M 半结构化剪枝(如 2:4、4:8),可配合 NVIDIA 稀疏张量核心获得硬件加速。
- 支持结构化与非结构化剪枝的概念区分和策略选择。
- 提供剪枝后使用 lm_eval 进行评估的示例流程。
使用方式:
- 安装:Wanda 通过 git clone https://github.com/locuslab/wanda 后安装 requirements.txt;SparseGPT 通过 git clone https://github.com/IST-DASLab/sparsegpt 后 pip install -e .;依赖包括 torch、transformers、accelerate。
- 快速开始:加载 Hugging Face 模型与分词器,准备小规模校准数据,调用 wanda_prune 函数按指定稀疏度(如 0.5)进行剪枝并保存。
- SparseGPT:初始化 SparseGPT 对象,传入校准数据与稀疏度进行剪枝。
- N:M 剪枝:使用 nm_prune 函数按组保留 top-N 权重,应用于线性层。
- 生产流程:加载模型、加载校准数据、选择剪枝方法、可选微调恢复精度、保存模型。
适用场景:
- 需要在移动端或边缘设备等受限硬件上部署模型。
- 希望减少模型体积 40-60% 且精度损失小于 1%。
- 需要利用硬件友好稀疏性获得推理加速。
- 没有重新训练预算,希望采用一次性剪枝方法。
限制与注意事项:
- 剪枝需要校准数据来收集激活统计,不能在没有校准数据的情况下随机剪枝。
- 稀疏度过高(如 90%)可能导致显著精度下降,建议采用渐进或迭代剪枝。
- 非结构化稀疏通常不带来硬件加速,结构化剪枝精度损失可能更大。
- N:M 剪枝需要特定硬件支持(如 NVIDIA 稀疏张量核心)。
- 具体精度损失和加速比会因模型、任务、稀疏度和硬件而异,资料中给出的数值为示例参考。