Optimum 文档

概览

您正在查看的是需要从源码安装。如果您想进行常规 pip 安装,请查看最新的稳定版本 (v1.27.0)。
Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

概述

🤗 Optimum 提供了一个名为 BetterTransformer 的 API,它是标准 PyTorch Transformer API 的快速路径,可以通过稀疏性和融合核(如 Flash Attention)在 CPU 和 GPU 上获得显著的速度提升。目前,BetterTransformer 支持原生 nn.TransformerEncoderLayer 的快速路径,以及 torch.nn.functional.scaled_dot_product_attention 的 Flash Attention 和 Memory-Efficient Attention。

快速入门

自 1.13 版本以来,PyTorch 发布了其标准 Transformer API 的快速路径稳定版本,为基于 Transformer 的模型提供了开箱即用的性能改进。您可以在大多数消费型设备(包括 CPU、NVIDIA GPU 的旧版本和新版本)上获得显著的速度提升。现在,您可以在 🤗 Optimum 中将此功能与 Transformers 一起使用,并将其用于 Hugging Face 生态系统中的主要模型。

在 2.0 版本中,PyTorch 包含一个原生缩放点积注意力运算符(SDPA),作为 torch.nn.functional 的一部分。此函数包含多种实现,可根据输入和所使用的硬件进行应用。有关更多信息,请参阅官方文档,并参阅此博客文章以了解基准测试。

我们在 🤗 Optimum 中提供了对这些优化的开箱即用集成,以便您可以转换任何受支持的 🤗 Transformers 模型,以便在相关时使用优化路径和 scaled_dot_product_attention 函数。

PyTorch 原生的 `scaled_dot_product_attention` 正在逐步 [在 🤗 Transformers 中默认集成](https://huggingface.co/docs/transformers/perf_infer_gpu_one#flashattention-and-memory-efficient-attention-through-pytorchs-scaleddotproductattention)。对于在 Transformers 中支持 SDPA 的模型,我们已弃用 BetterTransformer,并建议您直接使用 Transformers 和 PyTorch 的最新版本,通过 SDPA 进行注意力优化(Flash Attention、内存高效注意力)。
PyTorch 原生的 `scaled_dot_product_attention` 运算符只有在未提供 `attention_mask` 的情况下才能调度到 Flash Attention。

因此,默认情况下,在训练模式下,BetterTransformer 集成会**放弃对掩码的支持,并且只能用于不需要填充掩码的批处理训练**。例如,这适用于掩码语言建模或因果语言建模。BetterTransformer 不适用于对需要填充掩码的任务进行模型微调。

在推理模式下,为了正确性保留了填充掩码,因此只有在批处理大小 = 1 的情况下才能预期速度提升。

支持的模型

以下是支持的模型列表

如果您希望支持更多模型,请在 🤗 Optimum 中提出 issue,或者如果您想自己添加模型,请查看贡献指南

快速使用

要使用 BetterTransformer API,只需运行以下命令

>>> from transformers import AutoModelForSequenceClassification
>>> from optimum.bettertransformer import BetterTransformer
>>> model_hf = AutoModelForSequenceClassification.from_pretrained("bert-base-cased")
>>> model = BetterTransformer.transform(model_hf, keep_original_model=True)

如果您想用 BetterTransformer 版本覆盖当前模型,可以将 keep_original_model=False

有关如何深入理解其用法的更多详细信息,请参阅 tutorials 部分,或查看 Google colab 演示

< > 在 GitHub 上更新

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