後端委派的第三方依賴管理¶
免責聲明:我們正計畫圍繞委派重組儲存庫。 因此,其中一些準則將在未來進行變更。
委派可能依賴外部的第三方函式庫,以有效率地實作預先(AOT)partition()
或 preprocess()
函式,和/或實作執行階段函式,例如 init()
或 execute()
,或者以特定的方式執行測試。本指南旨在對委派可能依賴的不同類型的第三方依賴項進行分類,並提供關於如何包含它們的高階指導。
預先 (Ahead-of-Time) 依賴項¶
這包括委派的 partitioner()
和 preprocess()
函式使用的依賴項,以產生預先處理的結果,該結果將在稍後的執行階段使用。
根據 preprocess()
函式的實作方式,這可能是 Python 或 C++ 依賴項。本指南僅討論 Python AOT 依賴項。
準則
如果 ExecuTorch 已經包含您需要的依賴項,請盡可能優先使用它。
如果依賴項僅由
executorch/backends/<delegate_name>/
目錄中的檔案需要,則應以僅由該目錄下的程式碼使用的方式引入它。在安裝 ExecuTorch Python 套件時,不應預設安裝該依賴項。
更多詳細資訊請參閱 下方 的章節。
執行階段依賴項¶
此類別涵蓋委派執行階段程式碼使用的 C++ 依賴項。它可以簡單到只是一個用於實作某些委派運算符的第三方數學函式庫,也可以是一個處理委派的降階子圖的完整框架。
準則
在高層次上,「只為您使用的東西付費」應該是這些第三方依賴項的理想方法。
與 AOT 依賴項類似,此依賴項的使用也應僅限於委派執行階段原始碼檔案。
如果委派具有已經是
executorch/third-party
的一部分的依賴項,請盡可能嘗試使用它。這有助於在啟用委派時減小二進位檔大小。委派之外的 ExecuTorch 的其餘程式碼不應依賴於此依賴項。並且,當在編譯時停用委派時,它應該可以正確地建置和執行,而無需此依賴項。
更多詳細資訊請參閱 下方 的章節。
僅限測試的依賴項¶
某些函式庫或工具僅用於執行委派測試。根據測試的類型,它們可以是 Python 依賴項或 C++ 依賴項。
準則
對於 Python 測試依賴項,在安裝 ExecuTorch Python 套件時,不應預設安裝它。
對於 C++ 測試依賴項,即使在建置/啟用委派時,它也不應成為 ExecuTorch 執行階段的一部分。
其他考量¶
版本控制¶
明確和具體是首選。例如,PyPI 版本(或範圍)或 git 標籤/發布。
記錄依賴項¶
至少,在引入新的依賴項時,應在 executorch/backends/<delegate_name>/
下提供一些文件,其中包括:
引入新的第三方依賴項的理由
如何升級依賴項
新依賴項的任何特殊考量
在列出高階準則之後,現在讓我們討論實際包含委派依賴項的具體細節: