Transformers 文档

哲学

Hugging Face's logo
加入Hugging Face社区

并获得增强的文档体验

开始使用

库的设计理念

🤗 Transformers 是一个面向以下用户的库:

  • 希望使用、研究或扩展大型 Transformer 模型的机器学习研究人员和教育工作者。
  • 希望微调这些模型或将其用于生产环境的实践者,或两者兼而有之。
  • 只需下载预训练模型并将其用于解决特定机器学习任务的工程师。

该库的设计考虑了两个主要目标:

  1. 尽可能简单易用且快速。
  • 我们严格限制了用户需要学习的抽象层级,实际上,几乎没有抽象,每个模型只需要三个标准类:配置模型和一个预处理类(分词器 用于 NLP,图像处理器 用于视觉,特征提取器 用于音频,以及处理器 用于多模态输入)。
  • 所有这些类都可以通过一个通用的 from_pretrained() 方法以简单统一的方式从预训练实例初始化,该方法会(如果需要)下载、缓存并加载相关的类实例和关联数据(配置的超参数、分词器的词汇表和模型的权重)来自 Hugging Face Hub 上提供的预训练检查点或您自己保存的检查点。Hugging Face Hub
  • 在这些三个基础类之上,该库提供了两个 API:pipeline() 用于快速使用模型对给定任务进行推理,以及 Trainer 用于快速训练或微调 PyTorch 模型(所有 TensorFlow 模型都与 Keras.fit 兼容)。
  • 因此,该库**不是**一个用于构建神经网络的模块化工具箱。如果您想扩展或构建库,只需使用常规的 Python、PyTorch、TensorFlow、Keras 模块并继承库的基础类以重用模型加载和保存等功能。如果您想了解更多关于我们模型编码理念的信息,请查看我们的 重复你自己 博客文章。
  1. 提供最先进的模型,其性能尽可能接近原始模型。
  • 我们为每种架构至少提供一个示例,该示例重现了该架构的官方作者提供的结果。
  • 代码通常尽可能接近原始代码库,这意味着一些 PyTorch 代码由于转换为 TensorFlow 代码而可能不像预期的那样“PyTorch 式”,反之亦然。

其他一些目标:

  • 尽可能一致地公开模型的内部结构。

    • 我们使用单个 API 访问所有隐藏状态和注意力权重。
    • 预处理类和基本模型 API 已标准化,以便轻松地在模型之间切换。
  • 整合一些有前景的工具,用于微调和研究这些模型。

    • 一种简单一致的方法,用于向词汇表和嵌入中添加新标记以进行微调。
    • 简单的方法来掩盖和修剪 Transformer 的注意力头。
  • 轻松地在 PyTorch、TensorFlow 2.0 和 Flax 之间切换,允许使用一个框架进行训练,使用另一个框架进行推理。

核心概念

该库围绕每个模型的三种类型的类构建:

  • **模型类** 可以是 PyTorch 模型 (torch.nn.Module)、Keras 模型 (tf.keras.Model) 或 JAX/Flax 模型 (flax.linen.Module),它们可以使用库中提供的预训练权重。
  • **配置类** 存储构建模型所需的超参数(例如层数和隐藏层大小)。您并不总是需要自己实例化它们。特别是,如果您使用的是没有任何修改的预训练模型,则创建模型将自动处理配置的实例化(它是模型的一部分)。
  • **预处理类** 将原始数据转换为模型可以接受的格式。分词器 存储每个模型的词汇表,并提供将字符串编码和解码为一系列标记嵌入索引的方法,以馈送到模型。图像处理器 预处理视觉输入,特征提取器 预处理音频输入,而 处理器 处理多模态输入。

所有这些类都可以从预训练实例实例化、保存在本地并在 Hub 上共享,使用三种方法:

  • from_pretrained() 允许您从预训练版本实例化模型、配置和预处理类,这些版本要么由库本身提供(受支持的模型可以在 模型 Hub 上找到),要么由用户保存在本地(或服务器上)。
  • save_pretrained() 允许您将模型、配置和预处理类保存在本地,以便可以使用 from_pretrained() 重新加载。
  • push_to_hub() 允许您将模型、配置和预处理类共享到 Hub,以便每个人都可以轻松访问。
< > 更新 在 GitHub 上