使用 Core ML 后端构建和运行 ExecuTorch¶
Core ML 委托使用 Core ML API 通过 Apple 的硬件加速来运行神经网络。有关 coreml 的更多信息,您可以阅读 此处.在本教程中,我们将演练将 PyTorch 模型降低为 Core ML 委托的步骤
在本教程中,您将学习如何导出 MobileNet V3 模型,以便它在 Core ML 后端上运行。
您还将学习如何在支持的 Apple 设备上部署和运行导出的模型。
先决条件(硬件和软件)¶
为了能够成功构建和运行 ExecuTorch 的 Core ML 后端,您需要以下硬件和软件组件。
设置开发人员环境¶
确保您已完成本页顶部链接的 ExecuTorch 设置教程并设置环境。
Run 以安装 Core ML 后端所需的依赖项。
install_requirements.sh
cd executorch
sh 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_and_delegate --model_name mv3
Core ML 后端使用 coremltools 将 Edge 方言降低为 Core ML 格式,然后将其捆绑到文件中。
.pte
运行:¶
运行 Core ML 委托计划:
构建运行程序。
cd executorch
# Generates ./coreml_executor_runner.
sh examples/apple/coreml/scripts/build_executor_runner.sh
运行导出的程序。
cd executorch
# Runs the exported mv3 model on the Core ML backend.
./coreml_executor_runner --model_path mv3_coreml_all.pte
在设备上部署和运行¶
使用演示 iOS 应用程序运行 Core ML 委托程序:
请按照本教程的 Export Model 步骤捆绑导出的 MobileNet V3 程序。您只需执行 Core ML 部分。
完成本教程的 Build Runtime and Backends 部分。在构建框架时,您只需要选项。
coreml
完成本教程的 Final Steps 部分以构建并运行演示应用程序。
使用您自己的应用程序运行 Core ML 委托程序
Build Core ML 委托。下面将在目录中创建一个。
executorch.xcframework
cmake-out
cd executorch
./build/build_apple_frameworks.sh --Release --coreml
创建新的 Xcode 项目或打开现有项目。
将生成的 Step 2 拖到 Frameworks (框架)。
executorch.xcframework
转到项目的 Build Phases - Link Binaries With Libraries,单击 + 号,然后添加以下框架:
- executorch.xcframework
- coreml_backend.xcframework
- Accelerate.framework
- CoreML.framework
- libsqlite3.tbd
将导出的程序添加到 Xcode 目标的 Copy Bundle 阶段。
请按照 运行模型教程 集成加载 ExecuTorch 程序的代码。
更新代码以从 Application 的捆绑包加载程序。
using namespace torch::executor;
NSURL *model_url = [NBundle.mainBundle URLForResource:@"mv3_coreml_all" extension:@"pte"];
Result<util::FileDataLoader> loader =
util::FileDataLoader::from(model_url.path.UTF8String);
使用 Xcode 在设备上部署应用程序。
该应用程序现在可以在 Core ML 后端上运行 MobileNet V3 模型。
在本教程中,您学习了如何将 MobileNet V3 模型降低到 Core ML 后端,并在 Apple 设备上部署和运行它。