プログラミング
記事内に商品プロモーションを含む場合があります

【oMLX】Splash Engineを有効にしてローカルLLMを高速化する設定方法

Aru

oMLX 0.7.3がSplash Engineに対応したので、Homebrewでのインストールからモデルごとの有効化までをまとめました。Splashの仕組み、対応モデルの見分け方、Advanced Settingsでの設定手順、ドラフトモデルと注意点を紹介します。

はじめに

oMLXのバージョンが上がり、外部推論エンジンの Splash Engine に対応しました。私が試したのは 0.7.3 です。

ローカルLLMの速度は、モデルだけでなく推論エンジンにも左右されます。oMLXはこれまでMLXベースのエンジンで動いていましたが、Splashを選ぶと別プロセスの推論エンジンに処理を任せられます。設定はモデルごとで、GUIから数項目を切り替えるだけです。

この記事では、Splashの簡単な説明から、実際の設定手順、つまずきやすい点までをまとめます。

あわせて読みたい
【oMLX】MacでローカルLLMのサーバーを動かし、OpenCodeなどから使う方法
【oMLX】MacでローカルLLMのサーバーを動かし、OpenCodeなどから使う方法

Splash Engineとは

Splash EngineはApple Silicon向けに設計されたローカル推論エンジンです。モデルごとに用意されたDFlash 2のドラフトを使った投機的デコーディングと、Metalカーネル、自動メモリ計画を組み合わせて推論します。

Splashはinco.aiが公開しているオープンソース(Apache-2.0)の推論エンジンです。oMLXはMLXをベースにしていますが、SplashはMLXとは別のエンジンで、モデルに合わせたMetalカーネルとドラフトモデルを使うのが特徴です。

主な特徴は次のとおりです。

特徴
  • DFlash 2による投機的デコーディング
    小さいドラフトモデルが複数トークンを先読みし、本体モデルがまとめて検証します。一致した分だけを採用するため、出力の分布は本体モデルに従います
  • モデルごとの専用カーネル
    対応モデルの形状に合わせたMetalカーネルが同梱され、読み込み時に重みをカーネル用のレイアウトへ変換します
  • コーディングエージェント向けの機能
    OpenAI互換(Chat Completions / Responses / Completions)とAnthropic Messagesに対応し、tool callingやvision、内蔵チャットページも備えます
  • プレフィックスキャッシュと同時リクエスト
    キャッシュ済みのプレフィックスを再利用し、同時に届いたリクエストをまとめて処理します

対応モデルはモデルファミリー単位で決まっています。執筆時点のREADMEでは、Qwen3.8-27B、Qwen3.6-35B-A3B、Ornith-1.5-122B、Qwen3.8-Flash-Next、Flintが挙げられています。GGUFとMLXの両方が対象で、モデルごとに対応するドラフトが自動で選ばれます。

oMLXから見たSplash

oMLXの設定画面では、Splashは外部エンジンとして扱われます。Use External Engineの説明には「oMLXのMLXエンジンの代わりに、別プロセスで動く推論エンジンに配信を任せる」とあります。つまり、モデルの読み込みや生成そのものをSplash側が担当します。

このため、Splashを有効にするとoMLX側の Acceleration(MTPやDFlashなど)とメモリ節約、実験的機能は「Not used with external engine」と表示され、使われません。MTPで高速化していたモデルをSplashに切り替える場合は、oMLX側のMTPではなくSplash側のDFlash 2に任せる形になります。

外部エンジンに切り替えると、oMLXの設定のうちどれが効くかは項目によって変わります。速度やメモリの設定を細かく調整する前に、まずSplashで動かしてみるのが分かりやすいと思います。

前提条件

私の環境と、Splashを設定するうえでの前提を整理します。

項目内容
oMLX0.7.3(Splash対応版)
MacApple Silicon
SplashHomebrewでインストール
モデルSplash対応モデルと、対応するドラフトモデル

SplashのREADMEでは、デスクトップアプリとCLIの動作要件として Apple M3以降 と macOS 26.4以降 が示されています。oMLX経由で使う場合にこの条件がどこまで同じかは、公式ドキュメントだけでは判断できませんでした。手元の環境で試す前に、Splash側の要件も確認しておくと安心です。

Splash Engineを設定する手順

設定の流れは次のとおりです。

  1. SplashをHomebrewでインストールする
  2. oMLXを起動し、Splash対応モデルを確認する
  3. モデルのAdvanced Settingsを開く
  4. Use External EngineをONにしてSplashを選ぶ
  5. ドラフトモデルをダウンロードする
  6. 通常どおり推論して動作を確認する

ここからは、実際の画面に沿って説明します。

1. Splashをインストールする

oMLXでSplashを使うには、先にSplash本体をインストールしておきます。Homebrewを使っている場合は次の1行です。

brew install incoai/tap/splash

これでSplashのコマンドが入ります。インストール後にoMLXを起動してください。すでにoMLXを起動していても認識されるみたいですが、認識されない場合は再起動してみてください。

SplashのGUIもありますが、oMLXから呼び出す用としてはHomebrewでインストールすることをお勧めします。

2. oMLXを起動して対応モデルを確認する

Splashを入れてoMLXを起動すると、対応モデルの行に Splash のバッジが表示されます。

モデル一覧の「Splash」バッジのついた項目例

バッジが出ない場合は、そのモデルがSplash非対応か、Splashが正しくインストールされていない可能性があります。まずはバッジが出るモデルで設定を試してください。

3. モデルのAdvanced Settingsを開く

設定画面の モデル から対象モデルを選び、Advanced Settings をクリックします。

モデル詳細の下部にある「Advanced Settings」。右側に「Splash, Thinking Budget」と表示

この画面では、Accelerationやメモリ節約、実験的機能が「Not used with external engine」と表示されています。外部エンジンを選ぶと、これらの設定は使われないという意味です。

4. Use External EngineをONにしてSplashを選ぶ

Advanced Settingsの先頭にある Use External Engine をONにし、プルダウンで Splash を選びます。

Use External EngineをONにして、エンジンにSplashを指定した状態

これでSplashが有効になります。設定はモデルごとなので、Splashを使いたいモデルごとに同じ操作をします。

5. ドラフトモデルをダウンロードする

Splashは、本体モデルとは別にドラフトモデルを使います。ドラフトがまだダウンロードされていない場合は、設定画面にダウンロードボタンが表示されます。ボタンを押して、ダウンロードが終わるまで待ちます。

ドラフトモデルは投機的デコーディングの下書き役です。本体モデルに対応するドラフトが自動で選ばれるため、基本的に別モデルのドラフトを流用するものではありません。ディスク容量も本体モデルとは別に必要になります。

6. 通常どおり推論して動作を確認する

設定後は、いつもどおりモデルを読み込んでチャットやAPIから使うだけです。応答が返ればSplash経由で動いています。管理画面のチャットで試すと、OpenCodeなどを接続する前に動作を確認できます。

設定時の注意点

モデルごとに設定が必要

Splashの設定はモデル単位です。別のモデルに切り替えたときは、そのモデルでもUse External EngineをONにする必要があります。すべてのモデルに一括で適用する設定ではない点に注意してください。

外部エンジンではoMLX側の高速化設定が使われない

Splashを有効にすると、oMLX側のAcceleration(MTPやDFlash)、メモリ節約、実験的機能は使われません。MTPをオンにして速くしていたモデルでも、Splashに切り替えるとMTPの効果はなくなります。Splash側のDFlash 2とどちらが速いかは、モデルやプロンプトによって変わるため、切り替える前にどちらを使うかを決めておくとよいです。

ドラフトモデルとディスク容量

Splashでは本体モデルに加えてドラフトモデルを保持します。さらに、oMLXのKVキャッシュやSplash側のキャッシュもディスクを使います。大きなモデルをいくつも置いている場合は、空き容量を確認してから設定してください。

メモリ使用量に余裕を持つ

本体モデルとドラフトモデルの両方がメモリに載ります。oMLXのメモリ節約は外部エンジンでは使われないため、ギリギリのサイズのモデルでは読み込めないことがあります。動かない場合は、量子化の小さいモデルに切り替えるか、他のモデルをアンロードしてください。

バージョンによる違い

oMLXもSplashも更新が頻繁なツールです。私が試したのはoMLX 0.7.3で、設定項目の名前や既定値はバージョンで変わる可能性があります。画面の文言がこの記事と違う場合は、公式のリリースノートやREADMEを確認してください。

Splashの速度の目安

Splashを使う利点は速度です。Splashの公式READMEには、DecodeとPrefillの両方が速くなるというベンチマークが掲載されています。以下は公式READMEの表を引用したものです。

MetricQwen3.6-35B-A3BQwen3.8-27BQwen3.8-Flash-Next
Decode · short prompt210 tok/s (1.7×)74 tok/s (2.0×)95 tok/s (1.3×)
Prefill · 32K prompt2,011 tok/s (1.3×)363 tok/s (1.2×)1,312 tok/s (1.3×)
Cached time to first token · 32K replay123 ms (6.6×)282 ms (7.3×)171 ms (212×)
Aggregate decode · 4 concurrent short prompts357 tok/s (2.0×)170 tok/s (3.9×)171 tok/s (2.4×)

この表は、Splash 1.0をM5 Pro(16コアGPU、48GB)で動かし、SPEED-Benchのコーディング向けプロンプトを使ってHTTP経由で測ったものです。倍率は、同じベンチマークで測った次に速いエンジンとの比較です。Qwen3.8-Flash-NextだけはM5 Pro(20コアGPU、64GB)で、同じGGUFを動かしたStrataとの比較になっています。

各項目の意味は次のとおりです。

  • Decode · short prompt
    短いプロンプトでの生成速度です。チャットの応答速度に近い指標です
  • Prefill · 32K prompt
    32Kトークンのプロンプトを処理する速度です。長いコンテキストを読ませるときに効きます
  • Cached time to first token · 32K replay
    プレフィックスキャッシュが効いたときの、最初のトークンまでの時間です
  • Aggregate decode · 4 concurrent short prompts
    4つの短いプロンプトを同時に流したときの合計スループットです

私の場合、Qwen3.6-35B-A3BとQwen3.8-27Bをメインに使っているので、この2つが高速化されるのは大きいです。

この表は私の環境で測ったものではなく、Splashの公式READMEに掲載されている数値です。Macの世代、メモリ容量、モデルの量子化、プロンプトの内容で結果は変わります。

LM Studioや他の環境との違い

LM StudioでもSplashをエンジンとして使うことができます。oMLXの場合は、KVキャッシュをSSDに保存して再利用する仕組みがあるため、特にOpenCodeなどのコーディングエージェントをマルチエージェントで使うときに重宝します。同じプレフィックスを何度も送る使い方では、このキャッシュの有無が待ち時間の差になりやすいです。

Strata、oMLX、Unsloth、LM Studioと、GUIを備えた使いやすいLLMの実行環境が増えてきました。それぞれ特徴があり、どれが良いかは使うモデルによっても違います。進化も早いので、しばらくすると評価が入れ替わることもあります。

外部エンジン利用時にoMLX側のKVキャッシュがどこまで効くかは、oMLXのバージョンや設定によって変わる可能性があります。気になる場合は、同じプロンプトを繰り返して待ち時間を比べてみてください。

今回、Splashに変えることで体感でわかるレベルで速度が改善しました。PrefillもDecodeも圧倒的に高速になりました。

まとめ

oMLX 0.7.3でSplash Engineが使えるようになり、設定は「Splashを入れる」「モデルのAdvanced SettingsでUse External EngineをONにしてSplashを選ぶ」「ドラフトモデルをダウンロードする」の3ステップでした。GUIの設定はモデルごとに完結するので、難しいファイル編集はありません。

Splashの利点は、DecodeとPrefillの両方が速くなることです。公式ベンチマークでは、Qwen3.6-35B-A3BやQwen3.8-27Bで生成とプロンプト処理の両方が改善し、キャッシュが効いたときの最初のトークンまでの時間も短くなっています。私のようにこの2つをメインに使っている場合は、試す価値が大きいと思います。

一方で、Splashは外部エンジンなので、oMLX側のMTPやメモリ節約は使われません。ドラフトモデルとキャッシュの分だけディスクとメモリにも余裕が必要です。設定するときは、まず対応モデルでSplashのバッジを確認し、ドラフトモデルをダウンロードしてから、よく使うプロンプトで一度動かしてみてください。速度の数値を比べるときは、モデル、量子化、プロンプト長、出力長を揃えると判断しやすくなります。

あわせて読みたい
【oMLX】MTP(Multi-Token Prediction)を有効にしてローカルLLMの生成を高速化する
【oMLX】MTP(Multi-Token Prediction)を有効にしてローカルLLMの生成を高速化する
あわせて読みたい
【oMLX】MacでローカルLLMのサーバーを動かし、OpenCodeなどから使う方法
【oMLX】MacでローカルLLMのサーバーを動かし、OpenCodeなどから使う方法

ABOUT ME
ある/Aru
ある/Aru
IT&機械学習エンジニア/ファイナンシャルプランナー(CFP®)
専門分野は並列処理・画像処理・機械学習・ディープラーニング。プログラミング言語はC, C++, Go, Pythonを中心として色々利用。現在は、Kaggle, 競プロなどをしながら悠々自適に活動中 保有資格:CFP, マンション管理士、管理業務主任、宅建士など
記事URLをコピーしました