Core ML
又称:CoreML、Apple Core ML
更新于
定义
Core ML是Apple的框架,用于在App内、在设备上运行机器学习模型。它使用CPU、GPU和神经网络引擎,进行预测时无需网络连接。
Core ML自2017年起就是Apple系统的一部分,最早出现在macOS 10.13和iOS 11中。App把一个模型和一些输入(例如音频、图像或文本)交给它,它返回模型的结果。运算在哪里进行,由Core ML决定。
你不需要安装或打开Core ML。它是macOS的一部分。你会在App的介绍或模型的文件名中看到这个名字,或者在某个下载说明其中包含Core ML权重时看到它。
作用
Apple的介绍是:Core ML为所有模型提供统一的表示形式,App用它进行预测,以及训练或微调模型,这一切都在用户的设备上完成。
关于性能,Apple说Core ML会利用CPU、GPU和神经网络引擎来优化设备端性能,同时尽量减少内存占用和功耗。神经网络引擎是Apple芯片中专为这类运算打造的部分,而Core ML是App使用它的常规途径。
为什么设备端运行很重要
Apple自己给出了理由:严格在用户设备上运行模型,就完全不需要网络连接,这有助于保护用户数据的隐私,并让App保持响应迅速。
对语音来说,这意味着音频不必离开Mac就能变成文字。某个App是否真的把音频留在Mac上,取决于这个App,但这个框架让这成为可能。
文件类型
Core ML模型有三种形式,扩展名会告诉你是哪一种。
- `.mlmodel`:原始的模型定义文件。
- `.mlpackage`:较新的包格式,把权重和程序分开存放。从Xcode 13开始支持。
- `.mlmodelc`:编译后的模型,也就是App加载的形式。App或其下载内容中以这个后缀结尾的文件夹,就是一个可以直接运行的Core ML模型。
模型从哪里来
大多数模型是用其他工具训练,然后再转换的。Apple为此发布了Core ML Tools,用于把PyTorch和TensorFlow等训练库中的模型转换为Core ML格式。
同一套工具还可以在转换时通过量化或调色板化来压缩模型,让它更小,在神经网络引擎上通常也更快。
Core ML与MLX
Apple对两者的描述不同。Core ML用于把模型集成到App中。MLX是一个开源数组框架,用于在Apple芯片上试验、训练和微调生成式模型。Apple的文档说MLX在CPU和GPU上运行,而Core ML还可以使用神经网络引擎。
Apple的页面现在还会引导使用最新模型架构的开发者使用另一个框架:Core AI。Core ML仍然是在App中运行模型的长期常用方式。
大家常问的问题。
Core ML有什么用途?
在Apple设备的App内运行机器学习模型:识别语音、对图像分类、读取文字等任务,无需把数据发送到服务器。
Core ML需要联网吗?
不需要。Apple说,严格在设备上运行模型,就完全不需要网络连接。
Core ML会使用神经网络引擎吗?
会。Apple说Core ML会利用CPU、GPU和神经网络引擎。
什么是.mlmodelc文件?
编译后的Core ML模型,也就是App加载和运行的形式。
Core ML和MLX有什么区别?
Apple将Core ML描述为把模型集成到App中的方式,将MLX描述为在Apple芯片上试验和微调生成式模型的数组框架。Core ML可以使用神经网络引擎;MLX在CPU和GPU上运行。
搭载Intel处理器的Mac上有Core ML吗?
有。Core ML从10.13版起就是macOS的一部分。神经网络引擎只存在于Apple芯片中,所以在搭载Intel处理器的Mac上,它使用CPU和GPU。