ExecuTorch
ExecuTorch
是一种端到端解决方案,用于在移动和边缘设备(包括可穿戴设备、嵌入式设备和微控制器)上启用设备端推理功能。它是 PyTorch 生态系统的一部分,支持 PyTorch 模型的部署,重点关注可移植性、生产力和性能。
ExecuTorch 引入了明确定义的入口点,用于执行模型、设备和/或用例特定的优化,例如后端委托、用户定义的编译器转换、内存规划等。使用 ExecuTorch 将 PyTorch 模型准备好在边缘设备上执行的第一步是导出模型。这可以通过使用称为 torch.export
的 PyTorch API 来实现。
ExecuTorch 集成
正在开发一个集成点,以确保 🤗 Transformers 可以使用 torch.export
导出。此集成的目标不仅是为了启用导出,而且是为了确保导出的工件可以进一步降低和优化,以便在 ExecuTorch
中高效运行,特别是针对移动和边缘用例。
一个包装模块,旨在使 PreTrainedModel
可以使用 torch.export
导出,特别是用于静态缓存。此模块确保导出的模型与 ExecuTorch
中的进一步降低和执行兼容。
注意:此类专门设计用于支持使用 torch.export
的导出过程,以确保模型可以进一步降低并在 ExecuTorch
中高效运行。
forward
< 源代码 >( input_ids: Tensor cache_position: Tensor ) → torch.Tensor
模块的前向传递,与 ExecuTorch 运行时兼容。
此前向适配器有两个主要目的
使模型与
torch.export
兼容:适配器隐藏了图输入和输出中不受支持的对象(例如Cache
),使模型可以使用torch.export
导出,而不会遇到问题。确保与
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
)
将 PreTrainedModel
转换为可导出模块,并使用 torch.export
导出它,确保导出的模型与 ExecuTorch
兼容。