使用 Core ML 后端构建和运行 ExecuTorch¶
Core ML 委托使用 Core ML API 通过 Apple 的硬件加速来运行神经网络。有关 Core ML 的更多信息,您可以阅读 此处.在本教程中,我们将演练将 PyTorch 模型降低为 Core ML 委托的步骤
在本教程中,您将学习如何导出 MobileNet V3 模型,以便它在 Core ML 后端上运行。
您还将学习如何在支持的 Apple 设备上部署和运行导出的模型。
先决条件(硬件和软件)¶
为了能够成功构建和运行 ExecuTorch 的 Core ML 后端,您需要以下硬件和软件组件。
设置开发人员环境¶
确保您已完成本页顶部链接的 ExecuTorch 设置教程并设置环境。
Run 以安装 Core ML 后端所需的依赖项。
install_requirements.sh
cd executorch
./backends/apple/coreml/scripts/install_requirements.sh
安装 Xcode。
安装 Xcode 命令行工具。
xcode-select --install
建¶
AOT(预先)组件:¶
导出 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 委托程序:
请按照本教程的 Export Model 步骤捆绑导出的 MobileNet V3 程序。您只需执行 Core ML 部分。
完成本教程的 Build Runtime and Backends 部分。在构建框架时,您只需要选项。
coreml
完成本教程的 Final Steps 部分以构建并运行演示应用程序。
在您的应用程序中运行 Core ML 委托程序
Build frameworks,运行以下命令将在目录中创建一个 and。
executorch.xcframework
coreml_backend.xcframework
cmake-out
cd executorch
./build/build_apple_frameworks.sh --coreml
创建新的 Xcode 项目或打开现有项目。
将 和 生成的 从 Step 2 拖到 Frameworks (框架)。
executorch.xcframework
coreml_backend.xcframework
转到项目的 Build Phases - Link Binaries With Libraries,单击 + 号,然后添加以下框架:
executorch.xcframework
coreml_backend.xcframework
Accelerate.framework
CoreML.framework
libsqlite3.tbd
将导出的程序添加到 Xcode 目标的 Copy Bundle 阶段。
请按照 运行时 API 教程 集成加载 ExecuTorch 程序的代码。
更新代码以从 Application 的捆绑包加载程序。
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 设备上部署和运行它。