後端委託的第三方依賴管理¶
免責宣告:我們計劃圍繞委託重組倉庫。未來這些指南可能會有所變化。
委託可能依賴外部第三方庫來高效地實現提前編譯 (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>/ 下提供一些文件,其中包括:
引入新的第三方依賴項的理由
如何升級依賴項
新依賴項的任何特殊考量
在列出高階指南後,現在我們來討論實際為您的委託包含依賴項的具體方法,