目录

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

Core ML 委托使用 Core ML API 通过 Apple 的硬件加速来运行神经网络。有关 Core ML 的更多信息,您可以阅读 此处.在本教程中,我们将演练将 PyTorch 模型降低为 Core ML 委托的步骤

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

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

先决条件(硬件和软件)

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

硬件:

软件:

  • Xcode >= 14.1,macOS >= 13.0 用于构建。

  • macOS >= 13.0、iOS >= 16.0、iPadOS >= 16.0 和 tvOS >= 16.0 来运行模型。

设置开发人员环境

  1. 确保您已完成本页顶部链接的 ExecuTorch 设置教程并设置环境。

  2. Run 以安装 Core ML 后端所需的依赖项。install_requirements.sh

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 后端使用 coremltools 将 Edge 方言降低为 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. 请按照本教程的 Export Model 步骤捆绑导出的 MobileNet V3 程序。您只需执行 Core ML 部分。

  2. 完成本教程的 Build Runtime and Backends 部分。在构建框架时,您只需要选项。coreml

  3. 完成本教程的 Final Steps 部分以构建并运行演示应用程序。


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

  1. Build frameworks,运行以下命令将在目录中创建一个 and。executorch.xcframeworkcoreml_backend.xcframeworkcmake-out

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

  2. 将 和 生成的 从 Step 2 拖到 Frameworks (框架)。executorch.xcframeworkcoreml_backend.xcframework

  3. 转到项目的 Build Phases - Link Binaries With Libraries,单击 + 号,然后添加以下框架:

executorch.xcframework
coreml_backend.xcframework
Accelerate.framework
CoreML.framework
libsqlite3.tbd
  1. 将导出的程序添加到 Xcode 目标的 Copy Bundle 阶段。

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

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

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 的全面开发人员文档

查看文档

教程

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

查看教程

资源

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

查看资源