• 文件 >
  • 使用 Core ML 後端建置及執行 ExecuTorch
捷徑

使用 Core ML 後端建置及執行 ExecuTorch

Core ML 委派使用 Core ML API,透過 Apple 的硬體加速來啟用神經網路的執行。關於 Core ML 的更多資訊,您可以閱讀這裡。在本教學中,我們將逐步了解將 PyTorch 模型降級至 Core ML 委派的步驟

您將在本教學中學到什麼
  • 在本教學中,您將學習如何匯出 MobileNet V3 模型,使其在 Core ML 後端上執行。

  • 您還將學習如何在支援的 Apple 裝置上部署和執行匯出的模型。

先決條件(硬體和軟體)

為了能夠成功建置和執行 ExecuTorch 的 Core ML 後端,您需要以下硬體和軟體元件。

硬體:

軟體:

設定您的開發者環境

  1. 請確認您已完成本頁頂端連結的 ExecuTorch 設定教學課程並設定好環境。

  2. 執行 install_requirements.sh 以安裝 **Core ML** 後端所需的依賴項。

cd executorch
./backends/apple/coreml/scripts/install_requirements.sh
  1. 安裝 Xcode

  2. 安裝 Xcode Command Line Tools。

xcode-select --install

建置

AOT (Ahead-of-time) 組件:

匯出 Core ML 委派的程式:

  • 在此步驟中,您會將 MobileNet V3 模型降級到 Core ML 後端,並匯出 ExecuTorch 程式。然後,您將使用 Core ML 後端在支援的 Apple 裝置上部署和執行匯出的程式。

cd executorch

# Generates ./mv3_coreml_all.pte file.
python3 -m examples.apple.coreml.scripts.export --model_name mv3
  • Core ML 後端使用 coremltoolsEdge 方言 降級為 Core ML 格式,然後將其捆綁在 .pte 檔案中。

運行時:

運行 Core ML 委派的程式:

  1. 建置執行器。

cd executorch

# Builds `coreml_executor_runner`.
./examples/apple/coreml/scripts/build_executor_runner.sh
  1. 運行 CoreML 委派的程式。

cd executorch

# Runs the exported mv3 model using the Core ML backend.
./coreml_executor_runner --model_path mv3_coreml_all.pte

分析 Core ML 委派的程式:

請注意,在 macOS >= 14.4 上支援分析。

  1. [可選] 在匯出模型時產生 ETRecord

cd executorch

# Generates `mv3_coreml_all.pte` and `mv3_coreml_etrecord.bin` files.
python3 -m examples.apple.coreml.scripts.export --model_name mv3 --generate_etrecord
  1. 建置執行器。

# Builds `coreml_executor_runner`.
./examples/apple/coreml/scripts/build_executor_runner.sh
  1. 運行並產生 ETDump

cd executorch

# Generate the ETDump file.
./coreml_executor_runner --model_path mv3_coreml_all.pte --profile_model --etdump_path etdump.etdp
  1. 通過傳入從運行時來源的 ETDump 以及從步驟 1 中可選產生的 ETRecord 來建立 Inspector API 的實例,或在您的終端中執行以下命令以顯示分析資料表。

python examples/apple/coreml/scripts/inspector_cli.py --etdump_path etdump.etdp --etrecord_path mv3_coreml.bin

在裝置上部署和運行

在演示 iOS 應用程式中運行 Core ML 委派的程式:

  1. 請按照教學課程的 匯出模型 步驟來捆綁匯出的 MobileNet V3 程式。 您只需要執行 Core ML 部分。

  2. 完成教學課程的 建置運行時和後端 部分。 建置框架時,您只需要 coreml 選項。

  3. 完成教學課程的 最後步驟 部分,以建置和運行演示應用程式。


在您的應用程式中運行 Core ML 委派的程式

  1. 建置框架,運行以下命令將在 cmake-out 目錄中建立一個 executorch.xcframeworkcoreml_backend.xcframework

cd executorch
./build/build_apple_frameworks.sh --coreml
  1. 建立一個新的 Xcode 專案 或開啟現有專案。

  2. 將從步驟 2 產生的 executorch.xcframeworkcoreml_backend.xcframework 拖到 Frameworks。

  3. 前往專案的 Build Phases - Link Binaries With Libraries,點擊 + 號,然後添加以下框架

executorch.xcframework
coreml_backend.xcframework
Accelerate.framework
CoreML.framework
libsqlite3.tbd
  1. 將匯出的程式添加到 Xcode 目標的 Copy Bundle Phase 中。

  2. 請按照 Runtime APIs 教學 整合載入 ExecuTorch 程式的程式碼。

  3. 更新程式碼以從應用程式的捆綁包載入程式。

NSURL *model_url = [NBundle.mainBundle URLForResource:@"mv3_coreml_all" extension:@"pte"];

Result<executorch::extension::FileDataLoader> loader =
    executorch::extension::FileDataLoader::from(model_url.path.UTF8String);
  1. 使用 Xcode 在裝置上部署應用程式。

  2. 該應用程式現在可以在 Core ML 後端上運行 MobileNet V3 模型。


在本教學課程中,您學習了如何將 MobileNet V3 模型降級到 Core ML 後端,並在 Apple 裝置上部署和運行它。

常見錯誤和解決方案。

如果您在學習本教學課程時遇到任何錯誤或問題,請在此處 提交 錯誤/問題,並帶上標籤 #coreml。

文件

存取全面的 PyTorch 開發人員文檔

檢視文檔

教學

取得適合初學者和高級開發人員的深入教程

檢視教學課程

資源

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

檢視資源