跳转到主要内容

适用于JAX、PyTorch和TensorFlow的先进机器学习技术

项目描述

Hugging Face Transformers Library

Build GitHub Documentation GitHub release Contributor Covenant DOI

英语 | 简体中文 | 繁體中文 | 한국어 | Español | 日本語 | हिन्दी | Русский | Рortuguês | తెలుగు | Français | Deutsch | Tiếng Việt | العربية | اردو |

适用于JAX、PyTorch和TensorFlow的先进机器学习技术

🤗 Transformers提供了数千个预训练模型,以在文本、视觉和音频等不同模态上执行任务。

这些模型可以应用于以下方面:

  • 📝 文本,如文本分类、信息提取、问答、摘要、翻译和文本生成,支持超过100种语言。
  • 🖼️ 图片,如图像分类、目标检测和分割。
  • 🗣️ 音频,如语音识别和音频分类。

Transformer模型还可以在多种模态结合的情况下执行任务,如表格问答、光学字符识别、从扫描文档中提取信息、视频分类和视觉问答。

🤗 Transformers提供了API,可以快速下载和使用这些预训练模型,在给定的文本上进行微调,然后在我们的模型库上与社区共享。同时,每个定义架构的Python模块都是完全独立的,可以修改以进行快速研究实验。

🤗 Transformers由最流行的三个深度学习库——JaxPyTorchTensorFlow——支持,它们之间具有无缝集成。在加载其中一个进行推理之前,使用其中一个训练模型非常简单。

在线演示

您可以直接从模型库的页面测试我们的大部分模型。我们还提供私有模型托管、版本控制和推理API,用于公共和私有模型。

以下是一些示例:

在自然语言处理中

在计算机视觉领域

在音频领域

在多模态任务中

使用Transformers的100个项目

Transformers不仅仅是一个使用预训练模型的工具包:它是一个围绕它和Hugging Face Hub构建的项目社区。我们希望Transformers能够帮助开发者、研究人员、学生、教授、工程师以及任何其他人构建他们的梦想项目。

为了庆祝Transformers的10万个星星,我们决定将焦点放在社区上,并创建了一个awesome-transformers页面,列出了在Transformers周围构建的100个令人难以置信的项目。

如果你拥有或使用一个你认为应该列入该列表的项目,请打开一个PR来添加它!

如果你需要Hugging Face团队提供的定制支持

HuggingFace Expert Acceleration Program

快速浏览

要立即在给定输入(文本、图像、音频等)上使用模型,我们提供了pipeline API。Pipelines将预训练模型与其在训练期间使用的预处理结合起来。以下是如何快速使用pipeline来对正负文本进行分类的示例

>>> from transformers import pipeline

# Allocate a pipeline for sentiment-analysis
>>> classifier = pipeline('sentiment-analysis')
>>> classifier('We are very happy to introduce pipeline to the transformers repository.')
[{'label': 'POSITIVE', 'score': 0.9996980428695679}]

代码的第二行下载并缓存了pipeline使用的预训练模型,而第三行则在给定的文本上评估它。这里的答案是“正面”,置信度为99.97%。

许多任务都有现成的预训练pipeline可供使用,不仅在NLP领域,在计算机视觉和语音领域也是如此。例如,我们可以轻松地从图像中提取检测到的对象

>>> import requests
>>> from PIL import Image
>>> from transformers import pipeline

# Download an image with cute cats
>>> url = "https://hugging-face.cn/datasets/huggingface/documentation-images/resolve/main/coco_sample.png"
>>> image_data = requests.get(url, stream=True).raw
>>> image = Image.open(image_data)

# Allocate a pipeline for object detection
>>> object_detector = pipeline('object-detection')
>>> object_detector(image)
[{'score': 0.9982201457023621,
  'label': 'remote',
  'box': {'xmin': 40, 'ymin': 70, 'xmax': 175, 'ymax': 117}},
 {'score': 0.9960021376609802,
  'label': 'remote',
  'box': {'xmin': 333, 'ymin': 72, 'xmax': 368, 'ymax': 187}},
 {'score': 0.9954745173454285,
  'label': 'couch',
  'box': {'xmin': 0, 'ymin': 1, 'xmax': 639, 'ymax': 473}},
 {'score': 0.9988006353378296,
  'label': 'cat',
  'box': {'xmin': 13, 'ymin': 52, 'xmax': 314, 'ymax': 470}},
 {'score': 0.9986783862113953,
  'label': 'cat',
  'box': {'xmin': 345, 'ymin': 23, 'xmax': 640, 'ymax': 368}}]

这里,我们得到了一个检测到图像中的对象的列表,每个对象周围都有一个框和一个置信度得分。这里是在左边的原始图像,右边的预测结果

你可以在这篇教程中了解更多关于pipeline API支持的任务。

除了pipeline之外,要下载和使用给定任务中的任何预训练模型,只需三行代码。以下是PyTorch版本

>>> from transformers import AutoTokenizer, AutoModel

>>> tokenizer = AutoTokenizer.from_pretrained("google-bert/bert-base-uncased")
>>> model = AutoModel.from_pretrained("google-bert/bert-base-uncased")

>>> inputs = tokenizer("Hello world!", return_tensors="pt")
>>> outputs = model(**inputs)

以下是TensorFlow的等效代码

>>> from transformers import AutoTokenizer, TFAutoModel

>>> tokenizer = AutoTokenizer.from_pretrained("google-bert/bert-base-uncased")
>>> model = TFAutoModel.from_pretrained("google-bert/bert-base-uncased")

>>> inputs = tokenizer("Hello world!", return_tensors="tf")
>>> outputs = model(**inputs)

分词器负责预训练模型期望的所有预处理,可以直接在单个字符串(如上面的示例)或列表上调用。它将输出一个字典,您可以在下游代码中使用或直接使用**参数展开操作符将字典传递给模型。

模型本身是一个常规的Pytorch nn.Module或一个TensorFlow tf.keras.Model(取决于您的后端),您可以使用它就像通常一样。有关如何将此类模型集成到经典的PyTorch或TensorFlow训练循环或如何使用我们的Trainer API快速在新数据集上进行微调的教程,请参阅这篇教程

为什么我应该使用变压器?

  1. 易于使用的最先进模型

    • 在自然语言理解与生成、计算机视觉和音频任务上表现出高性能。
    • 对教育者和从业者来说入门门槛低。
    • 只需学习三个类,用户界面抽象少。
    • 统一API,用于使用我们所有的预训练模型。
  2. 计算成本更低,碳足迹更小。

    • 研究人员可以共享训练好的模型,而不是总是重新训练。
    • 从业者可以减少计算时间和生产成本。
    • 数十种架构,所有模态超过40万个预训练模型。
  3. 为模型的每个阶段选择合适的框架

    • 用3行代码训练最先进的模型。
    • 可以在TF2.0/PyTorch/JAX框架之间自由移动单个模型。
    • 无缝选择训练、评估和生产所需的正确框架。
  4. 轻松定制模型或示例以满足您的需求

    • 我们为每个架构提供示例,以重现原始作者发布的结果。
    • 尽可能一致地公开模型内部结构。
    • 模型文件可以独立于库使用,以便快速实验。

为什么不应该使用变压器?

  • 这个库不是一个模块化工具箱,不是神经网络构建块。故意没有在模型文件中对代码进行重构,添加额外的抽象,以便研究人员可以快速迭代每个模型,而不必深入研究额外的抽象/文件。
  • 训练API不是旨在与任何模型一起工作,而是针对库提供的模型进行优化。对于通用机器学习循环,您应该使用另一个库(可能是加速库)。
  • 虽然我们尽力展示尽可能多的用例,但我们示例文件夹中的脚本只是示例。预计它们不会直接适用于您特定的问题,并且您可能需要更改几行代码来适应您的需求。

安装

使用pip

此存储库已在Python 3.8+、Flax 0.4.1+、PyTorch 1.11+和TensorFlow 2.6+上进行了测试。

您应该在虚拟环境中安装🤗 Transformers。如果您不熟悉Python虚拟环境,请查看用户指南

首先,使用您打算使用的Python版本创建一个虚拟环境,并激活它。

然后,您需要安装Flax、PyTorch或TensorFlow中的至少一个。请参阅有关您平台特定安装命令的TensorFlow安装页面PyTorch安装页面和/或FlaxJax安装页面。

安装了这些后端之一后,可以使用pip按以下方式安装🤗 Transformers

pip install transformers

如果您想尝试示例或需要代码的尖端版本,并且不想等待新版本发布,您必须从源安装库

使用conda

🤗 Transformers可以使用conda按以下方式安装

conda install conda-forge::transformers

注意:频道安装transformers已弃用。

按照Flax、PyTorch或TensorFlow的安装页面查看如何使用conda安装它们。

注意:在Windows上,您可能需要激活开发者模式才能受益于缓存。如果这不是您的选择,请在此问题中告诉我们。

模型架构

所有模型检查点由🤗 Transformers提供,无缝集成自huggingface.co 模型库,模型由用户组织直接上传。

当前检查点数量:

🤗 Transformers目前提供以下架构:请参见此处了解每个架构的高级概述。

要检查每个模型是否有Flax、PyTorch或TensorFlow的实现,或者是否有由🤗 Tokenizers库支持的关联分词器,请参阅此表

这些实现已在多个数据集上进行了测试(请参阅示例脚本),并且应该与原始实现的表现相匹配。您可以在文档的示例部分中找到更多关于性能的详细信息。

了解更多

章节 描述
文档 完整的API文档和教程
任务概述 🤗 Transformers支持的任务
预处理教程 使用Tokenizer类准备模型数据
训练和微调 在PyTorch/TensorFlow训练循环中使用🤗 Transformers提供的模型和Trainer API
快速浏览:微调/使用脚本 示例脚本,用于在广泛的任务上微调模型
模型共享和上传 上传并共享您微调的模型与社区

引用

我们现在有一篇关于🤗 Transformers库的论文,您可以引用此处

@inproceedings{wolf-etal-2020-transformers,
    title = "Transformers: State-of-the-Art Natural Language Processing",
    author = "Thomas Wolf and Lysandre Debut and Victor Sanh and Julien Chaumond and Clement Delangue and Anthony Moi and Pierric Cistac and Tim Rault and Rémi Louf and Morgan Funtowicz and Joe Davison and Sam Shleifer and Patrick von Platen and Clara Ma and Yacine Jernite and Julien Plu and Canwen Xu and Teven Le Scao and Sylvain Gugger and Mariama Drame and Quentin Lhoest and Alexander M. Rush",
    booktitle = "Proceedings of the 2020 Conference on Empirical Methods in Natural Language Processing: System Demonstrations",
    month = oct,
    year = "2020",
    address = "Online",
    publisher = "Association for Computational Linguistics",
    url = "https://www.aclweb.org/anthology/2020.emnlp-demos.6",
    pages = "38--45"
}

项目详情


发布历史 发布通知 | RSS源

下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分发

transformers-4.45.1.tar.gz (8.5 MB 查看散列值)

上传时间 源代码

构建分发

transformers-4.45.1-py3-none-any.whl (9.9 MB 查看散列值)

上传时间 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面