ExecuTorch
ExecuTorch 是一种端到端的解决方案,用于启用各种移动设备和边缘设备(包括可穿戴设备、嵌入式设备和微控制器)上的推理能力。它是 PyTorch Edge 生态系统的一部分,能够高效地将 PyTorch 模型部署到边缘设备。
ExecuTorch 的主要价值主张是:
- 可移植性: 与多种计算平台兼容,从高端手机到高度受限的嵌入式系统和微控制器。
- 生产力: 能够让开发者使用相同的工具链和 SDK,从 PyTorch 模型的创建和转换,到调试和部署到各种平台。
- 性能: 由于轻量级的运行时和利用 CPU、NPU 和 DSP 等全部硬件能力,为最终用户提供无缝且高性能的体验。
有关 ExecuTorch 的全面技术概述和分步教程,请访问我们的文档网站 最新版本(或主分支)。
查看 入门 页面快速体验。
反馈
我们欢迎社区提供任何反馈、建议和错误报告,以帮助我们改进技术。请使用 PyTorch 论坛 的 ExecuTorch 分类进行讨论和反馈,并使用我们的 GitHub 仓库 进行错误报告。
我们建议在开发时使用 Releases 页面上的最新发布标签。
贡献
有关问题、PR、代码风格、CI 任务和其他开发主题的详细信息,请参见 CONTRIBUTING.md。
目录结构
executorch
├── backends # 后端委托实现。
├── build # 管理构建系统的工具。
├── codegen # 用于在内核和运行时之间自动生成绑定的工具。
├── configurations
├── docs # 静态文档工具。
├── examples # 各种用户流程的示例,如模型导出、委托和运行时执行。
├── exir # 提前编译的库:模型捕获和降低 API。
| ├── _serialize # 序列化最终导出工件。
| ├── backend # 提前编译的后端委托 API。
| ├── capture # 程序捕获。
| ├── dialects # 导出过程中各种方言的操作集。
| ├── emit # 从导出的程序转换为 ExecuTorch 执行指令。
| ├── operator # 操作节点操作工具。
| ├── passes # 内置编译器传递。
| ├── program # 导出工件。
| ├── serde # 图形模块序列化/反序列化。
| ├── verification # IR 验证。
├── extension # 在运行时之上构建的扩展。
| ├── android # Android 应用的 ExecuTorch 包装器。
| ├── apple # iOS 应用的 ExecuTorch 包装器。
| ├── aten_util # 转换为 PyTorch ATen 类型并从中转换。
| ├── data_loader # 第三方数据加载器实现。
| ├── evalue_util # 用于处理 EValue 对象的助手。
| ├── gguf_util # 将工具从 GGUF 格式转换。
| ├── kernel_util # 用于注册内核的工具。
| ├── memory_allocator # 第三方内存分配器实现。
| ├── module # 运行时的简化 C++ 包装器。
| ├── parallel # C++ 线程池集成。
| ├── pybindings # ExecuTorch 运行时的 Python API。
| ├── pytree # 用于 pytrees 的 C++ 和 Python 扁平化和反扁平化库。
| ├── runner_util # 用于编写 C++ PTE 执行工具的助手。
| ├── testing_util # 编写 C++ 测试的助手。
| ├── training # 用于设备上训练的实验库。
├── kernels # 第三方内核实现。
| ├── aten
| ├── optimized
| ├── portable # ATen 操作的参考实现。
| ├── prim_ops # 用于控制流和符号原语的 ExecuTorch 运行时中的特殊操作。
| ├── quantized
├── profiler # 运行时执行的剖析工具。
├── runtime # 核心 C++ 运行时。
| ├── backend # 后端委托运行时 API。
| ├── core # 在运行时所有层级中使用的核心结构。
| ├── executor # 模型加载、初始化和执行。
| ├── kernel # 内核注册和管理。
| ├── platform # 架构特定代码和可移植 C++ 之间的层。
├── schema # ExecuTorch PTE 文件格式 flatbuffer 模式。
├── scripts # 用于尺寸管理、依赖管理等的实用脚本。
├── sdk # 模型分析、调试和内省。
├── shim # OSS 和内部构建之间的兼容层。
├── test # 广泛的端到端测试。
├── third-party # 第三方依赖。
├── util # 各种助手和脚本。
许可证
ExecuTorch 采用 BSD 许可协议,如 LICENSE 文件中所述。