适用于JAX、PyTorch和TensorFlow的先进机器学习技术
项目描述
英语 | 简体中文 | 繁體中文 | 한국어 | Español | 日本語 | हिन्दी | Русский | Рortuguês | తెలుగు | Français | Deutsch | Tiếng Việt | العربية | اردو |
适用于JAX、PyTorch和TensorFlow的先进机器学习技术
🤗 Transformers提供了数千个预训练模型,以在文本、视觉和音频等不同模态上执行任务。
这些模型可以应用于以下方面:
- 📝 文本,如文本分类、信息提取、问答、摘要、翻译和文本生成,支持超过100种语言。
- 🖼️ 图片,如图像分类、目标检测和分割。
- 🗣️ 音频,如语音识别和音频分类。
Transformer模型还可以在多种模态结合的情况下执行任务,如表格问答、光学字符识别、从扫描文档中提取信息、视频分类和视觉问答。
🤗 Transformers提供了API,可以快速下载和使用这些预训练模型,在给定的文本上进行微调,然后在我们的模型库上与社区共享。同时,每个定义架构的Python模块都是完全独立的,可以修改以进行快速研究实验。
🤗 Transformers由最流行的三个深度学习库——Jax、PyTorch和TensorFlow——支持,它们之间具有无缝集成。在加载其中一个进行推理之前,使用其中一个训练模型非常简单。
在线演示
您可以直接从模型库的页面测试我们的大部分模型。我们还提供私有模型托管、版本控制和推理API,用于公共和私有模型。
以下是一些示例:
在自然语言处理中
- 使用BERT进行掩码词完成
- 使用Electra进行命名实体识别
- 使用Mistral进行文本生成
- 使用RoBERTa进行自然语言推理
- 使用BART进行摘要
- 使用DistilBERT进行问答
- 使用T5进行翻译
在计算机视觉领域
- 使用ViT进行图像分类
- 使用DETR进行目标检测
- 使用SegFormer进行语义分割
- 使用Mask2Former进行全景分割
- 使用Depth Anything进行深度估计
- 使用VideoMAE进行视频分类
- 使用OneFormer进行通用分割
在音频领域
在多模态任务中
- 使用TAPAS进行表格问答
- 使用ViLT进行视觉问答
- 使用LLaVa进行图像描述
- 使用SigLIP进行零样本图像分类
- 使用LayoutLM进行文档问答
- 使用X-CLIP进行零样本视频分类
- 使用OWLv2进行零样本目标检测
- 使用CLIPSeg进行零样本图像分割
- 使用SAM进行自动掩码生成
使用Transformers的100个项目
Transformers不仅仅是一个使用预训练模型的工具包:它是一个围绕它和Hugging Face Hub构建的项目社区。我们希望Transformers能够帮助开发者、研究人员、学生、教授、工程师以及任何其他人构建他们的梦想项目。
为了庆祝Transformers的10万个星星,我们决定将焦点放在社区上,并创建了一个awesome-transformers页面,列出了在Transformers周围构建的100个令人难以置信的项目。
如果你拥有或使用一个你认为应该列入该列表的项目,请打开一个PR来添加它!
如果你需要Hugging Face团队提供的定制支持
快速浏览
要立即在给定输入(文本、图像、音频等)上使用模型,我们提供了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快速在新数据集上进行微调的教程,请参阅这篇教程。
为什么我应该使用变压器?
-
易于使用的最先进模型
- 在自然语言理解与生成、计算机视觉和音频任务上表现出高性能。
- 对教育者和从业者来说入门门槛低。
- 只需学习三个类,用户界面抽象少。
- 统一API,用于使用我们所有的预训练模型。
-
计算成本更低,碳足迹更小。
- 研究人员可以共享训练好的模型,而不是总是重新训练。
- 从业者可以减少计算时间和生产成本。
- 数十种架构,所有模态超过40万个预训练模型。
-
为模型的每个阶段选择合适的框架
- 用3行代码训练最先进的模型。
- 可以在TF2.0/PyTorch/JAX框架之间自由移动单个模型。
- 无缝选择训练、评估和生产所需的正确框架。
-
轻松定制模型或示例以满足您的需求
- 我们为每个架构提供示例,以重现原始作者发布的结果。
- 尽可能一致地公开模型内部结构。
- 模型文件可以独立于库使用,以便快速实验。
为什么不应该使用变压器?
- 这个库不是一个模块化工具箱,不是神经网络构建块。故意没有在模型文件中对代码进行重构,添加额外的抽象,以便研究人员可以快速迭代每个模型,而不必深入研究额外的抽象/文件。
- 训练API不是旨在与任何模型一起工作,而是针对库提供的模型进行优化。对于通用机器学习循环,您应该使用另一个库(可能是加速库)。
- 虽然我们尽力展示尽可能多的用例,但我们示例文件夹中的脚本只是示例。预计它们不会直接适用于您特定的问题,并且您可能需要更改几行代码来适应您的需求。
安装
使用pip
此存储库已在Python 3.8+、Flax 0.4.1+、PyTorch 1.11+和TensorFlow 2.6+上进行了测试。
您应该在虚拟环境中安装🤗 Transformers。如果您不熟悉Python虚拟环境,请查看用户指南。
首先,使用您打算使用的Python版本创建一个虚拟环境,并激活它。
然后,您需要安装Flax、PyTorch或TensorFlow中的至少一个。请参阅有关您平台特定安装命令的TensorFlow安装页面、PyTorch安装页面和/或Flax和Jax安装页面。
安装了这些后端之一后,可以使用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"
}
项目详情
transformers-4.45.1.tar.gz的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 9cace11072172df05ca6a694fcd1f5064a55b63285e492bd88f0ad1cec270f02 |
|
MD5 | 4a89dac4352158c2bcc7dc9d9045edee |
|
BLAKE2b-256 | 151f4d4c718c178b27268e5b9fa6112ebe82e190b703a984a51b0f743168ed49 |
transformers-4.45.1-py3-none-any.whl的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 21e3f47aa7256dbbfb5215937a3168a984c94432ce3a16b7908265807d62aee8 |
|
MD5 | 67c0fa330baa5be7779e876c4393afdb |
|
BLAKE2b-256 | 17f2f01ea29c8eff8e749d96525a17c2d3ec02656cec9a80c20fb3e74dba4b04 |