使用 Core ML 後端建置及執行 ExecuTorch¶
Core ML 委派使用 Core ML API,透過 Apple 的硬體加速來啟用神經網路的執行。關於 Core ML 的更多資訊,您可以閱讀這裡。在本教學中,我們將逐步了解將 PyTorch 模型降級至 Core ML 委派的步驟
在本教學中,您將學習如何匯出 MobileNet V3 模型,使其在 Core ML 後端上執行。
您還將學習如何在支援的 Apple 裝置上部署和執行匯出的模型。
先決條件(硬體和軟體)¶
為了能夠成功建置和執行 ExecuTorch 的 Core ML 後端,您需要以下硬體和軟體元件。
設定您的開發者環境¶
請確認您已完成本頁頂端連結的 ExecuTorch 設定教學課程並設定好環境。
執行
install_requirements.sh
以安裝 **Core ML** 後端所需的依賴項。
cd executorch
./backends/apple/coreml/scripts/install_requirements.sh
安裝 Xcode。
安裝 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 後端使用 coremltools 將 Edge 方言 降級為 Core ML 格式,然後將其捆綁在
.pte
檔案中。
運行時:¶
運行 Core ML 委派的程式:
建置執行器。
cd executorch
# Builds `coreml_executor_runner`.
./examples/apple/coreml/scripts/build_executor_runner.sh
運行 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 上支援分析。
[可選] 在匯出模型時產生 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
建置執行器。
# Builds `coreml_executor_runner`.
./examples/apple/coreml/scripts/build_executor_runner.sh
運行並產生 ETDump。
cd executorch
# Generate the ETDump file.
./coreml_executor_runner --model_path mv3_coreml_all.pte --profile_model --etdump_path etdump.etdp
通過傳入從運行時來源的 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 委派的程式:
請按照教學課程的 匯出模型 步驟來捆綁匯出的 MobileNet V3 程式。 您只需要執行 Core ML 部分。
完成教學課程的 建置運行時和後端 部分。 建置框架時,您只需要
coreml
選項。完成教學課程的 最後步驟 部分,以建置和運行演示應用程式。
在您的應用程式中運行 Core ML 委派的程式
建置框架,運行以下命令將在
cmake-out
目錄中建立一個executorch.xcframework
和coreml_backend.xcframework
。
cd executorch
./build/build_apple_frameworks.sh --coreml
建立一個新的 Xcode 專案 或開啟現有專案。
將從步驟 2 產生的
executorch.xcframework
和coreml_backend.xcframework
拖到 Frameworks。前往專案的 Build Phases - Link Binaries With Libraries,點擊 + 號,然後添加以下框架
executorch.xcframework
coreml_backend.xcframework
Accelerate.framework
CoreML.framework
libsqlite3.tbd
將匯出的程式添加到 Xcode 目標的 Copy Bundle Phase 中。
請按照 Runtime APIs 教學 整合載入 ExecuTorch 程式的程式碼。
更新程式碼以從應用程式的捆綁包載入程式。
NSURL *model_url = [NBundle.mainBundle URLForResource:@"mv3_coreml_all" extension:@"pte"];
Result<executorch::extension::FileDataLoader> loader =
executorch::extension::FileDataLoader::from(model_url.path.UTF8String);
使用 Xcode 在裝置上部署應用程式。
該應用程式現在可以在 Core ML 後端上運行 MobileNet V3 模型。
在本教學課程中,您學習了如何將 MobileNet V3 模型降級到 Core ML 後端,並在 Apple 裝置上部署和運行它。