SuperAPI AI 工具集

model-pruning

智能体与模型

查看项目

更新于 10-30 06:48

技能介绍

用途:该技能面向大语言模型压缩与推理加速,提供基于 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 稀疏张量核心)。
  • 具体精度损失和加速比会因模型、任务、稀疏度和硬件而异,资料中给出的数值为示例参考。