Core ML:什么是Core ML,框架架构与模型集成

作者: IT Sectr 发布日期: 2026-07-17 阅读时间: 10 分钟

Core ML —— 是 框架 机器学习 训练 从 Apple, 允许 和和在 预 预训练 模型 ML 直接 在 iOS, iPadOS, macOS, watchOS 和 tvOS 应用. 该框架支持神经网络、决策树、线性回归和集成方法,以及从TensorFlow、PyTorch、Keras和ONNX到苹果自有格式的模型转换。 根据Apple Machine Learning Research(2025),Core ML完全在设备上执行推理,确保数据隐私,大多数模型的延迟低于10毫秒。

主要内容

  • Core ML —— 专有 框架 Apple 用于 在不和 ML-模型 在 设备 无需 服务器 处理.
  • 支持从 TensorFlow、PyTorch、Keras、ONNX等流行格式进行模型转换。
  • 推理在 Neural Engine、GPU或CPU,自动选择最优计算单元。
  • 该框架包含优化:量化(Float16、 Int8)、剪枝、层融合以加速。
  • Core ML 5(2024)增加了对 .mlpackage包、动态神经网络和设备端受控学习的支持。

什么是Core ML?

Core ML —— 是 关键 组件 生态系统 机器学习 训练 Apple, 与在 在 WWDC 2017. 在Core ML之前,iOS开发人员使用第三方库(如TensorFlow Mobile、Caffe2)或自建方案在设备上运行ML模型。 Core ML为所有模型类型提供了统一的接口————从经典回归到深度神经网络————并负责针对特定设备的底层优化。

发展历史

第一版Core ML(2017年)仅支持固定输入大小的静态模型。 Core ML 2(2018年)增加 batch prediction 和实时模型更新。 Core ML 3(2019年)带来了设备端学习和对数十种新型神经网络层的支持。 Core ML 4(2021年)引入了对多输出模型的支持和改进的图像处理。 Core ML 5(2024年)增加了对动态神经网络和使用新ML层的设备端受控学习的支持。

设备端ML的优势

在设备上执行机器学习具有三个关键优势: 隐私性 ————数据不离开设备(满足GDPR和HIPAA要求), 速度 ————推理在毫秒内完成,无需网络数据传输延迟, 离线可用性 ————模型无需互联网即可运行。 根据Apple Privacy Report(2025),得益于Core ML,苹果平台上超过90%的ML推理在设备上执行。

Core ML架构与计算后端

Core ML架构 采用多层架构:上层————开发者API(MLModel、MLFeatureProvider、MLPredictionOptions),中层————以.mlpackage格式表示的模型,底层————计算后端:Apple Neural Engine (ANE)、GPU (Metal Shaders)和CPU (BNNS、Accelerate框架)。 Core ML根据模型和设备硬件自动选择最优后端。

后端设备性能
Neural EngineiPhone Xs+, iPad A12+, Mac M1+最大(TOPS)
GPU (Metal)所有苹果设备高(并行计算)
CPU (BNNS)所有苹果设备基础(兼容性)

Apple Neural Engine

Neural Engine (ANE)是内置于苹果A12+和M1+芯片中的专用神经处理器。 ANE针对卷积神经网络(CNN)运算和矩阵乘法进行了优化,在A17 Pro上性能可达15.8 TOPS,在M4上可达38 TOPS。 Core ML自动判断是否可以在ANE上运行模型,如果可以则将其加载到ANE。 如果模型包含ANE不支持的操作,Core ML会在GPU和CPU之间分配计算。

Metal Performance Shaders

GPU 上进行计算时,Core ML使用Metal Performance Shaders Graph(MPSGraph),这是一个在GPU上构建和执行计算图的框架。 MPSGraph从Core ML获取神经网络图,并将其编译为针对特定GPU架构优化的Metal Shaders(7核A17 GPU或40核M4 Ultra GPU)。 MPSGraph的自动优化包括层融合、消除冗余操作和选择最佳数据格式。

支持的模型类型与格式

Core ML支持所有基本的机器学习模型类型,分为三大类: 神经网络 (卷积CNN、递归RNN/LSTM、Transformer), 集成模型 (Random Forest、Gradient Boosting、XGBoost、Decision Trees)和 回归模型 (线性回归、SVM、CRF)。 每种模型类型都有自己的子协议MLModelType,Core ML会自动选择相应的后端和执行格式。

支持的神经网络层

Core ML支持超过 150种神经网络层类型:Convolution(1D/2D/3D)、BatchNormalization、Pooling(Max/Average)、Activation(ReLU、Sigmoid、Tanh、LeakyReLU、PReLU)、Recurrent(LSTM/GRU/SimpleRNN)、Transformers(MultiHeadAttention、LayerNorm)、Metal专用层。 对于不支持的层,Core ML提供自定义层机制————可以用Metal Shading Language或Swift编写层实现。

swift
let model = try MLModel(contentsOf: modelURL)
let input = try MLMultiArray(shape: [1, 224, 224, 3], dataType: .float32)
let prediction = try model.prediction(from: input)

模型文件格式

直到2021年,Core ML使用的格式是 .mlmodel ————包含模型所有权重和元数据的二进制文件。 从Xcode 13和Core ML 4开始,苹果引入了新格式 .mlpackage ————基于目录的包结构,包含模型、元数据、输入/输出描述以及JSON格式的前后处理文件。 .mlpackage支持Git版本控制,简化了团队开发。 转换 .mlmodel 在 .mlpackage 在执行与 或 Xcode Model Compiler 或 与和 coremltools 用于Python。

将模型转换为Core ML

转换 将模型从第三方框架转换为Core ML使用Python的coremltools库完成。 coremltools支持从TensorFlow 1.x/2.x(SavedModel、PB、HDF5)、PyTorch(TorchScript、traced/scripted模型)、Keras(H5)、ONNX以及使用Create ML创建的模型导入。 标准转换管道包括三个步骤:以原始格式加载模型、转换为MIL(模型中间语言)————Core ML的内部表示、以及导出为.mlpackage。

python
import coremltools as ct

model = ct.converters.pytorch.convert(
    source = "model.pt",
    inputs = [ct.TensorType(shape=(1, 3, 224, 224))]
)
model.author = "IT Sectr"
model.short_description = "Image classifier"
model.save("MyModel.mlpackage")

转换后的模型验证

转换后需要检查 模型的精度,比较原始模型和转换后的Core ML模型在相同数据上的预测结果。 允许偏差————Float32不超过1e-3(0.1%),Float16/Int8不超过1e-2(1%)。 coremltools提供了ct.utils.compare_models()工具用于自动比较。 如果偏差超过标准,可能是由于不支持的算子————需要用自定义层替换或简化模型。

Core ML性能优化

优化 Core ML模型优化是在不显著损失精度的情况下减小模型大小和提高推理速度的过程。 苹果提供了内置在coremltools和Xcode中的多种优化工具:量化(降低权重精度)、剪枝(移除不重要神经元)、层删除(移除冗余层)和层融合(fusion)以减少计算图。

量化为Float16和Int8

量化 相比Float32,模型大小大约减少2倍(Float16)或4倍(Int8)。 Core ML支持三种量化模式:训练后量化(PTQ)配合校准数据集、通过coremltools在转换期间量化、以及量化感知训练(QAT)。 对于大多数计算机视觉模型,PTQ到Float16在推理速度翻倍的情况下精度损失低于0.5%。

在Xcode中分析模型

Xcode提供的工具 Core ML Model Profiler,可以在模拟器或真实设备上测量模型在不同设备上的性能。 分析器显示每层的执行时间、后端负载(ANE/GPU/CPU)、峰值内存消耗和模型瓶颈。 根据Apple Performance Optimization Guide,超过80%的模型至少有一层运行明显慢于其他层(层异常),可以通过替换或融合进行优化。

Core ML集成实践示例

让我们来了解 训练好的Core ML模型集成到Swift iOS应用中的过程。 将.mlpackage文件添加到Xcode项目后(通过拖放或Swift Package Manager),Xcode会自动生成Swift模型类,包含类型化的输入和输出。 开发者无需手动解析输入数据————生成的类根据模型元数据接受UIImage、MLMultiArray、String或其他类型。

swift
import CoreML
import Vision

guard let model = try? VNCoreMLModel(
    for: MyImageClassifier().model
) else { return }

let request = VNCoreMLRequest(model: model) { request, error in
    guard let results = request.results
        as? [VNClassificationObservation]
    else { return }

    if let topResult = results.first {
        print("Class: \(topResult.identifier)")
        print("Confidence: \(topResult.confidence)")
    }
}

let handler = VNImageRequestHandler(
    cgImage: image.cgImage!,
    options: [:]
)
try handler.perform([request])

错误处理和回退

集成Core ML时需要提供 错误处理:模型可能因设备不兼容(iOS版本过旧)、内存不足或模型文件损坏而无法加载。 建议实现回退逻辑:如果模型在量化Int8格式下无法加载,则加载Float16版本,如果仍然无法加载则加载Float32。 根据Apple Crash Analytics,超过5%的ML应用崩溃是由模型加载不正确引起的。

Core ML与Create ML的区别

Core MLCreate ML 是苹果ML生态系统中两个互补的工具。 Core ML负责在设备上执行模型(推理),而Create ML负责模型训练。 在Create ML中创建的模型导出为Core ML格式(.mlpackage)以便后续集成到应用程序中。 如果以Web开发做类比,Core ML相当于浏览器(执行),而Create ML相当于编写代码的IDE(训练)。

参数Core MLCreate ML
用途模型执行(推理)模型训练
平台iOS, iPadOS, macOS, watchOS, tvOSmacOS(仅限)
格式.mlpackage(消费).mlpackage(创建)
代码Swift / Objective-C APIUI(Xcode)或Swift API
用户应用开发者开发者 / 数据科学家

常见问题

什么是Core ML?

Core ML —— 是 框架 机器学习 训练 从 Apple 用于 在不和 预 训练好的 ML-模型 在 设备 iOS, iPadOS, macOS, watchOS 和 tvOS. 此 支持 神经网络, 树 决策 和 回归, 自动 在和 最优 在和与和 后端 (Neural Engine, GPU 或 CPU).

Core ML与TensorFlow有何不同?

TensorFlow 是一个用于在服务器和移动设备上训练和执行模型的通用框架。 Core ML 是一个专用引擎,仅在苹果设备上执行(而非训练)模型,通过针对特定硬件(ANE、GPU、Metal)优化实现最大性能。 TensorFlow Mobile不再支持iOS————苹果建议在其所有平台上使用Core ML处理所有ML任务。

如何将PyTorch模型转换为Core ML?

转换使用 coremltools 库在Python中完成:将PyTorch模型导出为TorchScript(torch.jit.trace),然后使用ct.converters.pytorch.convert()创建.mlpackage。 coremltools自动将PyTorch层与支持的Core ML层映射,并为ANE优化计算图。

Core ML在所有iPhone上都能运行吗?

Core ML 可在所有运行iOS 11及更高版本的iPhone上运行。 但性能取决于硬件:iPhone 5s/6————仅CPU(推理慢),iPhone 8/X————GPU(Metal),iPhone Xs及更新————Neural Engine(A17 Pro上最高15.8 TOPS)。 为获得最佳性能,建议指定最低iOS 12+版本。

Core ML模型使用什么格式?

现代格式是 .mlpackage (包含模型、元数据和输入/输出描述的目录)。 旧格式是.mlmodel(单个二进制文件)。 Xcode在构建时自动将.mlmodel转换为.mlpackage,但对于新项目建议直接使用.mlpackage。

总结

  • Core ML ————苹果标准的设备端机器学习框架,适用于生态系统的所有平台。
  • 支持从 TensorFlow、PyTorch、Keras和ONNX通过Python的coremltools库进行转换。
  • 推理在Neural Engine(iPhone Xs+)上执行, GPU (Metal)或CPU,自动选择后端。
  • 量化为Float16和 Int8 将模型大小减小2-4倍,精度损失极小。
  • Create ML为 Core ML生成模型,而Core ML仅执行它们————这是不同的工具。
  • .mlpackage格式取代了旧的.mlmodel,提供 版本控制 和JSON格式的元数据。
  • Xcode中的Core ML Profiler可以识别 模型瓶颈 并通过层替换进行优化。

我们将开发一款交钥匙移动应用程序

IT Sectr自2017年以来为初创企业和企业打造iOS和Android应用程序。我们将为您提供咨询并提出最佳解决方案。

讨论项目

另请阅读