Transformers v5:为AI生态系统提供支持的简单模型定义
Transformers 的 v4.0.0rc-1 版本,即版本 4 的首个发布候选版,于2020年11月19日发布。五年后,我们现在发布 v5.0.0rc-0 版本。
今天,随着 v5 的发布,Transformers 每天通过 pip 安装超过 300万次——比 v4 的 20,000次/天 大幅增长 🤯。总计,现在已突破 12亿次安装!
生态系统已从 v4 的 40 种模型架构扩展到 今天的 400 多种,社区已在 Hub 上贡献了 超过 750,000 个与 Transformers 兼容的模型检查点,而 v4 发布时大约只有 1,000 个。
这种增长得益于该领域的发展以及人工智能如今已成为主流。作为生态系统中的领先模型定义库,我们需要不断发展和调整该库以保持其相关性。在人工智能领域,创新是长寿的关键。
我们很幸运能与许多基于 Transformers 构建的库和应用程序合作,排名不分先后:llama.cpp、MLX、onnxruntime、Jan、LMStudio、vLLM、SGLang、Unsloth、LlamaFactory、dLLM、MaxText、TensorRT、Argmax 等众多朋友。
对于 v5,我们希望在几个值得关注的方面进行改进:简洁性、训练、推理和生产。我们将在本文中详细介绍这些方面的工作。
简洁性
团队的首要重点是简洁性。在开发 Transformers 时,我们将代码视为产品。我们希望模型集成是清晰的,以便生态系统能够依赖我们的模型定义,并了解其内部的真正运作方式,模型之间的差异以及每个新模型的主要特性。简洁性带来了更广泛的标准化、通用性和更广泛的支持。
模型新增
Transformers 是数十万个项目的基石,包括 Unsloth。我们基于 Transformers 帮助人们高效地微调和训练模型,无论是 BERT、文本到语音(TTS)还是其他模型;即使其他库尚未支持模型,也能实现快速推理,用于强化学习(RL)。我们对 Transformers v5 充满期待,并非常高兴能与 Hugging Face 团队合作!
-- Michael Han,Unsloth
Transformers 的核心仍然是一个模型架构工具包。我们的目标是拥有所有最新的架构,并成为模型定义的“事实来源”。五年来,我们每周都在新增 1-3 个新模型,如下图所示:
我们一直在努力改进模型添加过程。
模块化方法
在过去的一年里,我们大力推动模块化设计作为一项重要的进步。这使得维护更简单、集成更快,并能更好地促进社区间的协作。
您可以在我们的博客文章 维护不可维护之物 中找到更深入的概述。简而言之,我们的目标是实现更简单的模型贡献流程和更低的维护负担。一个可以强调的指标是,使用 模块化 后,贡献(和审查)所需的代码行数显著减少。
我们尊重“一个模型,一个文件”的理念,但我们继续引入一些抽象,使常见辅助工具的管理更加简单。这方面的最佳例子是引入了 AttentionInterface,它为注意力方法提供了集中抽象。eager 方法将保留在建模文件中;而 FA1/2/3、FlexAttention 或 SDPA 等其他方法则移至该接口。
在过去几年中,对新模型架构的日益增加的零日支持以及注意力处理的标准化,有助于我们简化对后训练现代 LLM 的支持。
-- Wing Lian,Axolotl
模型转换工具
我们正在构建工具,帮助我们识别新模型与现有模型架构的相似之处。该功能使用机器学习来查找独立建模文件之间的代码相似性。更进一步,我们旨在通过为要集成到 Transformers 格式的模型打开草稿 PR 来自动化转换过程。此过程减少了手动工作,并确保了代码的一致性。
代码精简
简化建模与分词/处理文件
我们对建模和分词文件进行了大量重构。得益于上述模块化方法,以及跨模型的标准化,建模文件得到了极大改进。标准化有助于抽象出大部分不构成模型的工具,因此建模代码只包含模型正向/反向传播的相关部分。
在此工作的同时,我们正在简化分词和处理文件:今后,我们将只关注 tokenizers 后端,取消“快速”和“慢速”分词器的概念。
我们将使用 `tokenizers` 作为主要的分词后端,就像我们对基于 PyTorch 的模型所做的那样。我们将为 Sentencepiece 或 MistralCommon 支持的分词器提供替代方案,这些替代方案将是非默认但受支持的。图像处理器现在将只存在于其快速变体中,这取决于 torchvision 后端。
最后,我们正在淘汰对 Flax/TensorFlow 的支持,转而专注于 PyTorch 作为唯一的后端;但是,我们也在与 Jax 生态系统中的合作伙伴合作,以确保我们的模型与该生态系统之间的兼容性。
随着 v5 版本的发布,Transformers 将全面转向 PyTorch。Transformers 在整个领域中充当模型定义的真实来源和基础;我们一直在与团队合作,以确保在整个堆栈中获得良好的性能。
我们很高兴未来能继续在训练、推理和部署方面推进这一工作。
—— Matt White,PyTorch 基金会执行董事,Linux 基金会人工智能总经理
训练
训练仍然是团队在 v5 中关注的重点:虽然之前我们主要关注微调而不是大规模预训练/全训练,但最近我们为改进对后者的支持也做了大量工作。
大规模预训练
支持预训练意味着重新设计模型的初始化,确保它们能与不同的并行范式在大规模下工作,并为前向和后向传播提供优化的内核支持。
展望未来,我们很高兴能扩展与 torchtitan、megatron、nanotron 以及任何其他有兴趣与我们合作的预训练工具的兼容性。
微调与后训练
我们继续与 Python 生态系统中的所有微调工具紧密合作。我们的目标是继续提供与 Unsloth、Axolotl、LlamaFactory、TRL 以及 PyTorch 生态系统中的其他工具兼容的模型实现;但我们也正在与 JAX 生态系统中的 MaxText 等工具合作,以确保其框架与 transformers 之间具有良好的互操作性。
现在,所有微调和后训练工具都可以依靠 transformers 进行模型定义;通过 OpenEnv 或 Prime Environment Hub 进一步支持 Agentic 用例。
推理
我们正在将 v5 的重点放在推理上,并进行了一些范式转变:引入了专用内核、更清晰的默认设置、新的 API,并支持优化的推理引擎。
与训练类似,我们也在努力封装 kernels,以便在您的硬件和软件允许的情况下自动使用它们。如果您之前从未听说过 kernels,我们建议您查看此 文档。
除了这项工作,我们还发布了两个专门用于推理的新 API。
- 我们支持连续批处理和分页注意力机制。这已经在内部使用了一段时间,我们正在努力完善细节并编写使用指南。
- 我们引入
transformers serve作为新的 Transformers 专用服务系统,它部署了一个与 OpenAI API 兼容的服务器。
我们认为这是评估等用例向前迈出的重要一步,因为在这些用例中会同时进行大量推理请求。我们的目标不是进行像专用推理引擎(vLLM、SGLang、TensorRT LLM)那样的专门优化。相反,我们的目标是与这些引擎完全互兼容,具体细节将在下一节中阐述。
vLLM 中的 Transformers 后端使得更多架构(如 BERT 和其他编码器)能够供更多用户使用。我们一直在与 Transformers 团队合作,以确保在各种模态下,许多模型都能以最佳性能运行。这仅仅是我们合作的开始:我们很高兴看到 Transformers 团队将在版本 5 中将此作为重点。
—— Simon Mo,Harry Mellor,vLLM
标准化是加速人工智能创新的关键。Transformers v5 赋能 SGLang 团队将更多时间用于内核优化,减少模型重新实现的时间。我们期待共同构建一个更高效、更统一的 AI 生态系统!
—— 陈阳,SGLang
生产与本地部署
最近,我们一直与最流行的推理引擎携手合作,让他们使用 transformers 作为后端。其附加价值显著:一旦模型被添加到 transformers 中,它就立即在这些推理引擎中可用,同时利用了每个引擎的优势:推理优化、专用内核、动态批处理等。
我们还与 ONNXRuntime、llama.cpp 和 MLX 密切合作,以确保 transformers 和这些建模库之间的实现具有良好的互操作性。例如,得益于社区的巨大努力,现在可以非常容易地在 transformers 中加载 GGUF 文件以进行进一步的微调。反过来,transformers 模型可以轻松转换为 GGUF 文件以用于 llama.cpp。
Transformers 框架是参考 AI 模型实现的首选之地。该框架在整个堆栈中为现代 AI 提供支持,发挥着至关重要的作用。该项目背后的团队和社区真正理解并拥抱开源开发和协作的精神。
—— Georgi Gerganov, ggml-org
MLX 也是如此,Transformers 的 safetensors 文件直接与 MLX 的模型兼容。
Transformers(以及数据集、分词器等)对开源和整个 AI 生态系统的重要性怎么强调都不为过。我数不清自己曾多少次将 Transformers 作为“真相之源”来使用。
—— Awni Hannun, MLX
最后,我们正在推动本地推理的边界,并与 executorch 团队携手合作,使 Transformers 模型能够在设备上使用。我们正在通过 optimum 将覆盖范围扩展到多模态模型(视觉、音频)。
量化
量化正迅速成为最先进模型开发的标准。许多 SOTA 模型现在以低精度格式发布,如 8 位和 4 位(例如,gpt-oss、Kimi-K2、Deepseek-r1),硬件也越来越针对低精度工作负载进行优化,并且社区正在积极共享高质量的量化检查点。在 v5 中,我们将量化作为 Transformers 支持的核心焦点,确保与所有主要功能完全兼容,并为训练和推理提供可靠的框架。
我们对模型中权重的加载方式进行了重大更改;通过这一更改,我们将量化提升为一等公民。
我们与 Transformers 团队的合作卓有成效,其积极的代码审查、反馈和技术专长令人印象深刻。他们的支持对于整合 TorchAO、扩展量化功能以及改进文档以促进 V5 的广泛采用至关重要。
—— Jerry Zhang,TorchAO
我们很高兴 v5 已将量化提升为一等公民。它为 bitsandbytes 更好地支持 TP 和 MoE 等关键功能奠定了基础,也使得集成新的量化方法更加容易。
—— Matthew Douglas & Titus von Koeller, bitsandbytes
结论
版本 5 发布的主题是“互操作性”。所有重构、性能改进和标准化都与此主题保持一致。v5 与日益增长的生态系统完美地端到端协作:使用 Unsloth/Axolotl/LlamaFactory/MaxText 训练模型,使用 vLLM/SGLang 部署它,并将其导出到 llama.cpp/executorch/MLX 进行本地运行!
版本 5 无疑是过去五年中,我们社区众多成员共同取得的成就。我们也将其视为一个承诺,以及我们未来发展方向的指引。
我们借此机会清理了工具包,并隔离了重要的部分;我们现在有了一个全新的起点来构建。得益于社区和团队的诸多改进,性能、可用性和可读性的提升将更加简单。
现在 v5.0.0 的第一个 RC 已经发布,我们将热切期待您的反馈。请查看我们的 发布说明 以获取所有技术细节,我们将在 GitHub issues 中等待您的反馈!