Transformers documentation

ExecuTorch

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

ExecuTorch

ExecuTorch 是一种端到端解决方案,旨在为包括可穿戴设备、嵌入式设备和微控制器在内的移动及边缘设备提供端侧推理能力。它属于 PyTorch 生态系统的一部分,支持部署 PyTorch 模型,并专注于可移植性、生产力和性能。

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

ExecuTorch 集成

正在开发一个集成点,以确保 🤗 Transformers 能够通过 torch.export 进行导出。该集成的目标不仅是实现导出,还要确保导出的产物能够进一步降低和优化,从而在 ExecuTorch 中高效运行,特别是针对移动和边缘用例。

class transformers.TorchExportableModuleWithStaticCache

< >

( model: PreTrainedModelbatch_size: int | None = Nonemax_cache_len: int | None = Nonedevice: typing.Optional[torch.device] = None )

一个配方模块,旨在使 PreTrainedModel 能够通过 torch.export 进行导出, 专门用于将仅解码器语言模型导出为 StaticCache。该模块确保 导出的模型兼容 ExecuTorch 中的进一步降低和运行。

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

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonecache_position: typing.Optional[torch.Tensor] = None ) → torch.Tensor

参数

  • input_ids (torch.Tensor) — 表示输入到该模块的当前输入 token id 的张量。
  • inputs_embeds (torch.Tensor) — 表示当前输入到模块的嵌入张量。
  • 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: PreTrainedModelexample_input_ids: typing.Optional[torch.Tensor] = Noneexample_cache_position: typing.Optional[torch.Tensor] = Nonedynamic_shapes: dict | None = Nonestrict: bool | None = None ) → Exported program (torch.export.ExportedProgram)

参数

  • model (PreTrainedModel) — 要导出的预训练模型。
  • example_input_ids (Optional[torch.Tensor]) — 供 torch.export 使用的示例输入 token id。
  • example_cache_position (Optional[torch.Tensor]) — torch.export 使用的当前缓存位置示例。
  • dynamic_shapes(Optional[dict]) — 供 torch.export 使用的动态形状。
  • strict(Optional[bool]) — 指示 torch.export 使用 dynamo 的标志。

返回值

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

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

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

Update on GitHub