后端委托的第三方依赖项管理¶
免责声明:我们计划围绕委托重组存储库。 因此,其中一些准则将来会发生变化。
委托可能依赖于外部第三方库来高效地
实现预先 (AOT) 或函数,和/或
实现运行时函数(如 或 )或运行测试
以特定的方式。本指南旨在对不同类型的第三方进行分类
委托人可能依赖的依赖项,并提供有关
如何包含它们。partition()
preprocess()
init()
execute()
预先依赖项¶
这包括委托 和 函数用于生成预处理结果的依赖项,该
将在稍后的运行时使用。partitioner()
preprocess()
根据函数的实现方式,这可以是
Python 或 C++ 依赖项。本指南将仅讨论 Python AOT 依赖项。preprocess()
指引:
如果 ExecuTorch 已经包含您需要的依赖项,请首选 如果可能的话,使用它。
如果依赖项仅由目录内的文件需要,则应在 方式,使其仅由该目录下的代码使用。
executorch/backends/<delegate_name>/
安装时默认不安装依赖项 ExecuTorch Python 包。
更多详细信息,请参阅以下部分。
运行时依赖项¶
此类别涵盖委托运行时代码使用的 C++ 依赖项。 它可以像第三方数学库一样简单,实现一些 delegate 运算符,也可以是处理降低的 代表的 subgraph 中。
指引:
概括地说,“只按使用量付费”应该是理想的方法 对于这些第三方依赖项。
与 AOT 依赖项类似,此依赖项的使用也应仅限于 仅委托运行时源文件。
如果委托具有已是 Part Part 的依赖项,请尽可能尝试使用该依赖项。这 有助于在启用委托时减小二进制大小。
executorch/third-party
委托之外的其余 ExecuTorch 代码不应依赖于 这。它应该在没有这种依赖的情况下正确构建和运行 在构建时禁用委托时。
更多详细信息,请参阅以下部分。
仅测试依赖项¶
某些库或工具仅用于执行委托测试。这些 可以是 Python 依赖项或 C++ 依赖项,具体取决于 测试。
指引:
对于 Python 测试依赖项,在以下情况下,默认情况下不应安装它 安装 ExecuTorch Python 包。
对于 C++ 测试依赖项,它不应是 ExecuTorch 运行时的一部分 即使构建/启用了委托。
其他注意事项¶
版本控制¶
Explicit 和 Specific 是首选。例如,PyPI 版本(或范围)或 git 标签/release。
记录依赖关系¶
在引入新的依赖项时,至少应提供一些文档,其中包括:executorch/backends/<delegate_name>/
引入新的第三方依赖项的基本原理
如何升级依赖项
新依赖项的任何特殊注意事项
在列出了高级准则之后,我们现在来谈谈具体的 logistics 实际包含委托人的依赖项,
Python 依赖项¶
Python 打包很复杂且不断发展。对于代表
dependencies,我们建议委托指定其第三方
dependencies under to be (要成为)
在安装时提供给 pip。目标是将它们与核心解耦
ExecuTorch 依赖项。executorch/backends/<delegate_name>/requirements.txt
应该通过尝试使用已经使用的依赖项来避免版本冲突 由 ExecuTorch 或其他后端(如果可能)包含。否则,请尝试一些 缓解版本冲突的其他推荐方法。
本地 Python 包¶
如果它是一个 git 仓库,则应将其添加为 git 子模块。