Transformers 文档
哲学
加入 Hugging Face 社区
并获得增强的文档体验
开始入门
哲学
🤗 Transformers 是一个有明确观点的库,专为
- 寻求使用、研究或扩展大规模 Transformers 模型的机器学习研究人员和教育工作者构建。
- 希望微调这些模型或在生产环境中部署它们(或两者兼而有之)的实操从业者。
- 只是想下载预训练模型并用它来解决给定的机器学习任务的工程师。
该库的设计考虑了两个主要目标
- 尽可能易用和快速
- 我们极大地限制了用户界面的抽象数量,实际上几乎没有抽象,只需三个标准类即可使用每个模型:配置、模型和一个预处理类(NLP 的分词器、视觉的图像处理器、音频的特征提取器以及多模态输入的处理器)。
- 所有这些类都可以通过使用通用的
from_pretrained()
方法从预训练实例以简单统一的方式初始化,该方法从 Hugging Face Hub 或您自己保存的检查点下载(如果需要)、缓存和加载相关的类实例和关联数据(配置的超参数、分词器的词汇表和模型的权重)。 - 除了这三个基本类之外,该库还提供了两个 API:pipeline() 用于快速使用模型对给定任务进行推理,Trainer 用于快速训练或微调 PyTorch 模型(所有 TensorFlow 模型都与
Keras.fit
兼容)。 - 因此,这个库不是神经网络构建模块的模块化工具箱。如果您想扩展或构建在该库的基础上,只需使用常规的 Python、PyTorch、TensorFlow、Keras 模块,并从该库的基类继承,以重用模型加载和保存等功能。如果您想了解更多关于我们模型的编码理念,请查看我们的 Repeat Yourself 博客文章。
- 提供最先进的模型,其性能尽可能接近原始模型
- 对于每个架构,我们至少提供一个示例,再现该架构官方作者提供的结果。
- 代码通常尽可能接近原始代码库,这意味着某些 PyTorch 代码可能不像它可能的那样 *pytorchic*,因为它是转换后的 TensorFlow 代码,反之亦然。
其他一些目标
尽可能一致地公开模型的内部结构
- 我们使用单个 API 提供对完整隐藏状态和注意力权重的访问。
- 预处理类和基本模型 API 已标准化,以便轻松切换模型。
纳入对用于微调和研究这些模型的有前景工具的主观选择
- 一种简单且一致的方式,用于向词汇表和嵌入中添加新标记以进行微调。
- 掩蔽和修剪 Transformer 头的简单方法
轻松在 PyTorch、TensorFlow 2.0 和 Flax 之间切换,允许使用一个框架进行训练,而使用另一个框架进行推理。
主要概念
该库围绕每种模型的三个类型的类构建
- 模型类可以是 PyTorch 模型、Keras 模型或 JAX/Flax 模型,它们与库中提供的预训练权重一起工作。
- 配置类存储构建模型所需的超参数(例如层数和隐藏大小)。您并不总是需要自己实例化这些。特别是,如果您正在使用没有任何修改的预训练模型,则创建模型将自动处理实例化配置(这是模型的一部分)。
- 预处理类将原始数据转换为模型接受的格式。分词器存储每个模型的词汇表,并提供用于将字符串编码和解码为要馈送到模型的标记嵌入索引列表的方法。图像处理器预处理视觉输入,特征提取器预处理音频输入,处理器处理多模态输入。
所有这些类都可以通过三种方法从预训练实例实例化、本地保存并在 Hub 上共享
from_pretrained()
允许您从库本身提供的预训练版本(支持的模型可以在 Model Hub 上找到)或用户本地存储(或服务器上)的版本实例化模型、配置和预处理类。save_pretrained()
允许您在本地保存模型、配置和预处理类,以便可以使用from_pretrained()
重新加载。push_to_hub()
允许您将模型、配置和预处理类共享到 Hub,以便每个人都可以轻松访问。