EET: 高效便捷的Transformer推理解决方案

Ray

EET简介

EET (Easy and Efficient Transformer) 是由网易伏羲人工智能实验室开发的一款开源推理加速工具。作为一个专注于Transformer类模型的PyTorch插件,EET的目标是让大规模模型的推理变得更加简单和高效。

EET Logo

EET的主要特点包括:

  • 支持在单GPU上运行超大规模模型
  • 专注于多模态和自然语言处理任务的推理加速(如CLIP、GPT-3、BERT、Seq2seq等)
  • 通过CUDA内核优化和量化/稀疏算法实现高性能
  • 与Transformers和Fairseq库无缝集成,使用简单方便
  • 支持Baichuan、LLaMA等大语言模型
  • 支持INT8量化

支持的模型

EET目前支持多种主流的Transformer类模型,包括但不限于:

  • GPT-3
  • BERT
  • ALBert
  • Roberta
  • T5
  • ViT
  • CLIP (GPT+ViT)
  • Distillbert
  • Baichuan
  • LLaMA

对于这些模型,EET提供了不同程度的加速和优化。例如,对于GPT-3模型,EET可以实现2-8倍的加速;对于BERT模型,可以实现1-5倍的加速。这些优化使得大规模模型的推理变得更加高效和实用。

快速开始

环境要求

为了使用EET,你需要满足以下环境要求:

  • CUDA: 11.4或更高版本
  • Python: 3.7或更高版本
  • GCC: 7.4.0或更高版本
  • PyTorch: 1.12.0或更高版本
  • NumPy: 1.19.1或更高版本
  • Fairseq: 0.10.0
  • Transformers: 4.31.0或更高版本

安装

EET提供了两种安装方式:从源代码安装和使用Docker安装。推荐使用Docker镜像进行安装,这可以避免环境配置的麻烦。

从源代码安装

如果你选择从源代码安装,首先需要确保满足上述环境要求,然后按照以下步骤进行:

git clone https://github.com/NetEase-FuXi/EET.git
pip install .

使用Docker安装

使用Docker安装EET可以避免环境配置的问题。你可以按照以下步骤使用Docker安装EET:

git clone https://github.com/NetEase-FuXi/EET.git
docker build -t eet_docker:0.1 .
nvidia-docker run -it --net=host -v /your/project/directory/:/root/workspace eet_docker:0.1 bash

使用方法

EET提供了三种类型的API,分别是算子API、模型API和应用API。这三种API满足了不同层次的使用需求,从底层的自定义模型构建到高层的直接应用。

算子API

算子API是C++/CUDA和Python的中间表示。EET提供了几乎所有Transformer模型所需的算子。你可以组合不同的算子来构建其他模型结构。主要的算子包括:

  • EETSelfAttention: 自注意力机制
  • EETSelfMaskedAttention: 因果注意力机制
  • EETCrossAttention: 交叉注意力机制
  • EETFeedforward: 前馈网络
  • EETBertEmbedding: 对应Fairseq和Transformers的嵌入层
  • EETLayerNorm: 与nn.LayerNorm相同

模型API

作为插件,EET提供了友好的模型API,可以轻松集成到Fairseq和Transformers中。你只需要找到相应的类(通常以'EET'为前缀),并使用from_torch和from_pretrained函数初始化对象即可。

以下是EET与Transformers类的对比表:

EETTransformers备注
EETBertModelBertModel
EETBertEmbeddingBertEmbeddings
EETGPT2ModelGPT2Model
EETGPT2DecoderGPT2ModelTransformers没有GPT2Decoder
EETGPT2DecoderLayerBlock
EETGPT2AttentionAttention
EETGPT2FeedforwardMLP
EETGPT2Embeddingnn.Embedding
EETLayerNormnn.LayerNorm

使用模型API的示例代码如下:

from eet import EETBertModel
from transformers import BertTokenizer

tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
model = EETBertModel.from_pretrained('bert-base-uncased')

inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
outputs = model(**inputs)

应用API

EET提供了现成的pipeline方法,可以简化不同任务的应用构建过程。以下是一个使用pipeline进行掩码填充任务的例子:

import torch
from eet import pipeline

max_batch_size = 1
model_path = 'roberta-base'
data_type = torch.float16
input = ["My <mask> is Sarah and I live in London"]

nlp = pipeline("fill-mask", model=model_path, data_type=data_type, max_batch_size=max_batch_size)
out = nlp(input)

EET目前支持以下任务的pipeline:

  • 文本分类
  • 标记分类
  • 问答
  • 掩码填充
  • 文本生成
  • 图像分类
  • 零样本图像分类

性能表现

EET在各种模型上都展现出了优秀的性能表现。以下是一些性能数据的展示:

GPT-3在A100上的性能

GPT-3 on A100

从图中可以看出,EET在不同的序列长度和批次大小下,都能显著提升GPT-3的推理速度。

BERT在2080Ti上的性能

BERT on 2080Ti

对于BERT模型,EET在不同的序列长度下都实现了显著的加速,尤其是在较长序列长度时,加速效果更加明显。

LLaMA 13B在3090上的性能

LLaMA 13B on 3090

对于LLaMA 13B这样的大规模语言模型,EET同样展现出了优秀的性能提升。

总结

EET作为一款专注于Transformer类模型推理加速的工具,为大规模模型的应用提供了强有力的支持。它不仅支持多种主流模型,还提供了从底层到高层的多种API,满足不同场景下的使用需求。通过CUDA内核优化和量化/稀疏算法,EET实现了显著的性能提升,使得在有限的硬件资源下运行大规模模型成为可能。

对于研究人员和开发者来说,EET无疑是一个值得尝试的工具。它可以帮助你更高效地进行模型推理,节省时间和计算资源。同时,EET的开源性质也使得它具有良好的可扩展性和社区支持。

如果你在使用过程中遇到任何问题,可以通过GitHub issues或邮件与EET的开发团队联系。他们非常欢迎用户的反馈和建议,以不断改进EET的功能和性能。

总的来说,EET为Transformer类模型的推理加速提供了一个强大而灵活的解决方案。无论你是从事自然语言处理、计算机视觉还是多模态任务,EET都可能成为你工具箱中的一个有力武器。

🔗 更多信息和详细文档,请访问EET的GitHub仓库

avatar
0
0
0
最新项目
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号