• 文档 >
  • 使用 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. 转到项目的构建阶段 - 将二进制文件与库链接,点击+号,并添加以下框架

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

  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 设备上。

常见错误及解决方法。

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

文档

访问 PyTorch 的全面开发者文档

查看文档

教程

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

查看教程

资源

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

查看资源