• 文件 >
  • 後端委託的第三方依賴管理
快捷方式

後端委託的第三方依賴管理

免責宣告:我們計劃圍繞委託重組倉庫。未來這些指南可能會有所變化。

委託可能依賴外部第三方庫來高效地實現提前編譯 (AOT) 的 partition()preprocess() 函式,以及/或者實現執行時函式,如 init()execute(),或以特定方式執行測試。本指南旨在對委託可能依賴的不同型別的第三方依賴項進行分類,並提供關於如何包含它們的高階指導。

提前編譯 (AOT) 依賴項

這包括委託的 partitioner()preprocess() 函式使用的依賴項,用於生成預處理結果,該結果將在執行時使用。

根據 preprocess() 函式的實現方式,這可以是 Python 或 C++ 依賴項。本指南僅討論 Python AOT 依賴項。

指南

  • 如果 ExecuTorch 已包含您需要的依賴項,優先使用現有依賴項。

  • 如果依賴項僅在 executorch/backends/<delegate_name>/ 目錄內的檔案需要,則應以僅限該目錄下程式碼使用的方式引入。

  • 安裝 ExecuTorch Python 包時,不應預設安裝此依賴項。

更多詳情請參見 下方 的章節。

執行時依賴項

此類別涵蓋委託執行時程式碼使用的 C++ 依賴項。它可以是實現某個委託運算元的簡單第三方數學庫,也可以是處理委託下沉子圖的整個框架。

指南

總的來說,“按需付費”應該是處理這些第三方依賴項的首選方法。

  • 與 AOT 依賴項類似,其使用也應僅限於委託執行時原始檔。

  • 如果委託的依賴項已是 executorch/third-party 的一部分,則儘可能嘗試使用現有依賴項。這有助於在啟用委託時減小二進位制檔案大小。

  • ExecuTorch 程式碼中除委託之外的其他部分不應依賴此項。並且在構建時停用委託後,ExecuTorch 應該能夠在沒有此依賴項的情況下正確構建和執行。

更多詳情請參見 下方 的章節。

僅用於測試的依賴項

某些庫或工具僅用於執行委託測試。根據測試型別,這可以是 Python 依賴項或 C++ 依賴項。

指南

  • 對於 Python 測試依賴項,安裝 ExecuTorch Python 包時,不應預設安裝此依賴項。

  • 對於 C++ 測試依賴項,即使在構建/啟用委託時,它也不應成為 ExecuTorch 執行時的一部分。

其他考量

版本控制

首選明確和具體的版本。例如,一個 PyPI 版本(或範圍)或一個 git 標籤/版本。

文件化依賴項

至少,在引入新的依賴項時,應在 executorch/backends/<delegate_name>/ 下提供一些文件,其中包括:

  • 引入新的第三方依賴項的理由

  • 如何升級依賴項

  • 新依賴項的任何特殊考量


在列出高階指南後,現在我們來討論實際為您的委託包含依賴項的具體方法,

Python 依賴項

Python 包管理複雜且不斷發展。對於委託依賴項,我們建議委託在 executorch/backends/<delegate_name>/requirements.txt 檔案中指定其第三方依賴項,以便在安裝時提供給 pip。目標是將它們與核心 ExecuTorch 依賴項解耦。

應儘量避免版本衝突,如果可能,嘗試使用 ExecuTorch 或其他後端已包含的依賴項。否則,嘗試採用其他 推薦 的方法來緩解版本衝突。

本地 Python 包

如果是 git 倉庫,應作為 git submodule 新增。

C++ 依賴項

推薦的方法是在 executorch/backends/<delegate_name>/third-party 目錄中為給定的 C++ 依賴項新增 git submodule。

CMake 支援

最低要求是支援 CMake。

文件

查閱 PyTorch 全面開發者文件

檢視文件

教程

獲取針對初學者和高階開發者的深入教程

檢視教程

資源

查詢開發資源並解答您的疑問

檢視資源