Transformers 文档

ExecuTorch

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始

ExecuTorch

ExecuTorch 是一个端到端的解决方案,旨在为移动和边缘设备(包括可穿戴设备、嵌入式设备和微控制器)实现设备端推理能力。它是 PyTorch 生态系统的一部分,支持 PyTorch 模型的部署,重点关注可移植性、生产力和性能。

ExecuTorch 引入了明确定义的入口点,以执行模型、设备和/或用例特定的优化,例如后端委托、用户定义的编译器转换、内存规划等。准备 PyTorch 模型以在边缘设备上使用 ExecuTorch 执行的第一步是导出模型。这通过使用名为 torch.export 的 PyTorch API 来实现。

ExecuTorch 集成

正在开发一个集成点,以确保 🤗 Transformers 可以使用 torch.export 导出。此集成的目标不仅是启用导出,还要确保导出的工件可以进一步降低和优化,以便在 ExecuTorch 中高效运行,特别是对于移动和边缘用例。

class transformers.TorchExportableModuleWithStaticCache

< >

( model: PreTrainedModel )

一个包装模块,旨在使 PreTrainedModel 可通过 torch.export 导出,专门用于静态缓存。此模块确保导出的模型与在 ExecuTorch 中进一步降低和执行兼容。

注意:此类专门设计用于支持使用 torch.export 的导出过程,以确保模型可以进一步降低并在 ExecuTorch 中高效运行。

forward

< >

( input_ids: Tensor cache_position: Tensor ) torch.Tensor

参数

  • input_ids (torch.Tensor) — 表示模块当前输入 token id 的 Tensor。
  • cache_position (torch.Tensor) — 表示缓存中当前输入位置的 Tensor。

返回

torch.Tensor

模型输出的 Logits。

模块的前向传递,与 ExecuTorch 运行时兼容。

此前向适配器有两个主要目的

  1. 使模型与 torch.export 兼容:适配器从图形输入和输出中隐藏不受支持的对象(例如 Cache),从而使模型能够使用 torch.export 导出而不会遇到问题。

  2. 确保与 ExecuTorch 运行时兼容:适配器将模型的 forward 签名与 executorch/extension/llm/runner 中的签名匹配,确保导出的模型可以在 ExecuTorch 中开箱即用。

transformers.convert_and_export_with_cache

< >

( model: PreTrainedModel example_input_ids: Tensor = None example_cache_position: Tensor = None ) Exported program (torch.export.ExportedProgram)

参数

  • model (PreTrainedModel) — 要导出的预训练模型。
  • example_input_ids (torch.Tensor) — torch.export 使用的示例输入 token id。
  • example_cache_position (torch.Tensor) — torch.export 使用的示例当前缓存位置。

返回

Exported program (torch.export.ExportedProgram)

通过 torch.export 生成的导出程序。

PreTrainedModel 转换为可导出的模块,并使用 torch.export 导出,确保导出的模型与 ExecuTorch 兼容。

< > 在 GitHub 上更新