Transformers

义项:Hugging Face 推出的预训练模型库
Transformers

Transformers是Hugging Face开发并维护的开源深度学习库,以统一的应用程序接口收集并实现文本、图像、音频及多模态预训练模型,支持这些模型的训练与推理[1]。该库最初于2018年以pytorch-pretrained-bert之名发布,是谷歌BERT的PyTorch实现,后随支持模型增多两次更名[1]。库中提供 pipeline、Trainer 与 Auto 系列等接口,可同Hugging Face模型库中的权重直接对接[2]。

目录
  1. 定义
  2. 原理
  3. 发展历程
  4. 应用
  5. 局限
  6. 参见

定义

Transformers是一个用Python编写的开源软件库,由Hugging Face开发,作用是提供各类预训练神经网络模型的定义、权重加载方式以及训练与推理的代码实现[1]。其覆盖范围并不限于文本,还包括图像、音频、视频和多模态模型,同一套接口既能做推理也能做训练[2]。库采用Apache 2.0许可证发布,可通过包管理器安装或从GitHub获取源码[3]。

该库的设计目标是把不同研究团队发布的通用预训练模型集中到统一的应用程序接口之下,并配套示例、教程和脚本,使下游任务可以直接复用这些模型[4]。截至其文档所述,Hugging Face模型库中可供该库加载的Transformers模型检查点超过100万个[2]。

原理

库的核心抽象由三部分组成:配置类保存隐藏层数、词表大小等超参数,模型类实现前向计算,预处理类负责把原始文本、图像或音频转换为模型输入[5]。每个模型都遵循“一个模型一个文件”的组织方式,代码紧贴原始论文实现,便于研究者单独阅读和修改[3]。在此基础上,各任务通过给基础模型加装不同的任务头实现,类名形如 XXXForSequenceClassification 或 XXXForCausalLM[3]。

用户通常不直接调用具体模型类,而是通过Auto系列类加载。AutoModel、AutoTokenizer、AutoConfig 会读取检查点的配置并自动选择正确的类,因此更换模型只需改动模型名称[5]。加载动作由 from_pretrained() 完成,它从Hugging Face Hub或本地目录下载权重与配置,并优先使用 safetensors 格式以提高安全性[5]。

面向任务的最高层接口是 pipeline(),它把模型选择、分词器加载、输入预处理和输出后处理合并为一次调用[6]。训练侧则由 Trainer 类承担,负责混合精度、梯度累积、分布式训练、日志记录与检查点保存等流程[6]。文本生成另有 generate 方法,支持流式输出和多种解码策略[2]。

发展历程

2018年11月,Hugging Face发布了该库的首个版本,当时名为pytorch-pretrained-bert,内容是用PyTorch复现谷歌同年提出的BERT并附带预训练权重[1]。随着OpenAI GPT、Transformer-XL、XLNet、XLM、RoBERTa 等模型相继加入,单一名称已不足以概括其范围,库于2019年改名为pytorch-transformers。

2019年9月发布2.0.0版本时,库再次更名为transformers,并加入对TensorFlow 2.0的支持,使同一个模型可在PyTorch与TensorFlow之间互相加载[3]。据VentureBeat统计,到2019年9月,其PyTorch版本的当年安装量已超过50万次,使用者包括1000多家公司[1]。2019年10月,Wolf 等人在arXiv发表技术报告,系统介绍了该库的设计与定位[4]。

2020年11月发布的4.0版本加强了与模型库的集成并稳定了接口,此后日下载量从约2万次增长到超过300万次,总安装量突破12亿次。被支持的架构数量也从最初的几十个扩展到400个以上。2025年推出的5.0版本将PyTorch确立为唯一的核心后端,不再直接支持TensorFlow与JAX,并把重心从微调扩展到预训练、与高性能推理引擎的互操作以及量化支持[1]。

应用

在文本领域,该库覆盖文本分类、信息抽取、问答、摘要、翻译和文本生成等任务,支持100多种语言[7]。图像方向可用于图像分类、目标检测与图像分割,音频方向可用于语音识别与音频分类[7]。表格问答、光学字符识别、视频分类和视觉问答等跨模态任务同样在支持之列[7]。

在工程实践中,pipeline 常用于快速搭建原型和标准任务的推理服务,Auto 系列类用于需要自定义预处理或训练流程的场景,Trainer 则承担完整的训练与微调工作流[6]。微调完成后,模型可通过 save_pretrained() 连同分词器一起保存,并可上传至模型库供他人复用[8]。该库还被集成进 spaCy、AllenNLP、Flair 等其他自然语言处理框架,作为依赖或封装层使用[3]。

局限

该库的定位是模型定义与训练工具,而非通用的神经网络组件箱。其训练接口针对库内自带模型优化,处理通用的机器学习循环需要改用其他工具[9]。示例目录中的脚本仅作示范,通常不能直接适用于具体问题,需要改动代码才能使用[9]。在高吞吐的大模型推理场景中,直接以该库提供服务比专用推理服务器慢,生产环境往往把它与专门的推理引擎搭配使用[10]。

多后端支持正在收窄。5.0版本之后PyTorch成为唯一核心后端,TensorFlow与JAX 的直接支持终止,此后新增架构通常只有PyTorch实现[1]。从3.x到4.x、从4.x到5.x的两次大规模版本变更都引入了不兼容改动,下游代码需要跟随调整[10]。此外,加载大模型时需同时容纳随机初始化的权重与预训练权重,显存不足时需要借助分片检查点、低位宽数据类型等手段缓解[5]。

参见

  • Hugging Face —— 开发并维护Transformers库的公司,同时运营模型与数据集共享平台。

  • BERT —— 该库首个版本所复现的预训练语言模型,也是库更名前的命名来源。

  • PyTorch —— 该库的主要深度学习后端,5.0版本起成为唯一核心后端。

  • 预训练模型 —— 该库收集与分发的主要对象,通过微调适配下游任务。

  • Transformer —— 库中多数模型所依据的神经网络架构。

参考资料

  1. Hugging Face Transformers [引用日期2026-10-29]
  2. Transformers · Hugging Face [引用日期2026-10-29]
  3. arxiv.org 上的网页 [引用日期2026-10-29]
  4. arxiv.org 上的网页 [引用日期2026-10-29]
  5. Loading models · Hugging Face [引用日期2026-10-29]
  6. 3-user-facing-apis [引用日期2026-10-29]
  7. json [引用日期2026-10-29]
  8. Visite rapide · Hugging Face - Transformers documentation [引用日期2026-10-29]
  9. pypi.org 上的网页 [引用日期2026-10-29]
  10. aiwiki.ai 上的网页 [引用日期2026-10-29]
词条评价
词条统计

浏览次数:0 次

阅读量:0 次 · 阅读完成量:0 次

最近更新:2026-10-28T18:46:18Z

历史版本

本条目引用的词条