ExecuTorch
ExecuTorch
是一个端到端的解决方案,用于在移动和边缘设备(包括可穿戴设备、嵌入式设备和微控制器)上启用设备端推理能力。它是 PyTorch 生态系统的一部分,支持 PyTorch 模型的部署,重点关注可移植性、生产力和性能。
ExecuTorch 引入了定义良好的入口点,以执行模型、设备和/或特定用例的优化,例如后端委托、用户定义的编译器转换、内存规划等。使用 ExecuTorch 在边缘设备上执行 PyTorch 模型的第一步是导出模型。这是通过使用一个名为 torch.export
的 PyTorch API 来实现的。
ExecuTorch 集成
正在开发一个集成点,以确保🤗 Transformers可以使用torch.export
导出。此集成的目标不仅是实现导出,还要确保导出的工件可以进一步降低和优化,以便在ExecuTorch
中高效运行,特别是在移动和边缘用例中。
一个包装模块,旨在使PreTrainedModel
可以通过torch.export
导出,特别适用于静态缓存。该模块确保导出的模型与ExecuTorch
中的进一步降低和执行兼容。
注意:
此类专门设计用于支持使用torch.export
的导出过程,以确保模型可以进一步降低并在ExecuTorch
中高效运行。
前进
< source >( 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
< source >( model: PreTrainedModel example_input_ids: Tensor = None example_cache_position: Tensor = None ) → 导出的程序 (torch.export.ExportedProgram
)
将PreTrainedModel
转换为可导出的模块,并使用torch.export
导出,确保导出的模型与ExecuTorch
兼容。