将后端代理集成到 ExecuTorch¶
免责声明:我们计划重构代理相关的仓库。因此,其中一些指南将来会发生变化。
这是将后端代理与 ExecuTorch 集成的高级指南。
目录结构¶
代理文件应放在此目录下: executorch/backends/<delegate_name>/
。代理名称必须是唯一的。
Python 源文件¶
Delegate Python 文件,例如为 ExecuTorch AOT 流实现的 preprocess()
或 partition()
函数,不包括任何外部第三方依赖项及其文件,应随顶级 ExecuTorch 包一起安装并可用。对于第三方依赖项,请参阅 此处。
C++ 源文件¶
至少,代理必须提供 CMake 支持来构建其 C++ 源文件。
对于 CMake 设置,应使用 add_subdirectory
CMake 命令将代理目录包含在顶级 CMakeLists.txt
文件中,并应使用 ExecuTorch 构建标志(如 EXECUTORCH_BUILD_<DELEGATE_NAME>
)有条件地构建,请参阅 EXECUTORCH_BUILD_XNNPACK
作为示例。对于第三方依赖项,请参阅 此处。
测试¶
测试应添加到 executorch/backends/<delegate_name>/test
下。测试可以是 Python 或 C++ 测试。有关添加更复杂的端到端 (e2e) 测试,请与我们联系。
常见的测试类型
简单的 Python 单元测试,用于测试 AOT 逻辑,例如
partitioner()
或 AOT 导出流(从nn.Module
生成.pte
文件)。运行时 C++ 测试,使用 gtest,用于测试代理的
init()
或execute()
运行时逻辑。
文档¶
代理必须包含一个 executorch/backends/<delegate_name>/README.md
文件,其中解释了代理的基本知识、目录结构、功能以及已知问题(如有)。
除上述步骤之外的任何额外设置步骤都应记录在 executorch/backends/<delegate_name>/setup.md
中。