目录

使用Core ML后端构建和运行ExecuTorch

Core ML 委托使用 Core ML API 通过 Apple 的硬件加速来运行神经网络。要了解更多关于 Core ML 的信息,您可以阅读这里。在本教程中,我们将逐步介绍将 PyTorch 模型降低到 Core ML 委托的步骤

你将在本教程中学习到:
  • 在这个教程中,您将学习如何导出 MobileNet V3 模型,以便它可以在 Core ML 后端运行。

  • 你还将学习如何在支持的 Apple 设备上部署并运行导出的模型。

前提条件(硬件和软件)

为了能够成功构建和运行 ExecuTorch 的 Core ML 后端,您需要以下硬件和软件组件。

Hardware:

Software:

设置您的开发环境

  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
  • 核心ML后端使用 coremltoolsEdge dialect 降低为Core ML格式,然后将其捆绑在 .pte 文件中。

Runtime:

运行一个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. 创建一个 Inspector API 实例,传入从运行时获取的 ETDump 以及可选生成的 ETRecord(来自步骤1),或者在终端中执行以下命令以显示性能数据表。

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 到框架中。

  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 设备上部署和运行它。

常见错误及解决方法。

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

文档

访问 PyTorch 的全面开发人员文档

查看文档

教程

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

查看教程

资源

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

查看资源