Transformers 文档
ExecuTorch
并获得增强的文档体验
开始使用
ExecuTorch
ExecuTorch
是一个端到端的解决方案,用于在移动和边缘设备(包括可穿戴设备、嵌入式设备和微控制器)上启用设备端推理功能。它是 PyTorch 生态系统的一部分,支持 PyTorch 模型的部署,并专注于可移植性、生产力和性能。
ExecuTorch 引入了定义明确的入口点,以执行特定于模型、设备和/或用例的优化,例如后端委托、用户定义的编译器转换、内存规划等。使用 ExecuTorch 准备 PyTorch 模型以在边缘设备上执行的第一步是导出模型。这是通过使用一个名为 torch.export
的 PyTorch API 实现的。
ExecuTorch 集成
我们正在开发一个集成点,以确保 🤗 Transformers 可以使用 torch.export
进行导出。此集成的目标不仅是实现导出,还要确保导出的工件可以被进一步降级和优化,以便在 ExecuTorch
中高效运行,尤其适用于移动和边缘用例。
一个配方模块,旨在使 PreTrainedModel
能够通过 torch.export
导出,特别是将仅解码器(decoder-only)的语言模型导出到 StaticCache
。此模块确保导出的模型与在 ExecuTorch
中进一步降级和执行兼容。
注意:此类专门设计用于支持使用 torch.export
的导出过程,以确保模型可以被进一步降级并在 ExecuTorch
中高效运行。
forward
< 来源 >( input_ids: Tensor cache_position: Tensor ) → torch.Tensor
模块的前向传递,与 ExecuTorch 运行时兼容。
此 forward 适配器主要有两个目的:
使模型与
torch.export
兼容:适配器将不支持的对象(例如Cache
)从计算图的输入和输出中隐藏,从而使模型能够使用torch.export
导出而不会遇到问题。确保与
ExecuTorch
运行时兼容:适配器将模型的前向签名与executorch/extension/llm/runner
中的签名进行匹配,确保导出的模型可以在ExecuTorch
中即开即用。
transformers.convert_and_export_with_cache
< 来源 >( model: PreTrainedModel example_input_ids: typing.Optional[torch.Tensor] = None example_cache_position: typing.Optional[torch.Tensor] = None dynamic_shapes: typing.Optional[dict] = None strict: typing.Optional[bool] = None ) → 导出的程序 (torch.export.ExportedProgram
)
参数
- model (
PreTrainedModel
) — 要导出的预训练模型。 - example_input_ids (
Optional[torch.Tensor]
) —torch.export
使用的示例输入词元 ID。 - example_cache_position (
Optional[torch.Tensor]
) —torch.export
使用的示例当前缓存位置。 - dynamic_shapes(
Optional[dict]
) —torch.export
使用的动态形状。 - strict(
Optional[bool]
) — 指示torch.export
使用torchdynamo
的标志。
返回
导出的程序 (torch.export.ExportedProgram
)
通过 torch.export
生成的导出程序。
将 PreTrainedModel
转换为可导出模块,并使用 torch.export
进行导出,确保导出的模型与 ExecuTorch
兼容。