Apple Core AI 集成#
coreai-core 仅发布 macosx_26_0_arm64 wheel,因此导出会在 Apple silicon Mac 上运行。导出的 .aimodel 可在 iOS 27 和 macOS 27 上运行。Ultralytics iOS 和 Flutter SDK 目前尚未加载 .aimodel 资产——请对这些平台使用 Core ML。
Core AI 是 Apple 推出的新框架,用于直接在 Apple silicon 上运行神经网络。它引入了 .aimodel 模型格式、现代 Swift 推理 API、基于 PyTorch 的转换工具、提前编译、模型专用化,以及专用的调试和性能分析工具。
Apple 将 Core AI 描述为设备端 AI 执行的下一代技术,也是设备端 Apple Intelligence 背后的推理框架。它针对当前的神经网络架构而设计,涵盖紧凑型视觉模型到大型生成式模型,并可在 CPU、GPU 和 Apple 神经引擎 (ANE) 之间调度工作。
Core AI 是一种新的部署路径,而不是 Core ML 的改名。两个框架使用不同的模型格式、转换工具、运行时 API 和应用集成模式。
Core AI 与 Core ML 对比#
| 能力 | Core AI | Core ML |
|---|---|---|
| 模型产物 | .aimodel | .mlpackage 或 .mlmodel |
| Ultralytics 导出 | 可通过 format=coreai 使用 | 可通过 format=coreml 使用 |
| Apple 运行时 API | AIModel、InferenceFunction 和 NDArray | MLModel,通常通过 VNCoreMLModel 和 VNCoreMLRequest 使用 |
| 转换工作流 | PyTorch torch.export 转换为 coreai-torch | 通过 coremltools 转换 TorchScript |
| 主要侧重点 | 现代神经网络和生成式 AI | 广泛的机器学习部署,包括神经网络和非神经网络模型 |
| 图像集成 | 应用准备张量,或使用 Core AI 图像描述符和缓冲区 | 直接与 Vision 框架集成,用于图像缩放、方向处理和请求 |
| 硬件 | CPU、GPU 和 Apple 神经引擎 | CPU、GPU 和 Apple 神经引擎 |
| 模型准备 | 在安装时或首次使用时进行专用化,并可选择提前编译 | Xcode 或设备端模型编译 |
| 自定义操作 | 自定义 Core AI lowerings 和 Metal 内核 | Core ML 自定义层和受支持的 MIL 操作 |
| 部署可用性 | 新一代 Apple 操作系统;目前处于 beta 阶段 | 广泛支持现有 Apple 操作系统 |
| Ultralytics iOS 和 Flutter SDK | 尚不支持 | 完全支持 |
当应用需要广泛的设备覆盖、Vision 框架集成,或决策树和表格型流水线等模型类型时,Core ML 仍是合适的选择。Apple 继续支持 Core ML,并建议使用非神经网络模型类型的开发者选择 Core ML。
Core AI 格式的工作原理#
Core AI 的模型编写工作流从 PyTorch 模型开始:
PyTorch model
↓ torch.export
ExportedProgram
↓ coreai-torch
Core AI program
↓ optimize and save
.aimodel
↓ specialize or compile ahead of time
Apple silicon executableApple 的 coreai-torch 软件包会将 torch.export.ExportedProgram 转换为 Core AI 操作,方法是将 PyTorch ATen 操作降级为 Core AI 操作。不受支持的操作可以通过自定义 lowering 或自定义 Metal 内核实现。
生成的 .aimodel 是一个未经专用化的模型资产。当应用准备模型时,Core AI 会针对目标设备对其进行专用化。应用可以让此过程在首次使用时进行,也可以提前请求专用化,或随应用提供提前编译的模型,以缩短初始加载时间。
在 Swift 中,应用使用 Core AI 框架加载资产,选择推理函数,提供类型化的 NDArray 输入,并接收命名输出。这不同于将 Core ML 模型封装在 Vision 请求中,因此采用 Core AI 需要一个针对 .aimodel 资产设计的应用运行时。
有关实现细节,请参阅 Apple 关于 AIModel、模型专用化和缓存以及提前编译的文档。
将 YOLO26 模型导出到 Core AI#
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
model.export(format="coreai") # creates 'yolo26n.aimodel'
model.export(format="coreai", quantize=16) # FP16 asset
# Run the exported model
coreai_model = YOLO("yolo26n.aimodel")
results = coreai_model("https://ultralytics.com/images/bus.jpg")完整的参数列表请参阅导出模式。该计算图是静态的:它会在传递给 export 的 imgsz 处进行追踪,因此请使用相同尺寸进行预测。Ultralytics 元数据会保存在资产自身的 metadata.json 中,因此类别名称、stride 和任务信息都能在往返过程中保留。
选择检测头#
使用 nms=False 时,YOLO26 会导出其端到端检测头,该检测头在图内选择检测结果。Core AI 没有 top-k 原语,因此该选择操作会降级为完整排序,并在 Apple Neural Engine 分区边界处产生固定开销——大约 1.7 毫秒,与 max_det 无关。使用 nms=None 导出则会改发原始 (1, 84, 8400) 预测结果,并将非极大值抑制留给预测器处理:
yolo export model=yolo26n.pt format=coreai nms=None quantize=16在运行 iOS 27.0 的 iPhone 17 Pro 上,带有图内检测头的 YOLO26n 在 640 分辨率下测得为 3.01 毫秒,不带图内检测头时为 1.28 毫秒(FP16,提前编译,包含 50 次迭代的三个交错块)。两者都通过 YOLO(...) 进行往返推理。当单次图调用必须返回完成的检测结果时,请使用 nms=False,或者保留默认的 nms=None 以用于外部 NMS。
在 iOS 27 或 macOS 27 上,应用随后会通过 Apple 的 Core AI Swift API 加载并运行导出的资产。导出的资产使用入口点 main,接收一个形状为 [batch, 3, imgsz, imgsz] 的 images 输入,并返回 output0:
import CoreAI
let modelURL = Bundle.main.url(forResource: "yolo26n", withExtension: "aimodel")!
let model = try await AIModel(contentsOf: modelURL)
guard let function = try model.loadFunction(named: "main") else {
throw AppError.missingInferenceFunction
}
let outputs = try await function.run(inputs: ["images": imageTensor])不同于当前的 Core ML 和 Vision 工作流,未来的 Core AI 路径需要在 Ultralytics iOS SDK 中定义图像预处理、NDArray 构造、模型元数据和输出解码。Apple 在 Core AI 框架文档中提供当前 API 详情,并在 Core AI 模型仓库中提供可运行的模型示例。
Core AI 的优势#
Core AI 为未来的 Ultralytics 部署提供了若干有前景的优势:
- 现代 PyTorch 导出路径: 转换从
torch.export开始,相比许多现有导出器使用的追踪工作流,能够保留表达能力更强的 PyTorch 计算图。 - 细粒度运行时控制: 应用可以管理专用化、编译模型缓存、推理函数、内存和计算位置。
- 高级模型支持: 有状态执行、动态形状、单个资产中的多个函数以及自定义 Metal 内核,都是针对现代视觉和生成式架构而设计的。
- 专用开发者工具: Core AI Debugger 可以检查计算图和张量值,并将其追溯到源 Python 代码。Xcode 和 Instruments 提供运行时性能分析。
- 零拷贝机会: Core AI 提供存储和缓冲区控制,旨在减少相机、图形处理和推理工作负载之间的数据拷贝。
- Apple silicon 优化: 设备专用化让 Apple 能够针对特定设备上可用的 CPU、GPU 和神经引擎优化模型。
- 灵活压缩: Apple 的 Core AI Optimization 工具支持量化、调色板化和剪枝,包括低比特权重格式。
这些能力对于未来具有动态执行、更大型多模态组件,或无法与现有 Core ML 操作良好映射的自定义操作的 YOLO 模型,可能尤其有用。
当前的缺点和限制#
Core AI 目前还不能替代生产环境中的 Core ML 路径:
- 需要新操作系统: 公共框架面向 iOS 27 和 macOS 27 这一代系统,而 Core ML 支持更大规模的已安装设备。
- Beta 软件: Apple 的 Core AI 框架及其 Python 工具链的部分内容仍处于初步阶段,稳定版发布前可能会发生变化。
- 更受限的导出环境:
coreai-torch目前要求 Python 3.11 或更高版本但低于 3.14,并且要求较新的 PyTorch 版本,其范围远窄于 Ultralytics 支持的 Python 和 PyTorch 版本范围。 - 导出仅在 macOS 上运行:
coreai-core仅发布macosx_26_0_arm64wheel,因此format=coreai需要一台运行 macOS 26 或更高版本的 Apple silicon Mac。 - 尚无 Ultralytics 应用运行时: 官方 YOLO iOS 应用和 Flutter 插件目前通过
MLModel和 Vision 加载 Core ML 资产。 - 需要迁移应用:
.aimodel不能替代.mlpackage;模型加载、预处理、推理调用、元数据处理和输出解码都需要 Core AI 实现。 - 生产环境证据有限: 需要在受支持的 YOLO 任务和设备矩阵中验证性能、功耗、首次运行专用化时间、准确率和压缩效果。
- 无 NMS 流水线: Core ML 可以为较旧的 YOLO 检测模型打包 NMS 阶段。Core AI 默认导出原始的一对多预测结果;对于 YOLO26 的无 NMS 检测头,请使用
nms=False。嵌入式 NMS(nms=True)和dynamic=True不受支持。coreai-torch没有针对torchvision::nms的降级操作,因此 NMS 仍保留在主机上。 - 固定输入尺寸: 导出的计算图会在一个
imgsz处进行追踪,且不支持动态形状,因此请使用导出时的尺寸进行预测。 - FP16 资产可能在加载时中止: 某些 FP16
.aimodel资产无法加载其 Apple 神经引擎程序,MPSGraph 会引发断言失败,从而结束进程,而不是回退。该问题发生在 Apple 运行时内部,在任何 Ultralytics 代码运行之前;相同资产使用仅 CPU 的专用化时可以加载。在上游修复之前,建议使用 FP32。
应该使用哪种 Apple 格式?#
当你需要以下功能时,立即使用 Core ML:
- 在当前和较旧的 Apple 操作系统之间部署
- 与 Ultralytics iOS 或 Flutter SDK 集成
- Vision 框架图像处理
- 经过测试的 FP16 和 INT8 YOLO 部署
- 为兼容的旧版检测模型嵌入 NMS
当你可以要求使用 iOS 27 或 macOS 27,并且需要以下功能时,评估 Core AI:
- 最新的 Apple 设备端神经网络运行时
- 显式的专用化和缓存管理
- 高级动态或有状态模型执行
- 自定义 Core AI 操作或 Metal 内核
- 详细的 Core AI 计算图调试和运行时性能分析
预计 Core ML 和 Core AI 将在应用迁移期间共存。支持 Core AI 并不会立即消除对 Core ML 的需求,因为两者的部署目标和应用契约不同。
Ultralytics 路线图#
专用的 coreai 导出目标已实现:导出和数值验证覆盖受支持的 YOLO26 任务模型,并在 macOS 26 上持续通过 Ultralytics CI 运行,同时在设备上测量 FP16 延迟。Core AI 达到 Core ML 路径的同等水平之前,剩余路线图包括:
- 在 Ultralytics iOS SDK 中加载 Core AI 模型并执行预处理。
- Flutter 集成,以及针对低于 iOS 27 的设备的兼容性策略。
- 稳定版 Apple 框架和转换工具发布(iOS 27 和 macOS 27 这一代系统目前处于 beta 阶段)。
- 在受支持的设备矩阵中进行内存、功耗和专用化基准测试。
对于需要 Ultralytics iOS 或 Flutter SDK,或需要覆盖低于 iOS 27 的系统的应用,Core ML 仍是推荐目标;请关注 Ultralytics 路线图和发行说明,了解其余事项。
其他资源#
- Apple Core AI 概览
- Core AI 框架文档
- Core AI PyTorch 扩展
- Core AI Optimization
- Apple Core AI 模型仓库
- Ultralytics Core ML 集成
常见问题#
可以。在运行 macOS 26 或更高版本的 Apple 芯片 Mac 上,使用
model.export(format="coreai")或yolo export format=coreai导出;导出的.aimodel可在 iOS 27 和 macOS 27 上运行。对于 Ultralytics iOS 和 Flutter SDK,以及低于该版本的操作系统,请使用format="coreml"将模型导出为 Core ML.mlpackage文件。不会立即取代。Core AI 是 Apple 面向现代神经网络推出的新路径,而 Core ML 仍受支持,并提供更广泛的操作系统覆盖、Vision 集成以及对非神经网络模型的支持。
不可以。它们包含不同的模型表示形式,并由不同的框架加载。转换必须从源模型开始,并通过适当的 Apple 工具链完成。
预计初始集成将与 Core ML 共存。未来是否替代将取决于操作系统的采用情况、工具链的稳定性、性能以及后续对 iOS 和 Flutter 的支持。