使用Core ML后端构建和运行ExecuTorch¶
Core ML 委托使用 Core ML API 通过 Apple 的硬件加速来运行神经网络。要了解更多关于 Core ML 的信息,您可以阅读这里。在本教程中,我们将逐步介绍将 PyTorch 模型降低到 Core ML 委托的步骤
在这个教程中,您将学习如何导出 MobileNet V3 模型,以便它可以在 Core ML 后端运行。
你还将学习如何在支持的 Apple 设备上部署并运行导出的模型。
前提条件(硬件和软件)¶
为了能够成功构建和运行 ExecuTorch 的 Core ML 后端,您需要以下硬件和软件组件。
设置您的开发环境¶
确保您已完成本页面顶部链接的 ExecuTorch 设置教程并配置了环境。
运行
install_requirements.sh安装 Core ML 后端所需的依赖项。
cd executorch
./backends/apple/coreml/scripts/install_requirements.sh
安装 Xcode。
安装 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后端使用 coremltools 将 Edge dialect 降低为Core ML格式,然后将其捆绑在
.pte文件中。
Runtime:¶
运行一个Core ML委托程序:
构建运行器。
cd executorch
# Builds `coreml_executor_runner`.
./examples/apple/coreml/scripts/build_executor_runner.sh
运行 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。
[可选] 导出模型时生成一个 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
构建运行器。
# Builds `coreml_executor_runner`.
./examples/apple/coreml/scripts/build_executor_runner.sh
运行并生成一个 ETDump。
cd executorch
# Generate the ETDump file.
./coreml_executor_runner --model_path mv3_coreml_all.pte --profile_model --etdump_path etdump.etdp
创建一个 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委托程序:
请按照教程中的导出模型步骤来打包导出的MobileNet V3程序。你只需要完成Core ML部分。
完成教程的构建运行时和后端部分。在构建框架时,你只需要选择
coreml选项。完成教程的最后步骤部分,以构建和运行演示应用程序。
在你的应用中运行 Core ML 委托程序
构建框架,运行以下命令将在
cmake-out目录中创建executorch.xcframework和coreml_backend.xcframework。
cd executorch
./build/build_apple_frameworks.sh --coreml
创建一个新的 Xcode 项目 或打开一个现有的项目。
拖动由步骤2生成的
executorch.xcframework和coreml_backend.xcframework到框架中。转到项目的 构建阶段 - 链接二进制文件与库,点击 + 号,并添加以下框架:
executorch.xcframework
coreml_backend.xcframework
Accelerate.framework
CoreML.framework
libsqlite3.tbd
NSURL *model_url = [NBundle.mainBundle URLForResource:@"mv3_coreml_all" extension:@"pte"];
Result<executorch::extension::FileDataLoader> loader =
executorch::extension::FileDataLoader::from(model_url.path.UTF8String);
使用 Xcode 将应用程序部署到设备上。
该应用现在可以在Core ML后端运行MobileNet V3模型。
在本教程中,您已学习如何将 MobileNet V3 模型转换为 Core ML 后端,并在 Apple 设备上部署和运行它。