← すべての記事

Core ML vs MLX vs Foundation Models:AppleのオンデバイスAIスタックを選ぶ

Appleは現在、ユーザーのハードウェア上でモデルを実行する方法を4つ提供しており、選択を誤れば書き直しという代償を払うことになります。 本稿を執筆しているM2 Maxでは、MLXがfp16の行列演算で11.2 TFLOPSを持続し、実測のユニファイドメモリ帯域幅351 GB/sでデータを転送します1。ただし、ほとんどのアプリにとってこの性能は正しい選択ではありません。標準搭載のFoundation Modelsフレームワークなら、Swift 6行、ダウンロードサイズの増加ゼロメガバイトで同じ仕事が片付くからです。4つのフレームワークは競合関係にありません。1つの問いに対する4つの異なる答えなのです。そのモデルは誰のものか、そして実行は誰が保守するのか。

TL;DR

  • Foundation Models が既定の選択肢です。Appleのオンデバイスの約3BパラメータLLMでタスクをこなせるなら(要約、抽出、分類、構造化出力の生成、自作ツールの呼び出し)、モデルの重みを一切同梱せず、推論コストもゼロで、OSレベルのモデル更新の恩恵を無償で受け続けられます。2
  • Core ML は 自分の 学習済みモデルをアプリに同梱して出荷するためのものです。Neural Engineへの一級のディスパッチ、App Storeに適したパッケージング、そして柔軟性と引き換えにバッテリー持ちと予測可能性を得る事前コンパイルの契約——これらを備えた唯一の経路です。3
  • MLX はモデルそのものがプロダクトである場合に使います。研究、ファインチューニング、オープンウェイトのLLMの実行、あるいはテンソルをイーガーに制御する必要があるあらゆるワークロードです。開発マシンとMacアプリのための道具であり、iOSへの出荷手段ではありません。4
  • Core AI(iOS 27)は、そのすべての下に敷かれた新しい土台です。NDArrayテンソルと明示的な演算ユニット指定を備えた低レベルのモデル実行フレームワークで、現在Core MLをテンソルランタイムとして酷使しているチームに向いています。
  • 判断はたいてい1つの問いで済みます。組み込みモデルならFoundation Models、自分のモデルをiOSでならCore ML、自分のモデルを自分のMacでならMLX、iOSでテンソルレベルの制御が要るならCore AI。 本稿の残りは、この経験則が破綻する20%のケースについてです。

問いの背後にある問い

「どのフレームワークか」という議論は、私が見てきた限りすべて2つの軸に収束します。(それぞれについては個別に詳しく書いています。Foundation Models、Core ML、MLX、Core AI。)

軸その1:重みは誰のものか。 Appleの組み込みモデルか、自分で学習または変換したモデルか、ハブから取得したオープンウェイトか。Foundation Modelsが実行するのはAppleのモデル(に加えて自作のLoRA形式アダプタ)だけです5。Core MLとMLXが実行するのは、自分で用意した重みだけです。この一点だけで、性能の話に入る前に選択肢の半分が消えます。

軸その2:実行を所有するのは誰か。 Foundation Modelsはすべてを隠します。テンソルもなく、演算ユニットもなく、セッションオブジェクト以上のコンテキストウィンドウ管理もありません。Core MLはほとんどを隠します。コンパイル済みの .mlmodelc を渡して演算ユニットをヒントで示せば、ディスパッチはフレームワークが決めます。MLXは何も隠しません。配列演算は自分で書き、遅延評価とユニファイドメモリが手持ちの道具になります。Core AIはCore MLとMLXの中間に位置します。テンソルと演算ユニット指定は明示的ですが、実行の管理はApple側です。

実際の機能をこの2軸にプロットすれば、フレームワークはおのずと決まります。

Foundation Models Core ML MLX Core AI
モデルの持ち主 Apple(オンデバイスの約3B) 自分(変換済み) 自分(オープンウェイト、ファインチューン) 自分(コンパイル済みアセット)
iOSアプリへの同梱 可(追加0 MB) 可(バンドルに重み) 現実的には不可 可(iOS 27以降)
Neural Engineへのアクセス OSが管理 可、一級サポート 不可(GPU/CPUのみ) 可、明示的に指定
実行スタイル セッションAPI 事前コンパイル イーガー/レイジー配列 テンソルレベル、明示的
学習/ファインチューニング アダプタのみ 不可(推論専用) 可、フル学習 不可(推論専用)
モデル更新 無償、OSとともに アプリの更新で 自己責任 アプリの更新で
最低OS iOS 26 / macOS 26 すべて macOS(Apple silicon) iOS 27 / macOS 27

Foundation Models:ゼロメガバイトの既定解

多くのチームが最初に試すべきフレームワークは、モデルを一切必要としないものです。Foundation Modelsは、Apple Intelligenceの背後にあるオンデバイスLLMを LanguageModelSession を通じて公開します。そして、その決定打はモデルではありません。ガイド付き生成 です。Swiftの構造体に @Generable を付けるとフレームワークがデコードを制約し、モデルの出力が文字列ではなく自分の型そのものになります。パースして祈る必要はありません。2

@Generable
struct Itinerary {
    let destination: String
    let days: Int
    @Guide(description: "Budget in USD") let budget: Double
}

let session = LanguageModelSession()
let itinerary = try await session.respond(
    to: "Weekend in Kyoto under $800",
    generating: Itinerary.self
).content

統合作業はこれで全部です。ダウンロードの手順もなければ、量子化の判断も、発熱について考える必要もありません。モデルのスケジューリングはOSが行い、デバイス上のすべてのアプリで共有され、リリースのたびに更新されます。ツール呼び出しを使えば自分で定義した関数をモデルに実行させられるので、サーバーなしで本当の意味でエージェント的な機能を作るには十分です。2

制約は対称的です。このモデルは約3Bパラメータのジェネラリストにすぎません。要約、抽出、分類、構造化出力のロールプレイは得意ですが、オープンドメインの世界知識、長文コンテキストの文書分析、その他フロンティアモデルにできることは扱えません。組み込みモデルでは足りないとき、Appleの答えはアダプタ(Appleのツールキットでベースモデルに対して学習させるLoRA形式のファインチューン)ですが、アダプタは相応の覚悟を伴います。Appleがベースモデルを改訂するたびに再学習が必要になるからです5。セッション管理やレビュアーが遭遇する失敗モードを含む詳細な分解は、Foundation Modelsの詳細記事にまとめています。

選ぶ基準:タスクが言語的な形をしており、組み込みモデルが品質の基準を満たし、重みをゼロで出荷できることに価値がある場合です。該当する機能は多くのチームが想像するよりずっと多いので、以下のどれかに手を伸ばす前に、まず試してみてください。

Core ML:自分のモデル、Appleの実行

Core MLが答えるのは別の問いです。すでにモデルがあり(画像分類器、埋め込みモデル、音声パイプライン、蒸留したLLMなど)、それをiOSアプリの中で、バッテリー駆動で、App Storeのサイズ制限に収めて、今年中に動かす必要がある、という状況です。

契約は事前コンパイルです。coremltools で重みを変換し、モデルは .mlmodelc にコンパイルされ、実行時にフレームワークが Neural Engine、GPU、CPU へ振り分けます。このリストの中で、今日のiOSでANEを使わせてくれるのはCore MLだけです。本当のエンジニアリングが宿るのは変換の工程です。演算子のカバレッジ、量子化(パレット化、線形8/4ビット、スパース性。coremltools の最適化スタックは実に奥が深いものです6)、そしてモデルが2ワットで動くか8ワットで動くかを決める演算ユニットのヒント付けです。実運用を生き延びるパターン(ディスパッチのヒント、レイテンシ予算、量子化のはしご)はCore MLの柱記事で扱っています。

Core MLがしないことも、同じくらい重要な意味を持ちます。学習はしません、ファインチューニングもしません、グラフの途中でテンソルを触らせもしません。推論の専用機なのです。「自分のグラフを実行し、かつ中間結果を覗きたい」チームは、これまでCore MLをテンソルランタイムへと無理やり捻じ曲げてきました。その捻じれを吸収するために存在するのが、まさにCore AIです。

選ぶ基準:重みが自分のもので、ターゲットがiOS/iPadOS(またはApple横断)で、バッテリー・サイズ・ANEが問題になる場合。つまり、このプラットフォームで出荷されているカスタムモデル機能のほぼすべてです。

MLX:Macの中の研究マシン

MLXは異色の存在です。OSのフレームワークではなく、AppleのML研究グループが公開しているオープンソースの配列フレームワークだからです4。見た目はNumPyに似ており、評価は遅延で、Apple siliconのユニファイドメモリをそのまま機能として扱います。ホストとデバイス間のコピーは発生しません。デバイス側に別のメモリが存在しないからです。

このマシンで得られた数値が、その主張を具体的にしてくれます。M2 MaxはチューニングなしのMLXで、4096×4096のfp16行列積で11.2 TFLOPS、実測のストリーミング帯域幅351 GB/s を持続します1。量子化した30Bパラメータのオープンウェイトモデルを対話的に動かし、7BモデルをLoRAで一晩ファインチューニングし、本来ならクラウドGPUを借りることになる学習ループを回すには十分な数字です。mlx-lm のエコシステムのおかげで、たいていのオープンモデルは pip install とダウンロードだけで手が届きます。

境界も同じくらい具体的です。Neural Engineは使えません。MLXがプログラムするのはGPU(とCPU)であり、ANEではありません。iOSへの出荷ストーリーもありません。技術的には組み込めますが、重みの配布、発熱、審査ガイドラインを考えると誤った道具です。MLXは自分のMac、ユーザーのMac、そして研究のループのためのものです。そして、実行を代わりに管理してくれる存在はいません。メモリ圧、量子化の選択、評価のスケジューリングは、すべて自分の担当です。「Appleのモデルではなく自分のモデル」がその所有コストに見合うのはどんなときかは、MLXの柱記事で扱っています。

選ぶ基準:学習やファインチューニングをしている、オープンウェイトのLLMをローカルで動かしている、あるいはモデルの制御そのものが価値になるMacネイティブのツールを作っている場合。日常使いのマシンが十分なRAMを積んだApple silicon Macなら、MLXはそれを本物のMLワークステーションに変えてくれます。

Core AI:新しい土台

iOS 27で、Appleに欠けていた層が加わりました。Core AI です。NDArrayテンソル、アセットとモデルの分離、明示的な演算ユニット指定、そして呼び出し可能な推論関数を備えた低レベルのモデル実行フレームワークです7。Core MLの「コンパイル済みモデルを渡せば予測が返る」という契約が硬すぎるときに使います。テンソル演算とモデル呼び出しを織り交ぜるパイプライン、ANEで動かすべきカスタムの前処理・後処理、バッファを共有する複数モデルのグラフなどです。

2つの補足が、多くの読者の回り道を防いでくれます。Core AIはFoundation Modelsの代替では ありません(この層に組み込みLLMは依然として存在せず、コンパイル済みアセットは自分で持ち込みます)。そして、iOS版のMLXでも ありません。学習も自動微分もイーガーな研究ループもないからです。Core MLのエンジンルームのハッチを開けたもの、と考えてください。Core MLの抽象と格闘したことがないなら、Core AIは不要です。MLMultiArray の曲芸を出荷した経験や、不要な変換を挟んでモデルを数珠つなぎにした経験があるなら、もう必要になっています。テンソルモデルと指定用のAPIはCore AIの柱記事で扱っています。

実際に議論になるケース

「LLMが必要だが、自前のもの/もっと大きいものを使いたい」 Foundation Modelsは外部の重みを読み込めません。例外はありません。蒸留した小型LLMをCore MLで動かせば機能しますし、ANEも使えます。量子化したオープンモデルをMLXで動かせばMacで機能します。オンデバイス界隈で誰も口に出したがらない代替案も、正直に認めましょう。タスクにフロンティア級の品質が必要なら、答えはサーバー呼び出しであり、オンデバイスの層はフォールバックとプライバシーに敏感な部分集合を受け持ちます。

「iPhoneとMacで1つのスタックにまとめたい」 Foundation ModelsとCore MLはどちらもAppleのエコシステム内でクロスプラットフォームですが、MLXは実質的にMac専用です。Mac向けのプロ用アプリとiOSのコンパニオンアプリを出荷するチームは、Macでは MLX(大きなモデル、ユーザー提供の重み)、iOSでは Core MLかFoundation Models、という落とし所によく行き着きます。同じ機能、2つのエンジン、そして「デバイスは別物である」という1つの正直な認識です。

「すでにCore MLのパイプラインがある。Core AIは移行先になるか」 痛みのある箇所に限ればイエスです。Core AIが吸収するのはテンソル的な縁の部分であり、今日動いているコンパイル済みモデルの中核はそのまま動き続けます。健全なCore MLのデプロイをまるごと移行しても、得るものは何もありません。

「SwiftDataやApp Intentsはこの話に影響するか」 隣接しますが、重なりません。モデル層が支えるのは、App Intentsがシステムに公開する機能であり、永続化するものはSwiftDataのスキーマ規律に従います。ここで扱ったフレームワークが決めるのは 推論をどう走らせるか であって、その周りのアプリをどう組み立てるかではありません。

判断ツリー

Is the task language-shaped and within a ~3B generalist's reach?
├── YES → Foundation Models. Ship zero weights. Done.
└── NO → Whose weights?
    ├── Apple's, but specialized → Foundation Models + trained adapter
    │     (accept: retrain per base-model rev)
    └── Yours →  Where does it run?
        ├── iOS/iPadOS app → Core ML
        │     └── unless you need tensor-level control → Core AI (iOS 27+)
        ├── Mac, models-as-product / training / open weights → MLX
        └── Frontier-quality required → server, with on-device fallback

重要なポイント

機能を出荷するアプリチームへ: - まずFoundation Modelsでプロトタイプを作りましょう。Swift 6行は考えうる最も安価な実験であり、「組み込みモデルで十分だった」は最も多い驚きです。 - Core MLの変換にかかる時間は、推論時間とは別に見積もってください。週単位の時間が溶けるのは、演算子のカバレッジと量子化です。

MLエンジニアへ: - 64GB以上を積んだApple silicon Macは、MLXの下では本物のファインチューニング環境です。クラウドGPUを借りる前に測定しましょう。上記の11.2 TFLOPS/351 GB/sという数字は、2世代前のノートブック向けチップから出たものです。1 - ANEは依然としてCore ML(そして今はCore AI)の堀です。推論あたりのバッテリー消費が問題になるなら、GPU経路では太刀打ちできません。

アーキテクトへ: - 4つのフレームワークはライバルではなくレイヤーとして扱ってください。言語系の機能にはFoundation Models、出荷するカスタムモデルにはCore ML、テンソル的な縁にはCore AI、Macと研究室にはMLXです。本格的なアプリでは混成構成が標準であり、不吉な兆候ではありません。 - 長期的なコストセンターはモデルの 所有 です。Foundation Modelsの重みはAppleが保守し、それ以外はすべて自分で保守します。この点を選択の値段に織り込んでおきましょう。

よくある質問

オンデバイスでモデルを動かすには、どのAppleフレームワークを使うべきですか

判断はたいてい1つの問いで済みます。組み込みモデルならFoundation Models、自分のモデルをiOSで動かすならCore ML、自分のモデルを自分のMacで動かすならMLX、iOSでテンソルレベルの制御が必要ならCore AIです。機能を2つの軸——誰の重みを動かすのか、実行を誰が所有するのか——にプロットすれば、フレームワークはおのずと決まります。4つをライバルではなくレイヤーとして扱ってください。本格的なアプリでは混成構成が標準です。

Foundation Modelsで自分のモデルの重みを動かせますか

いいえ。Foundation Modelsが実行するのは、Appleの組み込みオンデバイスモデル(およそ3Bパラメータのジェネラリスト)と、自作のLoRA形式アダプタだけです。外部の重みは読み込めません。例外はありません。自前のLLMが必要なら、蒸留した小型モデルをCore MLで動かせば機能し、Neural Engineも使えます。量子化したオープンモデルをMLXで動かせばMacで機能します。タスクにフロンティア級の品質が必要なら、答えはサーバー呼び出しです。5

MLXをiOSアプリに同梱して出荷できますか

現実的には無理です。MLXはOSのフレームワークではなくAppleのML研究グループによるオープンソースの配列フレームワークで、プログラムするのはGPUとCPUのみ、Neural Engineへのアクセスはありません。加えて重みの配布、発熱、審査ガイドラインを考えると、iOSのバンドルには誤った道具です。MLXは自分のMac、ユーザーのMac、そして研究のループのためのものです。4

Core MLとCore AIの違いは何ですか

Core MLは事前コンパイル型の推論です。コンパイル済みの .mlmodelc を渡し、演算ユニットをヒントで示すと、ディスパッチはフレームワークが決めます。iOS 27で加わったCore AIは、そのエンジンルームのハッチを開けたものです。NDArrayテンソル、アセットとモデルの分離、明示的な演算ユニット指定を備えます。それでも学習は行わず、組み込みLLMも同梱しません。Core MLの抽象と格闘したことがないなら、必要ありません。7

ローカルの機械学習でM2 Maxはどのくらい速いですか

本稿を執筆しているM2 Maxでは、MLXがチューニングなしで、4096×4096のfp16行列積を11.2 TFLOPS、実測のストリーミング帯域幅を351 GB/sで持続します。量子化した30Bパラメータのオープンウェイトモデルを対話的に動かし、7BモデルをLoRAで一晩ファインチューニングするには十分な数字です。クラウドGPUを借りる前に測定してください。この数字は2世代前のノートブック向けチップから出たものです。1

参考文献


  1. 著者によるApple M2 Max(96 GB)、macOS 26.5、Python経由のMLXでの実測値。fp16行列積は2048×2048で8.57 TFLOPS、4096×4096で11.19 TFLOPS(ウォームアップ後20回の平均、mx.eval で同期)。ユニファイドメモリのストリーミング帯域幅は、1 GBのfp32配列に対する読み取り+書き込みとして351 GB/sを測定(M2 Maxの仕様上の帯域幅は400 GB/s)。 ↩↩↩↩

  2. Apple、Foundation Modelsフレームワークのドキュメント。LanguageModelSession、@Generable/@Guide によるガイド付き生成、オンデバイスモデルに対するツール呼び出し。 ↩↩↩

  3. Apple、Core MLのドキュメント。モデルの統合、演算ユニットの設定、Neural Engine・GPU・CPUにまたがるオンデバイスのディスパッチ。 ↩

  4. AppleのML研究チーム、GitHub上のMLX。Apple silicon向けのオープンソース配列フレームワーク。NumPyライクなAPI、遅延評価、ユニファイドメモリモデル。 ↩↩↩

  5. Apple、Foundation Modelsのアダプタ学習。オンデバイスのベースモデル向けにLoRA形式のアダプタを学習する方法。アダプタは新しいベースモデルのバージョンに対して再学習が必要です。 ↩↩↩

  6. Apple、coremltoolsの最適化ガイド。Core MLモデルを圧縮するためのパレット化、線形量子化、スパース性のオプション。 ↩

  7. iOS 27 SDKにおけるCore AIフレームワークの表面に基づく著者の分析。詳細はCore AI:Apple siliconでモデルを動かすで扱っています。 ↩↩

関連記事

Core MLのオンデバイス推論:実際に出荷まで到達するパターン

Core MLはNeural Engine、GPU、CPUでモデルを実行します。実際に出荷まで到達するパターンは、モデル変換、ディスパッチのヒント指定、レイテンシ予算、そして量子化です。

17 分で読める

Apple Silicon上のMLX——Appleのモデルではなく、自前のモデルが必要になったとき

Foundation Modelsが提供するのは、Appleが封をしたオンデバイスのLLMです。MLXなら自前のモデル——量子化されたオープンウェイトモデルやLoRAファインチューン——をApple Silicon上で動かせます。

11 分で読める

Mac App Store はウィンドウマネージャーの存在を許さない。それでも私は出荷した。

App Sandbox は、あらゆるウィンドウタイラーが必要とする API を禁じており、Apple はストアの外で配布せよと答えました。941 Tiles はストアの中で出荷しています。ウィンドウを動かすのは Apple の Shortc…

11 分で読める