Project Icon

EAGLE

大型语言模型快速解码的新突破

EAGLE项目为大型语言模型提供了一种高效的快速解码方法。通过创新的特征外推技术,EAGLE显著提升了生成效率。其改进版EAGLE-2引入了动态草稿树结构,进一步优化了性能。与传统解码方法相比,EAGLE和EAGLE-2在13B模型上分别实现了3倍和4倍的速度提升。该开源项目不仅提供了多种预训练模型权重,还支持各类LLM架构,并配备了详尽的使用文档和评估工具。

EAGLE

 EAGLE

| 论文 (EAGLE) | 论文 (EAGLE-2) | 博客 | 演示 |

版本 许可证 维护 欢迎贡献

benchmark

EAGLE(更高效语言模型外推算法)是一种新的基准,用于快速解码大型语言模型(LLMs),并保证性能不会下降。这种方法通过外推LLMs的次顶层上下文特征向量,显著提高了生成效率。

  • EAGLE 特点:
    • 第三方评估认证为目前最快的推测方法。
    • gpt-fast上实现2倍速度提升。
    • 比普通解码快3倍(13B)。
    • Lookahead快2倍(13B)。
    • Medusa快1.6倍(13B)。
    • 可证明地保持与普通解码在生成文本分布上的一致性。
    • 可在8块RTX 3090 GPU上训练(1-2天内)和测试。即使GPU资源有限也能负担得起。
    • 可与其他并行技术结合,如vLLM、DeepSpeed、Mamba、FlashAttention、量化和硬件优化。

EAGLE-2使用草稿模型的置信度分数来近似接受率,动态调整草稿树结构,进一步提升性能。

  • EAGLE-2 特点:
    • 比普通解码快4倍(13B)。
    • 比EAGLE-1快1.4倍(13B)。

演示gif

使用EAGLE-2,在2块RTX 3060 GPU上的推理速度可以比在A100 GPU上的普通自回归解码更快。

更新

2024.8.8:我们现在支持Qwen-2。

2024.6.27:EAGLE-2发布。

2024.2.25:EAGLE被第三方评估认证为最快的推测方法。

2024.1.17:我们现在支持Mixtral-8x7B-Instruct

2023.12.8:EAGLE v1.0发布。

待办事项

  • 支持非贪婪推理(可证明地保持文本分布)。
  • 支持更多LLMs,如Mixtral 8x7B。
  • 支持LLaMA-3。
  • 支持Qwen-2。

默认主分支是EAGLE-2的实现。如要使用EAGLE-1,请切换到v1分支。

目录

设置与安装

git clone https://github.com/SafeAILab/EAGLE.git
cd EAGLE
pip install -r requirements.txt

EAGLE权重

注意: 当Qwen2为目标模型时,请使用bf16精度而非fp16以避免数值溢出。Qwen2的草稿模型训练数据集为ShareGPT,已删除非英语数据。因此,如果要在非英语数据(如中文)上使用,请使用相应数据进行训练。

与EAGLE相比,EAGLE-2无需额外训练,使用相同的权重。

基础模型EAGLE在Hugging Face上EAGLE参数数量基础模型EAGLE在Hugging Face上EAGLE参数数量
Vicuna-7B-v1.3yuhuili/EAGLE-Vicuna-7B-v1.30.24BLLaMA2-Chat 7Byuhuili/EAGLE-llama2-chat-7B0.24B
Vicuna-13B-v1.3yuhuili/EAGLE-Vicuna-13B-v1.30.37BLLaMA2-Chat 13Byuhuili/EAGLE-llama2-chat-13B0.37B
Vicuna-33B-v1.3yuhuili/EAGLE-Vicuna-33B-v1.30.56BLLaMA2-Chat 70Byuhuili/EAGLE-llama2-chat-70B0.99B
Mixtral-8x7B-Instruct-v0.1yuhuili/EAGLE-mixtral-instruct-8x7B0.28B
LLaMA3-Instruct 8Byuhuili/EAGLE-LLaMA3-Instruct-8B0.25BLLaMA3-Instruct 70Byuhuili/EAGLE-LLaMA3-Instruct-70B0.99B
Qwen2-7B-Instructyuhuili/EAGLE-Qwen2-7B-Instruct0.26BQwen2-72B-Instructyuhuili/EAGLE-Qwen2-72B-Instruct1.05B

推理

我们提供的推理代码自动分配模型权重(在多个GPU上加载模型),使您可以运行超出单个GPU内存的模型。

使用界面

我们提供了一个建议的网页界面,您可以通过运行以下命令来使用。模型完全加载后,终端会输出一个URL,您可以在浏览器中输入该URL进行访问。

python -m eagle.application.webui --ea-model-path [EAGLE权重路径]\ 
		--base-model-path [原始模型路径]\
		--model-type [vicuna\llama2\llama3]\
        --total-token [整数]

total-token是草稿token的数量。对于较小的模型和高级GPU,这个值可以设置得更大。根据具体设备和模型进行调整可以达到更好的效果。如果设置为-1,EAGLE-2将自动配置此参数。

使用代码

您可以使用我们提供的"eagenerate"来加速生成,就像使用Hugging Face的'generate'一样。以下是一个示例。

from eagle.model.ea_model import EaModel
from fastchat.model import get_conversation_template
model = EaModel.from_pretrained(
    base_model_path=base_model_path,
    ea_model_path=EAGLE_model_path,
    torch_dtype=torch.float16,
    low_cpu_mem_usage=True,
    device_map="auto",
    total_token=-1
)
model.eval()
your_message="Hello"
conv = get_conversation_template("vicuna")
conv.append_message(conv.roles[0], your_message)
conv.append_message(conv.roles[1], None)
prompt = conv.get_prompt()
input_ids=model.tokenizer([prompt]).input_ids
input_ids = torch.as_tensor(input_ids).cuda()
output_ids=model.eagenerate(input_ids,temperature=0.5,max_new_tokens=512)
output=model.tokenizer.decode(output_ids[0])

注意:Vicuna、LLaMA2-Chat和LLaMA3-Instruct都是聊天模型。您需要使用正确的聊天模板,否则会导致模型输出异常并影响EAGLE的性能。

训练

生成训练数据

您可以运行以下命令来生成训练数据。

python -m eagle.ge_data.allocation --outdir [数据路径]

训练自回归头

accelerate launch -m --mixed_precision=bf16 eagle.train.main --tmpdir [数据路径]\
--cpdir [检查点路径] --configpath [配置文件路径]

eagle/train提供了配置文件的示例。

您也可以使用DeepSpeed进行训练。

cd eagle/train
deepspeed main_deepspeed.py --deepspeed_config ds_config.json

在自定义模型上进行推理

如果原始LLM结构与LLaMA和Mixtral不同,您可以按以下方式使用EAGLE:

从Transformers库中复制modeling_basemodelname.py,然后进行修改以利用预分配的kv_cache来提高基础模型的速度。您可以参考model/modeling_llama_kv.py获取指导,需要修改的地方用# [MODIFIED]标注。这些修改非常少。

评估

您可以使用以下命令在MT-bench上测试EAGLE的速度。

python -m eagle.evaluation.gen_ea_answer_vicuna(或gen_ea_answer_vicuna_llama2chat)\
		 --ea-model-path [EAGLE权重路径]\ 
		 --base-model-path [原始模型路径]\

如果您需要具体的加速比,还需要运行以下命令来获取普通自回归的速度。

python -m eagle.evaluation.gen_baseline_answer_vicuna\
		(或gen_ea_answer_vicuna_llama2chat)\
		 --ea-model-path [EAGLE权重路径]\ 
		 --base-model-path [原始模型路径]\

上述两个命令each会生成一个.jsonl文件,记录生成结果和wall time。然后,您可以使用evaluation/speed.py来计算速度比。

🌟 我们的贡献者

衷心感谢所有贡献者。

贡献者

参考文献

有关技术细节和完整实验结果,请查看EAGLE论文EAGLE-2论文

@inproceedings{li2024eagle, 
	author = {Yuhui Li and Fangyun Wei and Chao Zhang and Hongyang Zhang}, 
	title = {EAGLE: Speculative Sampling Requires Rethinking Feature Uncertainty}, 
	booktitle = {International Conference on Machine Learning},
	year = {2024}
}
@misc{li2024eagle2fasterinferencelanguage,
      title={EAGLE-2: Faster Inference of Language Models with Dynamic Draft Trees}, 
      author={Yuhui Li and Fangyun Wei and Chao Zhang and Hongyang Zhang},
      year={2024},
      eprint={2406.16858},
      archivePrefix={arXiv},
      primaryClass={cs.CL},
      url={https://arxiv.org/abs/2406.16858}, 
}

致谢

本项目受到了LLM社区中许多优秀项目的影响,如MedusaFastChat等。标志由GPT-4设计。我们还感谢与蔡天乐、张浩、孙子腾等人进行的许多宝贵讨论。

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号