引言
正如你在 第 1 章 中看到的,Transformer 模型通常非常庞大。它们拥有数百万甚至数百亿个参数,因此训练和部署这些模型是一项复杂的任务。此外,随着新模型几乎每天都在发布,并且每个模型都有其自己的实现,尝试所有这些模型绝非易事。
🤗 Transformers 库的创建就是为了解决这个问题。其目标是提供一个单一的 API,通过该 API 可以加载、训练和保存任何 Transformer 模型。该库的主要功能包括:
- 易用性:只需两行代码即可下载、加载和使用最先进的 NLP 模型进行推理。
- 灵活性:从本质上讲,所有模型都是简单的 PyTorch
nn.Module
或 TensorFlowtf.keras.Model
类,可以像其各自机器学习 (ML) 框架中的任何其他模型一样进行处理。 - 简洁性:整个库中几乎没有进行任何抽象。 “全部在一个文件中” 是一个核心概念:模型的前向传递完全在一个文件中定义,因此代码本身易于理解和修改。
最后一个特性使 🤗 Transformers 与其他 ML 库截然不同。这些模型并非构建在跨文件共享的模块上;相反,每个模型都有自己的层。除了使模型更易于访问和理解之外,这还允许你轻松地在一个模型上进行实验,而不会影响其他模型。
本章将从一个端到端的示例开始,在这个示例中,我们将一起使用模型和分词器来复制在 第 1 章 中介绍的 pipeline()
函数。接下来,我们将讨论模型 API:我们将深入探讨模型和配置类,并向你展示如何加载模型以及它如何处理数值输入以输出预测。
然后,我们将了解分词器 API,它是 pipeline()
函数的另一个主要组成部分。分词器负责处理第一步和最后一步,处理将文本转换为神经网络的数值输入,并在需要时将其转换回文本。最后,我们将向你展示如何处理将多个句子通过模型发送到准备好的批次中,然后总结所有内容,并更详细地介绍高级 tokenizer()
函数。
⚠️ 为了充分利用 Model Hub 和 🤗 Transformers 提供的所有功能,我们建议你 创建一个账户。