Transformers 文档

理念

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

理念

Transformers 是一个 PyTorch 优先的库。它提供了忠实于论文、易于使用且易于修改的模型。

一篇更长、更深入的文章,包含示例、可视化和时间线,可在此处 获取,作为我们的规范参考。

我们的理念通过实践不断发展。以下是我们当前稳定不变的原则。

本项目适合谁

  • 研究人员和教育工作者,他们正在探索或扩展模型架构。
  • 从业人员,他们正在微调、评估或部署模型。
  • 工程师,他们想要一个“开箱即用”的预训练模型,并具有可预测的 API。

您可以期待什么

  • 每个模型都需要三个核心类:配置模型和一个预处理类。分词器处理 NLP,图像处理器处理图像,视频处理器处理视频,特征提取器处理音频,处理器处理多模态输入。

  • 所有这些类都可以通过通用的 from_pretrained() 方法以简单统一的方式从预训练实例初始化,该方法会下载(如果需要)、缓存并加载相关的类实例以及关联数据(配置的超参数、分词器的词汇表、处理器的参数和模型的权重),这些数据来自 Hugging Face Hub 提供的预训练检查点或您自己保存的检查点。

  • 除了这三个基类之外,该库还提供了两个 API:用于快速使用模型对给定任务进行推理的 pipeline() 和用于快速训练或微调 PyTorch 模型的 Trainer

核心原则

以下原则随着时间的推移而固定下来,并在我们新的理念 博客文章 中得到了详细阐述。它们在审查 PR 和贡献时指导维护者的决策。

  • 事实的来源。 实现必须忠实于官方结果和预期行为。
  • 一个模型,一个文件。 核心推理/训练逻辑在用户阅读的模型文件中自上而下可见。
  • 代码即产品。 优化可读性和差异性。优先使用明确的名称,而不是巧妙的间接引用。
  • 标准化,而不是抽象。 将模型特定的行为保留在模型中。仅为通用基础设施使用共享接口。
  • 不要重复*(在有助于用户时重复)。最终用户建模文件保持独立。基础设施被分离出来。
  • 最小化用户 API。 少量代码路径,可预测的 kwargs,稳定的方法。
  • 向后兼容。 公共接口不应中断。旧的 Hub 工件必须继续工作。
  • 一致的公共接口。 命名、输出和可选的诊断信息是一致且经过测试的。

主类

  • 配置类 存储构建模型所需的超参数。这些包括层数和隐藏层大小。您不必总是自己实例化它们。在不修改预训练模型的情况下,创建模型会自动实例化配置。

  • 模型类是 PyTorch 模型(torch.nn.Module),至少被一个 PreTrainedModel 包裹。

  • 模块化 Transformer。 贡献者编写一个小的 modular_*.py 分片,该分片声明重用现有组件。库会自动将其扩展为用户读取/调试的可见的 modeling_*.py 文件。维护者审查分片;用户修改扩展后的文件。这在保持“一个模型,一个文件”的同时,避免了样板代码的漂移。有关更多信息,请参阅 贡献文档

  • 预处理类将原始数据转换为模型可接受的格式。分词器存储每个模型的词汇表,并提供将字符串编码和解码为标记嵌入索引列表的方法。图像处理器预处理视觉输入,视频处理器预处理视频输入,特征提取器预处理音频输入,处理器预处理多模态输入。

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

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

© . This site is unofficial and not affiliated with Hugging Face, Inc.