本頁說明 ExecuTorch 的運作方式及其主要優勢。
ExecuTorch 如何運作¶
在高階層次上,使用 ExecuTorch 在邊緣裝置 (例如筆記型電腦、手機、穿戴裝置和 IoT 裝置) 上執行 PyTorch 模型有三個步驟。
匯出模型。 第一步是將 PyTorch 程式擷取為圖形,這是一種新的模型表示法,可以使用一系列運算子 (例如加法、乘法或卷積) 來表達。 此流程安全地保留了原始 PyTorch 程式的語意。 此表示法是啟用在具有低記憶體和/或低運算的邊緣使用案例上執行模型的第一步。
將匯出的模型編譯為 ExecuTorch 程式。 承接步驟 1 匯出的模型,將其轉換為可執行格式,稱為 ExecuTorch 程式,供執行階段 (runtime) 用於推論。此步驟為各種最佳化提供了入口點,例如壓縮模型(例如,量化)以縮小尺寸,以及進一步編譯子圖到裝置上的專用硬體加速器以改善延遲。它還為記憶體規劃提供了入口點,即有效地規劃中間張量的位置以減少執行階段記憶體佔用量。
在目標裝置上執行 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 Op 集合的小型標準化列表的一部分。大多數 PyTorch 程式都可以在匯出期間使用這個小型的運算子集合分解成一個圖。標準化運算子的小列表減少了第三方運算子函式庫以及加速器後端需要覆蓋的範圍,以便執行為 ExecuTorch 匯出的模型。ExecuTorch 執行階段附帶一個這樣的函式庫,稱為可移植運算子函式庫,它實現了核心 ATen opset。
編譯器介面 (又名委派) 和 OSS 生態系統的標準化。 除了上面的運算子標準化之外,ExecuTorch 還具有用於委派給編譯器的標準化介面。這允許第三方供應商和編譯器實作介面和 API 入口點,用於編譯和執行(部分或全部)針對其專用硬體的圖。這在硬體支援和效能最佳化方面提供了更大的靈活性,並且更容易與 PyTorch 開源生態系統整合,以實現裝置上的 AI。
第一方 SDK 和工具鏈。 由於上述標準化工作,可以為 ExecuTorch 構建一個統一的第一方 SDK,開發人員可以使用相同的 SDK 匯出、編譯和部署到各種目標裝置(例如 iOS、Android 和微控制器),從而簡化流程並提高生產力。此外,SDK 提供分析和偵錯功能,可輕鬆檢查中間狀態,這些是大多數開發人員工作流程的核心部分。
無需中間轉換。 ExecuTorch 的主要設計原則是允許開發人員在目標裝置上運行他們的模型,而無需轉換為第三方中間表示法。這消除了裝置上開發人員在使用這些轉換步驟時通常面臨的許多問題,例如缺乏可偵錯性和分析,需要熟悉硬體特定的工具,以及由於轉換步驟失敗而無法運行的模型。
易於自訂。 開發人員可以通過應用自訂技術來最佳化其部署,以在目標架構上獲得更好的效能提升,例如與高效能運算子實作連結或根據儲存和延遲的權衡自訂記憶體規劃。通過編譯器傳遞介面的標準化和匯出圖上的註冊 API,可以實現這種程度的自訂。
低開銷執行階段和執行。 ExecuTorch 執行階段以 C++ 編寫,效率極高,可以在各種架構上運行,包括 Linux、iOS、Android、嵌入式系統和裸機硬體,而無需額外的設定或配置。它能夠僅連結模型所需的那些運算子,從而產生最小的執行階段二進位檔案大小。由於提前編譯和記憶體規劃階段,它也能夠以低延遲運行,執行階段僅負責執行(例如,調用運算子
conv
並將結果保存在記憶體位置 X)。
以上重點介紹了 ExecuTorch 在三個主要類別中的關鍵優勢:可移植性、生產力和效能。我們認為它是實現跨行動和邊緣計算平台上的裝置上 AI 的理想選擇。