并获得增强的文档体验
开始使用
ExecuTorch
ExecuTorch 是一个端到端的解决方案,旨在让包括可穿戴设备、嵌入式设备和微控制器在内的移动和边缘设备具备设备端推理能力。它是 PyTorch 生态系统的一部分,支持 PyTorch 模型的部署,并专注于便携性、生产力和性能。
ExecuTorch 引入了定义良好的入口点,以执行特定于模型、设备和/或用例的优化,例如后端委托、用户定义的编译器转换、内存规划等。使用 ExecuTorch 准备在边缘设备上执行 PyTorch 模型的第一步是导出模型。这通过使用名为 torch.export 的 PyTorch API 来实现。
ExecuTorch 集成
正在开发一个集成点,以确保 🤗 Transformers 可以使用 torch.export 进行导出。此集成的目标不仅是启用导出,还要确保导出的产物可以进一步下放(lower)和优化,以便在 ExecuTorch 中高效运行,特别是针对移动和边缘用例。
class transformers.TorchExportableModuleWithStaticCache
< source >( model: PreTrainedModel batch_size: int | None = None max_cache_len: int | None = None device: torch.device | None = None )
一个配方(recipe)模块,旨在使 PreTrainedModel 可以通过 torch.export 导出,特别适用于带有 StaticCache 的仅解码器语言模型(decoder-only LM)。该模块可确保导出的模型与 ExecuTorch 中的进一步下放和执行兼容。
注意:此类专门用于支持使用 torch.export 的导出过程,以确保模型可以进一步下放并在 ExecuTorch 中高效运行。
forward
< source >( input_ids: torch.LongTensor | None = None inputs_embeds: torch.Tensor | None = None cache_position: torch.Tensor | None = None ) → torch.Tensor
模块的前向传播,与 ExecuTorch 运行时兼容。
此前向适配器有两个主要用途
使模型兼容
torch.export:该适配器从图的输入和输出中隐藏了不支持的对象(如Cache),从而使模型能够使用torch.export导出而不会遇到问题。确保与
ExecuTorch运行时的兼容性:该适配器将模型的前向签名与executorch/extension/llm/runner中的签名匹配,确保导出的模型可以开箱即用地在ExecuTorch中执行。
transformers.convert_and_export_with_cache
< source >( model: PreTrainedModel example_input_ids: torch.Tensor | None = None example_cache_position: torch.Tensor | None = None dynamic_shapes: dict | None = None strict: bool | None = None ) → 导出程序 (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使用torchdynamo的标志。
返回
导出程序 (torch.export.ExportedProgram)
通过 torch.export 生成的导出程序。
将 PreTrainedModel 转换为可导出的模块,并使用 torch.export 将其导出,确保导出的模型与 ExecuTorch 兼容。