[ACL 2024] 自我推测解码
与论文相关的代码:
[ACL 2024] 起草与验证:通过自我推测解码实现无损大型语言模型加速
自我推测解码是一种新型推理方案,用于加速大型语言模型(LLMs),无需额外的神经网络训练和额外的内存占用。它不仅保持一致的输出质量,还确保模型兼容性,使其成为LLM推理加速的即插即用和成本效益高的解决方案。
自我推测解码包括两个阶段:
起草阶段: 通过选择性地跳过某些中间层来生成草稿标记。
验证阶段: 使用原始LLM在一次前向传播中验证草稿标记。
引用我们的论文
如果您在研究中发现这段代码和论文有用,请考虑引用:
@article{zhang2023draft,
title={Draft & Verify: Lossless Large Language Model Acceleration via Self-Speculative Decoding},
author={Jun Zhang, Jue Wang, Huan Li, Lidan Shou, Ke Chen, Gang Chen, Sharad Mehrotra},
year={2023},
eprint={2309.08168},
archivePrefix={arXiv},
primaryClass={cs.CL}
}
要求
- PyTorch
- Transformer
- NumPy
- 更多详见ssd.yml
文件
- searching.py:通过贝叶斯优化选择跳过的层
- decoding.py:自我推测解码的核心过程
- modeling_llama.py:带有自我推测解码的模型结构
- search.ipynb:搜索跳过层的主脚本
- evaluate_sum.ipynb:评估自我推测解码在文本生成任务上的主脚本
- evaluate_code.ipynb:评估自我推测解码在代码生成任务上的主脚本
- skip_layers.json:对应不同基础模型的草稿模型跳过的层
- ssd.yml:相关环境
使用方法
- 根据ssd.yml配置相关环境;
- 执行search.ipynb获取跳过的层以生成草稿模型;
- 执行evaluate_sum.ipynb评估自我推测解码在摘要生成上的表现;
- 执行evaluate_code.ipynb评估自我推测解码在代码生成上的表现。