• 文档 >
  • 使用 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

分析 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. 请按照 运行时 API 教程 集成用于加载 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 设备上部署和运行它。

常见错误和解决方法。

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

文档

访问 PyTorch 的全面开发者文档

查看文档

教程

获取面向初学者和高级开发者的深度教程

查看教程

资源

查找开发资源并获得解答

查看资源