• 文件 >
  • 後端委派的第三方依賴管理
捷徑

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

免責聲明:我們正計畫圍繞委派重組儲存庫。 因此,其中一些準則將在未來進行變更。

委派可能依賴外部的第三方函式庫,以有效率地實作預先(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>/ 下提供一些文件,其中包括:

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

  • 如何升級依賴項

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


在列出高階準則之後,現在讓我們討論實際包含委派依賴項的具體細節:

Python 依賴項

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

應盡可能嘗試使用 ExecuTorch 或其他後端已包含的依賴項來避免版本衝突。否則,請嘗試其他 建議的 方法來減輕版本衝突。

本機 Python 套件

如果它是 git 儲存庫,則應將其新增為 git 子模組。

C++ 依賴項

建議的方法是在 executorch/backends/<delegate_name>/third-party 目錄中包含給定 C++ 依賴項的 git 子模組。

CMake 支援

至少需要 CMake 支援。

文件

存取 PyTorch 的綜合開發人員文件

檢視文件

教學

取得初學者和進階開發人員的深入教學課程

檢視教學課程

資源

尋找開發資源並獲得您的問題解答

檢視資源