跳到主要内容
返回开发者精选

CoreAI Model Zoo:让 MiniCPM 在 iPhone 上原生运行

作者:Daisuke Majima (MLBoy)模型:MiniCPM-V 4.6、MiniCPM5-1B、MiniCPM5-2B、VoxCPM2

MiniCPM5、MiniCPM-V 4.6 转换为 Core AI 原生运行

CoreAI Model Zoo 是一个面向 Apple Core AI 的预转换模型库。MiniCPM5、MiniCPM-V 4.6、BitCPM、VoxCPM 这些 OpenBMB 模型都被转成 .aimodel,可以直接在 iPhone 和 Mac 上原生运行;仓库里还带了 Swift 示例应用和能复现的转换配方。

什么是 Core AI​

Core AI 是 iOS 27 / macOS 27 上的端侧机器学习运行时,接替 Core ML。模型用 coreai-torch 从 PyTorch 导出成 .aimodel,可以跑在 GPU 或 Neural Engine 上。做个参考:Qwen3-8B 4-bit 在 M4 Max 上能跑到 94 tok/s,MLX 是 90 tok/s。

仓库里每个模型发布前都要拿原始模型做 gate 验证,models/<model>/recipe.toml 里放着转换配方,谁都能照着复现。

CoreAIChat 在 iPhone 上运行

OpenBMB 模型一览​

模型说明Hugging Face 仓库示例
MiniCPM5-1B混合 Think / No-Think,128K 上下文;GPU int8 + Neural Engine 8-bit palettized,AOT h18p,设备端 gate 3/3mlboydaisuke/MiniCPM5-1B-CoreAIChatDemo
MiniCPM5-2B42 层,支持工具调用,128K 上下文(2026-09-06 发布);GPU int8 + ANE 4-bit palettizedmlboydaisuke/MiniCPM5-2B-CoreAI—
BitCPM-8B1.58-bit 三值权重,MiniCPM4-8B 架构;自定义 2-bit packed-GEMM Metal kernel,在 iPhone GPU 上约占 2.1 GBmlboydaisuke/BitCPM-8B-CoreAICoreAIChat
MiniCPM-V 4.6sub-2B,“strongest tiny VLM”mlboydaisuke/MiniCPM-V-4.6-CoreAIVLChat
MiniCPM-V 4.7-1B沿用 4.6 的视觉塔,加上图内推导的 canvas M-RoPEmlboydaisuke/MiniCPM-V-4.7-1B-CoreAIVLChat / Look
VoxCPM-0.5BMiniCPM4 LM + LocDiT flow-matching + AudioVAE,int8 LMmlboydaisuke/VoxCPM-0.5B-CoreAISpeak
VoxCPM2 2B48 kHz;MiniCPM4 28 层 LM + LocDiT-12L + 48kHz AudioVAEmlboydaisuke/VoxCPM2-CoreAISpeak

以上模型均为 Apache-2.0 许可。

解码速度​

测试环境是 iOS 27 / macOS 27 developer beta,Apple coreai-pipelined GPU 引擎,单位 tok/s。

模型iPhone 17 Pro GPUM4 Max GPU备注
MiniCPM5-1B61.7246.6int8 per-block-32(2026-09-09 起);设备端 gate 24/24 + 6/6
MiniCPM5-1B(ANE)76.8 / 76.8—权重字节宽度相同,int8 GPU 为 67.1 / 64.4
MiniCPM5-2B22.4127.6—
MiniCPM5-2B(ANE)55.4 / 51.5—对比 22.8 / 20.6;权重字节数减半,精度不同
BitCPM-8B1762.7—
MiniCPM-V 4.653.4224.3—
MiniCPM-V 4.7-1B98.0(iPhone 18 Pro)134.4(Python runtime)—

社区也提交了 MiniCPM5 的实测数据,覆盖 iPhone 18 Pro Max、M4 Pro、iPhone 17、iPhone 17 Pro 等设备。

使用 CoreAIKit​

用 CoreAIKit(0.4.1),几行 Swift 就能加载模型、开始对话:

Swift
import CoreAIKit

guard let modelID = ModelCatalog.builtin.entry(id: "qwen3-0.6b")?.modelID else {
throw CoreAIKitError.modelNotAvailableOnPlatform(id: "qwen3-0.6b")
}
let chat = try await ChatSession(model: modelID)
let reply = try await chat.respond(to: "What is the capital of Japan?")
print(reply)

也可以直接跑 ChatDemo 命令行工具:

Bash
git clone --branch 0.4.1 --depth 1 https://github.com/john-rocky/coreai-kit
cd coreai-kit/Examples/ChatDemo
export DEVELOPER_DIR=/Applications/Xcode-27.0.0-Beta.5.app/Contents/Developer
swift run -c release chat-cli --model qwen3-0.6b --prompt "What is the capital of Japan?"

Speak 示例配 VoxCPM 0.5B 做语音合成,在 Mac 上大约占 1.37 GB。

转换配方与 gate 验证​

每个模型的转换流程写在 models/<model>/recipe.toml 里,用脚本列出、查看、执行:

  • zoo_convert.py list / show / run:列出、查看、运行转换配方
  • zoo_verify.py mlboydaisuke/...:校验已发布的模型
  • coreai_gate.py:以 fp32 参考模型为基准,逐 token 比对 greedy 解码结果

转换结果不是字节级确定的,所以正确性以 gate 验证为准。

获取应用​

写在最后​

项目信息

作者
Daisuke Majima (MLBoy)