• 文档 >
  • 使用 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 命令行工具。

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 后端使用 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

分析 CoreML 委托程序:

请注意,分析功能在 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

在设备上部署和运行

在 Demo iOS 应用中运行 CoreML 委托程序:

  1. 请按照教程的 导出模型 步骤来捆绑导出的 MobileNet V3 程序。您只需要完成 Core ML 部分。

  2. 完成教程的 构建运行时和后端 部分。构建框架时,您只需要 coreml 选项。

  3. 完成教程的 最后步骤 部分以构建和运行演示应用程序。


在您的应用中运行 CoreML 委托程序

  1. 构建框架,运行以下命令将在 cmake-out 目录中创建一个 executorch.xcframeworkcoreml_backend.xcframework

cd executorch
./build/build_apple_frameworks.sh --Release --coreml
  1. 创建一个新的 Xcode 项目 或打开一个现有项目。

  2. 将步骤 2 生成的 executorch.xcframeworkcoreml_backend.xcframework 拖放到 Frameworks 中。

  3. 转到项目的 构建阶段 - 将二进制文件与库链接,点击 + 号,并添加以下框架

executorch.xcframework
coreml_backend.xcframework
Accelerate.framework
CoreML.framework
libsqlite3.tbd
  1. 将导出的程序添加到 Xcode 目标的 复制捆绑阶段

  2. 请按照 运行模型 教程集成加载 ExecuTorch 程序的代码。

  3. 更新代码以从应用程序的捆绑包中加载程序。

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);
  1. 使用 Xcode 将应用程序部署到设备上。

  2. 应用程序现在可以在 Core ML 后端上运行 MobileNet V3 模型。


在本教程中,您学习了如何将 MobileNet V3 模型降低到 Core ML 后端,并将其部署和运行在 Apple 设备上。

常见错误和解决方案。

如果您在按照本教程操作时遇到任何错误或问题,请在 此处 提交错误/问题,并添加标签 #coreml。

文档

访问 PyTorch 的全面开发者文档

查看文档

教程

获取针对初学者和高级开发人员的深入教程

查看教程

资源

查找开发资源并获得问题的解答

查看资源