WWDC 2026 で発表された Core AI(Core ML の後継)。
Apple 公式 がいくつかのモデルのエクスポートレシピを公開しています。
coreai-models
ただ、変換スクリプトのみで
変換済みモデルは配布されていない(CoreMLの時はあった)。
ので、手元で変換して生成された .aimodel を 7 モデル、Hugging Face で公開しました。
https://huggingface.co/mlboydaisuke
各モデルカードに ベンチマーク実測値 も載せています。
サンプルアプリも用意しました。
計測はすべて Apple 公式の llm-benchmark(512 プロンプト / 1024 生成 / greedy / warm)。
なぜ「変換済み」を配るのか
coreai形式の .aimodel は
「coreai.llm.export を叩けば誰でも作れる」
のですが、配る理由が2つあります。
① 変換は重い、実行は軽い
エクスポートには大量の RAM が要ります(gpt-oss-20B の変換は 128 GB Mac で実行)。
一方、実行はアーティファクトを mmap できれば動く。変換済みを置いておけば、実行側のマシンだけで試せます。
ついでに言うと Mistral-7B は変換元リポジトリが 27 GB のダウンロードになる(consolidated.safetensors が重複同梱されている)ので、
4.1 GB の変換済みバンドルを落とす方が圧倒的に早いです。
② .aimodel はビルド成果物であって、レシピの純関数ではない
ここが本命。
同じエクスポートコマンド・同じコード・同じ wheel でも、エクスポートした OS が macOS 26 → 27β に変わっただけで 2.2× 遅いアーティファクトが生成されました(Qwen3-0.6B: 1,121 → 484 tok/s)。
26 の成果物は量子化 Linear のネイティブ lowering(プログラム内に dequant ops ゼロ)、27β は明示 dequant に落ちる、という違いです。
詳細はベンチリポジトリの forensicsに。
つまり「レシピを公開している」だけでは再現性の担保にならない。
ハッシュ付きでホストされたアーティファクトが再現可能なground truth です。
公開した全バンドルは、apple-silicon-llm-bench で計測したものとハッシュレベルで同一です(実際に gpt-oss-20B を HF から再ダウンロードして main.mlirb の SHA-256 がカード記載値と一致することを確認済み)。
Qwen3-0.6B のリポジトリには、この「速い方」の macos-26-export バンドルもそのまま同梱しています。
使い方
ダウンロード
hf download mlboydaisuke/gpt-oss-20b-CoreAI-official
Swift アプリから(FoundationModels 経由)
import FoundationModels
import CoreAILanguageModels
let model = try await CoreAILanguageModel(resourcesAt: modelURL) // → macos/ フォルダ
let session = LanguageModelSession(model: model)
let response = try await session.respond(to: "What is quantum computing?")
CLI(coreai-models のチェックアウトから)
swift run -c release llm-runner --model <bundle>/macos --prompt "Hello"
swift run -c release llm-benchmark --model <bundle>/macos
GUI で試すなら
CoreAIChatMac の "Choose Models Folder…" でダウンロードしたフォルダを指定するだけ。
iOS バンドルの注意(Qwen3 0.6B / 4B)
iOS は IR を JIT できないので、デバイスで使う前に AOT コンパイルが必須:
xcrun coreai-build compile <ir>.aimodel \
--platform iOS --preferred-compute neural-engine --architecture h18p
# h18p = iPhone 17 Pro。metadata.json の assets.main を .aimodelc に差し替える
このへんのハマりどころは前回のベンチ記事に書きました。
gpt-oss-20B のメモ
- OpenAI 出荷時の MXFP4 量子化をそのままパススルー(追加量子化なし、変換約3分)
- M4 Max で 78 tok/s / prefill 1,252 tok/s / warm ロード 2.1 s / ピーク RSS 33.9 GB
-
COREAI_CHUNK_THRESHOLDが MoE の prefill メモリダイアルになる: 4096 トークン prefill がチャンクなしだと 1,439 tok/s・dirty 18 GB、chunk-128 だと 766 tok/s・1.7 GB
関連リポジトリ:
- 📊 ベンチ(methodology・生JSONL・Swiftアダプタ全公開): https://github.com/john-rocky/apple-silicon-llm-bench
- 🧰 コミュニティモデル: https://github.com/john-rocky/coreai-model-zoo
- 📱 サンプルアプリ: https://github.com/john-rocky/coreai-samples
🐣
フリーランスエンジニアです。
AIについて色々記事を書いています。
もし以下のようなご要望をお持ちでしたらお気軽にご相談ください。
「AIアプリを開発したい」
「AI機能を作ってみたけど、実際どう運用すればいいかわからない」
いずれも中間コストを省いた価格でお請けできます。
お仕事のご相談はこちらまで
rockyshikoku@gmail.com

