Transformers 文档

ExecuTorch

ExecuTorch

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

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

ExecuTorch 集成

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

transformers.TorchExportableModuleWithStaticCache

< >

( model: PreTrainedModel )

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

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

前进

< >

( input_ids: Tensor cache_position: Tensor ) torch.Tensor

参数

  • input_ids (torch.Tensor) — 表示当前输入到模块的令牌ID的张量。
  • cache_position (torch.Tensor) — 表示当前输入在缓存中的位置的张量。

返回

torch.Tensor

模型输出的Logits。

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

这个转发适配器有两个主要目的:

  1. 使模型兼容torch.export: 适配器隐藏了图中不支持的输入和输出对象,例如Cache, 使得模型可以使用torch.export进行导出而不会遇到问题。

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

transformers.convert_and_export_with_cache

< >

( model: PreTrainedModel example_input_ids: Tensor = None example_cache_position: Tensor = None ) 导出的程序 (torch.export.ExportedProgram)

参数

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

返回

导出的程序 (torch.export.ExportedProgram)

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

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

< > Update on GitHub