购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.6 Hugging Face生态系统

以Hugging Face Transformers库为基础,Hugging Face已经迅速发展成一个完整的生态系统,它由许多库和工具组成,以加速你的NLP和机器学习项目。Hugging Face生态系统主要由一系列库和Hub组成,如图1-9所示。库提供相关代码,而Hub提供预训练的模型权重、数据集、度量指标脚本等。本节我们将简要介绍各种组件而跳过Hugging Face Transformers库,因为我们已经讨论过它了,在后面的章节我们还会看到Hugging Face Transformers库的更多相关内容。

图1-9:Hugging Face生态系统概览

1.6.1 Hugging FaceHub

如前所述,迁移学习是推动Transformer成功的关键因素之一,因为它使重用预训练模型来完成新任务成为可能。因此,能够快速加载预训练模型并进行实验至关重要。

Hugging Face Hub拥有超过20 000个免费提供的模型。图1-10所示的筛选器用以筛选任务、框架、数据集等,从而帮助你快速找到有前途的候选项。正如我们在pipeline所看到的那样,在代码中加载一个有前途的模型实际上只需一行代码。这使得实验各种模型变得简单,从而允许你专注于项目的领域特定部分。

图1-10:Hugging Face Hub的模型页面,左侧显示筛选器,右侧显示模型列表

除了预训练模型之外,Hub还托管了用于度量指标的数据集和脚本,使你可以重现已发布的结果或为应用程序利用其他数据。

Hub还提供 Models (模型)和 Datasets (数据集)卡片,用于记录模型和数据集相关内容,以帮助你就它们是否适合你做出明智的决定。Hub最酷的功能之一是,你可以直接通过各种特定于任务的交互式小部件试用任何模型,如图1-11所示。

图1-11:Hugging Face Hub Model card示例:你可以通过右侧的inference小部件与模型进行交互

接下来我们介绍Hugging Face Tokenizers库。

PyTorch( https://oreil.ly/AyTYC )和TensorFlow( https://oreil.ly/JOKgq )也提供了自己的Hub,如果Hugging Face Hub上没有你所要的模型或数据集,那么你可以试试PyTorch和TensorFlow的Hub。

1.6.2 Hugging Face Tokenizers库

我们在本章看到的每个pipeline示例背后都有一个词元化(tokenization)步骤,该步骤将原始文本拆分为称为词元的更小部分。我们将在第2章详细介绍这个过程,但现在只需要知道词元可以是单词、单词的一部分或只是标点符号等字符就足够了。Transformer模型是在这些词元的数字表示上训练的,因此正确执行这一步对于整个NLP项目非常重要!

Hugging Face Tokenizers库( https://oreil.ly/Z79jF )提供了许多词元化策略,并且因为其后端使用Rust [13] ,所以词元化速度特别快。它还负责所有预处理和后处理步骤,例如规范化输入并将模型输出转换为所需的格式。我们可以像使用Hugging Face Transformers库加载预训练模型一样使用Hugging Face Tokenizers库加载Tokenizer。

我们还需要数据集和度量指标来训练和评估模型,我们先看一下数据集。

1.6.3 Hugging Face Datasets库

加载、处理和存储数据集可能是一个烦琐的过程,尤其是当数据集变得太大而无法放入笔记本电脑内存的时候。此外,你通常需要实现各种脚本来下载数据并将其转换为标准格式。

Hugging Face Datasets库( https://oreil.ly/959YT )通过为可在Hub( https://oreil.ly/Rdhcu )上找到的数千个数据集提供标准界面来简化这个过程。它还提供智能缓存(因此你不需要每次运行代码时都重复预处理工作),并通过利用称为内存映射的特殊机制来突破内存限制,该机制将文件的内容存储到虚拟内存中,并使多个进程能够更有效地修改文件。该库还可以与Pandas和NumPy等流行框架进行互操作,因此你不必离开自己喜欢的数据整理工具。

但是,如果你无法可靠地度量性能,那么良好的数据集和强大的模型就毫无价值。不幸的是,经典的NLP度量指标带有许多不同的实现,这些实现可能会略有不同并产生欺骗性结果。Hugging Face Datasets库通过为许多指标提供脚本,从而有助于令实验更具可重复性,结果更可信。

现在借助Hugging Face Transformers、Tokenizers和Datasets这些库,我们拥有训练自己的Transformer模型所需的一切!然而,正如我们将在第10章所看到的,在某些情况下,我们需要对训练循环进行细粒度的控制。这就是生态系统的最后一个库发挥作用的地方:Hugging Face Accelerate库。

1.6.4 Hugging Face Accelerate库

如果你曾经不得不用PyTorch编写自己的训练脚本,那么在尝试将笔记本电脑上运行的代码移植到组织集群上运行的代码时,你可能会遇到一些麻烦。Hugging Face Accelerate库( https://oreil.ly/iRfDe )为常规训练操作增加了一个抽象层以负责训练基础设施所需的所有逻辑。这可以通过在必要时简化基础架构的更改来加速工作流。

至此,我们总结了Hugging Face开源生态系统的核心组件。但在结束本章之前,我们来看看在现实工作中部署Transformer模型时遇到的一些主要挑战。 2B6bEe2xeQV+CBpiEIujzlM86h3No1tINq8cI6dJPNKqW7vv9/87toMxBE++VQAX

点击中间区域
呼出菜单
上一章
目录
下一章
×