• 文件 >
  • ExecuTorch 工作原理
快捷方式

本頁介紹 ExecuTorch 的工作原理及其主要優勢。

ExecuTorch 工作原理

概括而言,使用 ExecuTorch 在筆記型電腦、手機、可穿戴裝置和物聯網裝置等端側裝置上執行 PyTorch 模型主要包含三個步驟。

  1. 匯出模型。第一步是將 PyTorch 程式捕獲為圖,這是模型的一種新表示,可以用一系列運算元(例如加法、乘法或卷積)來表達。此過程安全地保留了原始 PyTorch 程式的語義。這種表示形式是在記憶體和/或計算能力較低的端側場景中執行模型的第一步。

  2. 將匯出的模型編譯為 ExecuTorch 程式。根據步驟 1 匯出的模型,將其轉換為執行時可用於推理的可執行格式,稱為 ExecuTorch 程式。此步驟為各種最佳化提供了入口點,例如壓縮模型(例如,量化)以減小尺寸,以及進一步將子圖編譯到裝置上的專用硬體加速器以提高延遲。它還為記憶體規劃提供了入口點,即有效地規劃中間張量的位置,以減少執行時記憶體佔用。

  3. 在目標裝置上執行 ExecuTorch 程式。給定輸入(例如表示為輸入啟用張量的影像),ExecuTorch 執行時載入 ExecuTorch 程式,執行程式表示的指令,並計算輸出。此步驟效率很高,因為 (1) 執行時很輕量,並且 (2) 步驟 1 和步驟 2 中已經計算出高效的執行計劃,使得能夠進行高效能推理。此外,核心執行時的可移植性使得即使在高度受限的裝置上也能實現高效能執行。

此圖說明了將 PyTorch 程式匯出、編譯為針對特定硬體裝置的 ExecuTorch 程式,最後使用 ExecuTorch 執行時在裝置上執行程式的三步過程。圖

主要優勢

ExecuTorch 為需要將機器學習模型部署到端側裝置的工程師提供了以下優勢

  • 強大穩健的匯出。匯出使用 torch.export(),它採用與 PyTorch 2.x 相同的技術來捕獲 PyTorch 程式以進行快速執行。雖然 eager 模式靈活且允許在 Python 中進行實驗,但如果 Python 不可用或無法提供高效執行,則可能無法正常工作。匯出流程生成的 匯出中間表示 (Export IR) 可以描述 PyTorch 模型中的各種動態性,包括控制流和動態形狀,這使得它成為一個強大的工具,可以輕鬆地完整捕獲現有 PyTorch 模型。

  • 運算元標準化。在圖匯出過程中,圖中的節點代表運算元,例如加法、乘法或卷積。這些運算元屬於一個稱為 核心 ATen 運算元集 的小型標準化列表。大多數 PyTorch 程式在匯出期間可以使用這個小集合的運算元分解為圖。標準化運算元的少量列表減少了第三方運算元庫和加速器後端需要覆蓋的範圍,以便執行為 ExecuTorch 匯出的模型。ExecuTorch 執行時自帶一個這樣的庫,稱為可移植運算元庫,它實現了核心 ATen 運算元集。

  • 編譯器介面(即委託)和開源生態系統的標準化。除了上述 運算元標準化 外,ExecuTorch 還提供了用於委託給編譯器的 標準化介面。這使得第三方供應商和編譯器可以實現介面和 API 入口點,用於編譯和執行針對其專用硬體的(部分或完整的)圖。這在硬體支援和效能最佳化方面提供了更大的靈活性,並且更容易與 PyTorch 開源生態系統整合,以實現裝置端 AI。

  • 第一方開發者工具由於上述標準化工作,得以構建了統一的第一方 開發者工具,開發者可以使用相同的 API 將 ExecuTorch 模型匯出、編譯並部署到廣泛的目標裝置上,例如 iOS、Android 和微控制器,從而簡化流程並提高生產力。此外,ExecuTorch 提供效能分析和除錯功能,可輕鬆檢查中間狀態,這是大多數開發者工作流程的核心部分。

  • 無需中間轉換。ExecuTorch 的主要設計原則是允許開發者直接在目標裝置上執行模型,而無需轉換為第三方中間表示。這消除了裝置端開發者在處理這些轉換步驟時通常面臨的許多問題,例如缺乏除錯和效能分析能力、需要熟悉硬體特定的工具,以及因轉換步驟失敗導致模型無法執行。

  • 易於定製。開發者可以透過應用自定義技術,例如連結高效能運算元實現或根據儲存和延遲的權衡定製記憶體規劃,在目標架構上最佳化部署以獲得更好的效能提升。透過對匯出圖上的編譯器 Pass 介面和註冊 API 的標準化,實現了這種程度的定製。

  • 低開銷的執行時和執行。ExecuTorch 執行時採用 C++ 編寫,效率高,可以在包括 Linux、iOS、Android、嵌入式系統和裸金屬硬體在內的多種架構上執行,只需少量額外的設定或配置。它能夠僅連結模型所需的運算元,從而使執行時二進位制檔案大小最小化。由於提前編譯和記憶體規劃階段,它還能夠以低延遲執行,執行時只負責執行(例如,呼叫 conv 運算元並將結果儲存在記憶體位置 X)。

以上突出了 ExecuTorch 在可移植性、生產力和效能這三個主要類別中的關鍵優勢。我們認為它是實現在移動和端側計算平臺上的裝置端 AI 的理想選擇。

文件

訪問 PyTorch 的全面開發者文件

檢視文件

教程

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

檢視教程

資源

查詢開發資源並獲得問題解答

檢視資源