fastT5

GitHub
590 74 简单 1 次阅读 1周前Apache-2.0语言模型开发框架音频
AI 解读 由 AI 自动生成,仅供参考

fastT5 是一款专为优化 T5 模型而设计的开源加速工具,旨在解决大型语言模型在推理过程中速度慢、体积大的痛点。它能够将预训练的 T5 模型转换为高效的 ONNX 格式,并通过量化技术将模型体积缩小至原来的三分之一,同时将推理速度提升高达五倍。这意味着原本运行缓慢的文本生成、摘要、翻译等任务,现在能以更低的资源消耗快速完成。

该工具特别适合需要部署 NLP 应用的开发者和技术研究人员。无论是希望在边缘设备上运行模型,还是想要降低服务器成本,fastT5 都能提供显著帮助。其核心亮点在于极简的使用体验:只需一行代码,即可自动完成从模型导出、量化到基于 ONNX Runtime 运行的全过程。当然,它也支持分步自定义配置,允许高级用户灵活控制输出路径和量化策略。此外,生成的模型完美兼容 Hugging Face 的 generate() 接口,无需修改现有代码逻辑即可无缝集成,让模型加速变得简单高效。

使用场景

某初创团队正在开发一款实时多语言新闻摘要服务,需要在有限的云服务器资源上快速处理大量英文资讯并生成中文简报。

没有 fastT5 时

  • 响应延迟高:原生 T5 模型在 CPU 上进行序列生成时速度缓慢,用户等待摘要结果往往超过 3 秒,严重影响阅读体验。
  • 资源成本昂贵:为了维持可接受的并发量,团队被迫租用昂贵的 GPU 实例,导致每月云算力预算严重超支。
  • 部署包体积大:完整的预训练模型文件占用数 GB 存储空间,不仅拖慢了容器启动速度,还增加了边缘设备部署的难度。
  • 扩展性受限:随着新闻源增加,现有的推理吞吐量成为瓶颈,无法在不大幅增加硬件投入的情况下支撑业务增长。

使用 fastT5 后

  • 推理速度飞跃:通过 ONNX Runtime 加速,fastT5 将推断速度提升了 5 倍,摘要生成几乎实现“秒回”,用户体验流畅自然。
  • 显著降低成本:加速后的模型仅需普通 CPU 实例即可承载高并发,团队成功将服务器降级,月度算力成本降低 60% 以上。
  • 模型轻量便携:量化技术使模型体积缩小了 3 倍,大幅减少了存储占用,使得在低配服务器甚至本地终端部署变得轻而易举。
  • 无缝集成开发:只需一行代码即可完成模型转换与量化,且完美兼容 Hugging Face 的 generate 接口,无需重构现有业务逻辑。

fastT5 通过极致的推理加速与模型压缩,让资源受限的团队也能低成本、高效率地落地高性能 T5 应用。

运行环境要求

操作系统
  • 未说明
GPU

当前仅支持 CPU 版本的 ONNX Runtime,GPU 实现尚未完成

内存

未说明

依赖
notes该工具通过将 T5 模型转换为 ONNX 格式并进行量化(32bit 转 8bit),可将模型体积减小 3 倍,推理速度提升最高 5 倍。目前不支持 GPU 加速,建议在多核高性能 CPU 上运行以获得最佳效果。支持使用 HuggingFace 私有模型,需配置认证 Token。
python未说明
onnxruntime
transformers
onnx
fastT5 hero image

快速开始

fastt5 图标

将 T5 模型大小缩减至原来的三分之一,并将推理速度提升至最多五倍。

GitHub 工作流 PYPI 发布 下载量


T5 模型可用于多种自然语言处理任务,如摘要生成、问答、问题生成、翻译、文本生成等。由于序列式文本生成的特性,其推理过程通常较为缓慢,而较大的 T5 模型则会更加耗时。fastT5 通过在 ONNX Runtime 上运行 T5 模型,显著提升了推理速度;同时,通过对模型进行量化,进一步减小了模型体积。

fastT5 库允许用户将预训练的 T5 模型转换为 ONNX 格式,对其进行量化,并以单行代码的形式输出可在 ONNX Runtime 上运行的模型。此外,用户还可以自定义整个流程。


安装

您可以通过 PyPI 安装 fastT5:

 pip install fastt5

如果您希望从源码构建:

git clone https://github.com/Ki6an/fastT5
cd fastT5
pip3 install -e .

使用方法

export_and_get_onnx_model() 方法会将给定的预训练 T5 模型导出为 ONNX 格式,对其进行量化,并使用默认设置在 ONNX Runtime 上运行。该方法返回的模型支持 Hugging Face 的 generate() 方法。

如果您不希望对模型进行量化,可以在方法中设置 quantized=False

from fastT5 import export_and_get_onnx_model
from transformers import AutoTokenizer

model_name = 't5-small'
model = export_and_get_onnx_model(model_name)

tokenizer = AutoTokenizer.from_pretrained(model_name)
t_input = "translate English to French: The universe is a dark forest."
token = tokenizer(t_input, return_tensors='pt')

tokens = model.generate(input_ids=token['input_ids'],
               attention_mask=token['attention_mask'],
               num_beams=2)

output = tokenizer.decode(tokens.squeeze(), skip_special_tokens=True)
print(output)

若要运行已导出的模型,请使用 get_onnx_model()

您可以按照以下代码示例自定义整个流程:

from fastT5 import (OnnxT5, get_onnx_runtime_sessions,
                    generate_onnx_representation, quantize)
from transformers import AutoTokenizer

model_or_model_path = 't5-small'

# 步骤 1:将 Hugging Face 的 T5 模型转换为 ONNX 格式
onnx_model_paths = generate_onnx_representation(model_or_model_path)

# 步骤 2:(推荐)对转换后的模型进行量化,以加快推理速度并减小模型体积。
quant_model_paths = quantize(onnx_model_paths)

# 步骤 3:设置 ONNX Runtime
model_sessions = get_onnx_runtime_sessions(quant_model_paths)

# 步骤 4:获取 ONNX 模型
model = OnnxT5(model_or_model_path, model_sessions)

                      ...
自定义输出路径

默认情况下,fastT5 会在当前目录下创建一个 models 文件夹,并将所有模型存储其中。您可以指定一个自定义文件夹路径来存储导出的模型。若要运行已存储在自定义路径下的导出模型,请使用 get_onnx_model(onnx_models_path="/path/to/custom/folder/")

from fastT5 import export_and_get_onnx_model, get_onnx_model

model_name = "t5-small"
custom_output_path = "/path/to/custom/folder/"

# 1. 将模型存储到自定义输出路径
model = export_and_get_onnx_model(model_name, custom_output_path)

# 2. 运行已存储在自定义路径下的导出模型
# model = get_onnx_model(model_name, custom_output_path)

详细信息

T5 是一种序列到序列(Encoder-Decoder)模型。由于其在推理过程中会反复使用解码器,因此我们无法直接将整个模型导出为 ONNX 格式。我们需要分别导出编码器和解码器。

past_key_values 包含预先计算的隐藏状态(自注意力层和交叉注意力层中的键值),可用于加速序列解码。

模型只能以固定数量的输入进行导出。然而,第一步的解码器并不需要 past_key_values,而后续步骤的解码器则需要。为了解决这一问题,我们可以创建两个解码器:一个用于第一步,不使用 past_key_values;另一个用于后续步骤,利用 past_key_values

接下来,我们将导出三个模型(编码器、解码器、初始解码器)。然后对它们进行量化,将 32 位量化为 8 位,理论上可使内存占用减少四分之一。由于多了一个解码器,模型体积将减少约三分之二。

最后,我们将量化后的模型部署到 ONNX Runtime 上运行。

推理过程非常简单,因为该模型支持 Hugging Face 的 generate() 方法。

功能特性

  • 轻松将任何预训练的 T5 模型导出为 ONNX 格式(包含 past_key_values)。
  • 导出的模型通过 generate() 方法支持束搜索、贪婪搜索等多种解码策略。
  • 通过量化技术将模型体积缩小至原来的三分之一。
  • 相比 PyTorch 执行,贪婪搜索的速度可提升至五倍,束搜索的速度可提升至三到四倍。

基准测试

以下基准测试结果基于 T5-base 模型在英法翻译任务上的表现。

ONNX 模型

下图展示了量化后的 ONNX 模型与 PyTorch 模型在束搜索数量从 1 到 9 不同时的延迟情况。此处显示的延迟是针对序列长度不超过 130 的平均值。

t5-base

以下热力图显示了 PyTorch 模型与 ONNX 模型延迟的倍数关系。大多数情况下,ONNX 模型的表现更优。然而,当序列长度较长时,ONNX 模型的速度会有所下降。

t5-base-hist

量化后的 ONNX 模型

如前所述,量化模型是轻量级模型,其准确率几乎与原始模型相同(量化模型的评分将在下一节中提及)。与 ONNX 和 PyTorch 模型相比,量化后的 ONNX 模型具有最低的延迟。

t5-base-quant

该模型在贪婪搜索上的平均性能比 PyTorch 模型快 5.7 倍,在束搜索上的性能则快 3 到 4 倍。

t5-base-quant-hist

注意:这些结果是在 AMD EPYC 7B12 上生成的,不同设备的结果可能会有所差异。ONNX 模型通常在核心数较多的高端 CPU 上表现良好。

量化模型评分

测试结果为英语到法语的翻译任务,使用束搜索,束宽设为 3。

Bleu_4 METEOR ROUGE_L
t5-small(量化) 0.240769 0.282342 0.468817
t5-small(PyTorch) 0.254601 0.295172 0.492749
t5-base(量化) 0.267606 0.306019 0.499188
t5-base(PyTorch) 0.268346 0.304969 0.503306
t5-large(量化) 0.286726 0.316845 0.503585
t5-large(PyTorch) 0.294015 0.315774 0.508677

私有 HuggingFace Model Hub 模型

HuggingFace Model Hub 支持私有模型。要使用 fastT5 的私有预训练 T5 版本,您首先需要通过 $ transformers-cli login 在 HuggingFace 生态系统中进行身份验证。然后,在使用 fastT5 时,还需要额外的导入和调用:

from fastT5 import (
    OnnxT5,
    get_onnx_runtime_sessions,
    generate_onnx_representation,
    quantize,
    set_auth_token)
from transformers import AutoTokenizer

set_auth_token(True)
# 其余代码与使用公开模型相同

如果您无法运行 $ transformers-cli login,或者更倾向于使用您的 API 密钥(可在 https://huggingface.co/settings/token 或组织的 https://huggingface.co/organizations/ORG_NAME/settings/token 页面找到),您可以将该密钥作为字符串传递给 set_auth_token。为了避免将 API 密钥硬编码到代码中,可以设置环境变量 HF_API_KEY=<redacted>,然后在代码中:

import os

from fastT5 import (
    OnnxT5,
    get_onnx_runtime_sessions,
    generate_onnx_representation,
    quantize,
    set_auth_token)
from transformers import AutoTokenizer

auth_token = os.environ.get("HF_API_KEY")
set_auth_token(auth_token)

# 代码继续正常执行

未来改进方向

  • 目前 fastT5 库仅支持 ONNX Runtime 的 CPU 版本,GPU 实现仍有待完成。
  • 对 ONNX 模型进行图优化将进一步降低延迟。

获取帮助

致谢

@article{2019t5,
  author = {Colin Raffel、Noam Shazeer、Adam Roberts、Katherine Lee、Sharan Narang、Michael Matena、Yanqi Zhou、Wei Li、Peter J. Liu},
  title = {利用统一的文本到文本 Transformer 探索迁移学习的极限},
  journal = {arXiv e-prints},
  year = {2019},
  archivePrefix = {arXiv},
  eprint = {1910.10683},
}

常见问题

相似工具推荐

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|今天
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

139k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

107.7k|★★☆☆☆|2天前
开发框架图像Agent

NextChat

NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。

87.6k|★★☆☆☆|今天
开发框架语言模型

ML-For-Beginners

ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。

85k|★★☆☆☆|今天
图像数据工具视频

ragflow

RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。

77.1k|★★★☆☆|2天前
Agent图像开发框架