模型稀疏化#
llmc目前正在逐渐支持稀疏化方法,目前已经实现了Magnitude,Wanda和ShortGPT将在未来支持更多的算法。
以下是Wanda的设置样例:
base:
seed: &seed 42
model:
type: Qwen2 # 设置模型名,可支持Llama,Qwen2,Llava,Gemma2等模型
path: # 设置模型权重路径
torch_dtype: auto
calib:
name: pileval
download: False
path: # 设置校准数据集路径
n_samples: 512
bs: 1
seq_len: 512
preproc: pileval_smooth
seed: *seed
eval:
eval_pos: [pretrain, transformed] # 非结构化稀疏在稀疏过程中直接将对应位置权重置0,transformed之后直接就可以得到稀疏模型,无需再进行额外的部署阶段
name: wikitext2
download: False
path: # 设置测试数据集路径
bs: 1
seq_len: 2048
sparse:
method: Wanda
weight:
sparsity: 0.5 # 设置模型的稀疏率
sparsity_out: False # 设置是否使用每一层稀疏后的输出作为下一层的输入
save:
save_trans: True # 设置为True,可以保存下调整之后的权重
save_path: ./save
以下展示了使用Wanda稀疏的一些结果:
| Model | PPL | |||||||
| dense | 0.25 | 0.5 | 0.75 | |||||
| c4 | wikitext2 | c4 | wikitext2 | c4 | wikitext2 | c4 | wikitext2 | |
| LLaMa2-7B | 7.26 | 5.47 | 7.46 | 5.61 | 9.25 | 6.85 | 260.42 | 259.91 |
| LLaMa2-70B | 5.71 | 3.32 | 5.76 | 3.4 | 6.49 | 4.17 | 32.5 | 21.66 |
| LLaMa3-8B | 9.44 | 6.13 | 10.01 | 6.47 | 15.07 | 9.68 | 336.62 | 290.38 |
| LLaMa3-70B | 7.16 | 2.85 | 7.44 | 3.22 | 9.96 | 5.81 | 93.99 | 74.78 |
在下面展示了与Wanda原仓库对比的结果,在这一实验设置下,所使用的超参数、校准数据集以及数据预处理、评测方法均与Wanda仓库对齐。
| Model | Wanda | LLMC |
| LLaMa2-7b | 6.91 | 6.91 |
| LLaMa2-70b | 4.22 | 4.19 |
| LLaMa3-8b | 9.56 | 9.58 |
| LLaMa3-70b | OOM | 5.75 |