language:
- en
library_name: transformers
license: llama2
pipeline_tag: text-generation
ProSparse-LLaMA-2-7B
模型简介
激活稀疏化(即激活输出中存在大量弱贡献元素)是利用大语言模型(LLMs)推理加速的一种前景广阔的方法(Liu et al., 2023; Song et al., 2023)。具体而言,基于激活稀疏化的加速方法通常通过更明智的资源分配和计算策略来避免资源浪费在这些弱贡献参数上,从而实现更高的推理速度。
采用ReLU作为激活函数是实现激活稀疏化的直接方法。然而,近期主流LLMs大多采用不具备固有稀疏性的激活函数(如GELU和Swish)。部分研究(Zhang et al., 2022; Mirzadeh et al., 2023; Zhang et al., 2024)尝试引入ReLU或其变体作为替代激活函数,以帮助非ReLU LLMs实现激活稀疏化和推理加速,但鲜有方法能同时实现高稀疏性和可比的任务性能。
本工作提出了一种简单有效的稀疏化方法"ProSparse",能在保持可比性能的同时显著提升LLMs的激活稀疏性。将ProSparse应用于Swish激活的LLaMA2-7B、LLaMA2-13B和MiniCPM-1B后,我们获得的ReLU激活模型分别实现了89.32%、88.80%和87.89%的高稀疏率,且性能与原始版本相当。这些模型成为开源LLaMA版本及同尺寸模型中最稀疏的激活模型,显著超越ReluLLaMA-7B(66.98%)和ReluLLaMA-13B(71.56%)。进一步的推理加速实验证明,更高稀疏性在PowerInfer和我们的两个稀疏GPU算子上均能带来实际加速效果。
训练数据集
7B模型在约346亿token上进行了16,500步训练,数据混合包含以下两类:
-
语言建模数据集:
- StarCoder
- 维基百科
- Pile
- 其他收集数据集
-
指令微调数据集:
- UltraChat
- P3(多选题QA)
- PAQ
- Unnatural Instructions
- Flan
- Super-Natural Instructions
- 其他收集数据集
直观而言,使用更多token或覆盖更广、质量更高的数据进行训练将获得更好的任务性能。
ProSparse训练方法
ProSparse训练过程包含三步(详见论文第3.2节):
- 激活函数替换:将FFNs的激活函数替换为ReLU并进行持续训练;
- 渐进稀疏正则化:联合优化常规的下一个token预测损失和\(L_1\)正则化损失。正则化应用于FFNs的稀疏中间输出,其正则化因子分阶段渐进增加。具体而言,预热阶段设置小常数因子\(\lambda\),后续每个增量阶段沿平滑正弦曲线增长。每个阶段配合特定训练步数,使模型能逐步适应增强的正则化,缓解性能下降;
- 激活阈值偏移:最终用带正阈值的FATReLU([Kurtz et al., 2020](https://proceedings.mlr.press/v119/kurtz20a/kurtz20a.pdf)替换ReLU,可进一步剪枝激活输出中的非零弱贡献元素,提升稀疏性。
7B模型在8块A100 GPU上训练,学习率采用峰值\(3e-5\)的余弦调度器。各阶段超参数(包括正则化因子\(\lambda_i\)、累计训练步数\(T_i\)和累计训练token数)如下:
阶段编号\(i\) |
\(\lambda_i\) |
\(T_i\) |
累计token数(B) |
0 |
0 |
5,000 |
10.49 |
1 |
\(5e-3\) |
6,000 |
12.58 |
2 |
\(5e-2\) |
10,000 |
20.97 |
3 |
\(5e-2\) |
12,000 |
25.17 |
4 |
\(2e-1\) |
16,000 |
33.55 |
5 |
\(2e-1\) |
16,500 |
34.60 |
评估结果
基准测试表明ProSparse是唯一能同时实现高稀疏性且性能与原始Swish激活LLaMA2相当的方法。所有设置模型均在相同token数和混合数据集上训练。评估基于UltraEval框架,细节如下:
- 代码生成:计算HumanEval(0-shot)和MBPP(3-shot)的平均pass@1分数
- 常识推理:报告PIQA、SIQA、HellaSwag、WinoGrande和COPA的0-shot平均准确率
- 阅读理解:计算BoolQ、LAMBADA和TyDi QA的0-shot平均准确率
- 其他流行基准:报告GSM8K(8-shot)、MMLU(5-shot)、Big Bench Hard(BBH)(3-shot)和AGI-Eval(0-shot)的平均准确率
注:PIQA等9个基准通过最大化困惑度获取预测答案,GSM8K等3个基准直接生成答案。
(此处表格内容与原文一致,仅作中文表头转换)
LM-Eval评估问题
上述结果可通过UltraEval复现。其他流行框架如LM-Eval的异常结果可能源于未默认添加cls标记<s>
。快速修复代码如下。其他差异可能源自few-shot设置、数据预处理和额外提示等因素。
推理加速效果
首先使用激活稀疏化前沿加速框架PowerInfer。由于推理速度和准确度高度依赖激活预测器性能,我们报告激活召回率、预测稀疏率及PowerInfer的token生成速度(单A100 GPU+充足CPU)。ProSparse-7B的GGUF文件和激活预测器分别发布于ProSparse-LLaMA-2-7B-GGUF(副本)和ProSparse-LLaMA-2-7B-Predictor(副本)。
此外,针对激活预测器可能导致的推理误差,我们实现了两个稀疏GPU算子加速精确推理,分别优化门控FFN的两个关键步骤:
- 步骤(2)(
S2
):ReLU与\(\mathbf{s} \odot (\mathbf{x} \mathbf{W}_1^T)\)的融合算子
- 步骤(3)(
S3
):稀疏矩阵-向量乘法算子\(\mathbf{x}_1 \mathbf{W}_2^T\)
不同稀疏度LLMs的加速效果如下表所示。ProSparse在不损失性能前提下实现高稀疏性,能获得最大加速收益。详见论文第4.3节。
(此处表格内容与原文一致,仅作中文表头转换)
许可声明
本模型受原始Llama-2模型许可及使用限制约束,不提供任何保证。
局限性及偏差
Llama 2及其微调版本作为新技术存在使用风险。当前测试仅限英语且未覆盖所有场景。与其他LLMs类似,其输出可能存在不准确、偏见或其他不当内容。部署前开发者应进行应用场景特定的安全测试和调优。责任使用指南见:https://ai.meta.com/llama/responsible-use-guide/
引用
请使用以下BibTeX引用:
@article{song2024prosparse,
title={{ProSparse}: 大语言模型中引入与增强固有激活稀疏性},
author={宋晨阳等},
year={2024},
journal={arXiv预印本 arXiv:2402.13516},
url={https://arxiv.org/pdf/2402.13516.pdf}
}
致谢
本模型卡修改自ReluLLaMA-7B。