>_ DevTrendsja

言語

ホーム

言語

セクション

フロントエンド バックエンド モバイル DevOps AI / ML ゲーム開発 ブロックチェーン 組み込み セキュリティ
Python

Apple Silicon上でローカルLLMを最大2倍高速化するMTPLX

MTPLX

最新のQwenシリーズモデルをMacBookで実行したことがある方なら、長いレスポンスの生成中にメモリ帯域幅の天井にぶつかることに気づいたことがあるでしょう。通常、推論的高速化には投機的デコーディング(speculative decoding)が使われます。しかし、従来の方法には厄介な欠点があります。Macの貴重なユニファイドメモリに、小さい方のドラフトモデルを別途保持しなければならないということです。

最近、開発者のYoussof Altoukhiさんが作成したMTPLXプロジェクトを見つけました。著者はApple Siliconアーキテクチャと、Qwen 3.5、3.6、3.8のような最新モデルの重みに既に組み込まれているマルチトークン予測ヘッド(MTP)から、最後の1滴までパフォーマンスを絞り出すことを決意しました。

2つ目のモデル不要!MTPの裏技

既存のほとんどのランタイムは、重み内のMTPヘッドを単に無視しています。MTPLXはそれとは異なります。

モデルは本身で複数のトークンを先にドラフトし、MLX 통한単一のフォワードパスでバッチ全体を検証します。検証には、LeviathanとChenによる精密な棄却サンプリングアルゴリズムと残差補正が使用されます。

これは実際にはどういう意味を持つでしょうか?簡略化やヒューリスティクスはありません。確率分布は、通常のステップバイステップ生成と全く同じになります。temperature=0.6top_p=0.95を設定すれば、MTPなしの場合と全く同一のレスポンスがモデルから得られます。ただ、ずっと高速なだけです。

M4 Mac mini(16GBメモリ)では1.6倍、M5 Maxチップでは最大2.24倍の高速化が達成されています。

MTPLX Dashboard

中身を見る:アプリとCLI

このプロジェクトには2つの形態があります:macOS 14+用のネイティブGUIアプリケーションと、古典的なCLIツールです。

グラフィカルクライアントが全ての重い処理を担当します。初回の起動時に利用可能なメモリを分析し、適切なモデルを選択し、ダウンロードして、分離されたPython環境を設定します。さらにファン管理機能も提供するため、長いタスク実行中にもMacBookがスロットリングを起こすことなく動作します。

MTPLX Chat Interface

ターミナル更喜欢の場合は、Homebrewまたはpipでインストールできます:

brew install youssofal/mtplx/mtplx
mtplx start

またはpipの場合:

python3 -m pip install mtplx

主な機能

  1. 自動的なドラフト深度チューリング。MTPの効率性は、特定のチップとメモリバス幅に依存します。mtplx tune --retuneコマンドは、お手元のハードウェアで異なる深度(Depth 1、2、3)でモデルを実行し、最速のオプションをロックします。もしお使いの設定でMTPが通常の自己回帰モードに負けてしまった場合、プログラムは正直にドラフトを無効化します。
  2. ローカル互換サーバー。mtplx serveコマンドはポート8000でサーバーを起動します。OpenAI(/v1/chat/completions)とAnthropic(/v1/messages)フォーマットに互換性があります。Claude Code、Cline、Continue、Open WebUIは箱から出してすぐに動作します。
  3. 組み込みのエンベディングとリランキング。RAGに別のサーバーは必要ありません。デーモンはMLXエンベディングモデルとリランカーを並行して保持でき、リクエストに応じてオンデマンドでメモリにロードします。
  4. 独自モデルの構築用Forgeユーティリティ。パッケージにはmtplx forgeツールが含まれており、Hugging FaceリポジトリをMLX形式に変換し、MTPアダプターをファインチューニングし、前後の速度を測定します。

Forge Tool

サーバーの使い方

サーバーの起動後、標準的なリクエストでクエリできます:

curl http://127.0.0.1:8000/v1/chat/completions \
  -H 'Content-Type: application/json' \
  -d '{"model":"mtplx","messages":[{"role":"user","content":"Привет!"}],"stream":true}'

エージェントシステムやRAGパイプラインを構築する場合は、検索モデルを最初から指定できます:

mtplx serve \
  --embedding-model mlx-community/Qwen3-Embedding-8B-4bit-DWQ \
  --reranker-model vserifsaglam/Qwen3-Reranker-4B-4bit-MLX

セッションはSSDに保存されるため、サーバーが再起動しても、以前の長い会話のコンテキストがほぼ瞬時に復元されます。

プロジェクトの制約

妥協のない奇跡はありませんので、いくつかのことを頭に入れておいてください:

  • このツールはApple Silicon(M1以降)専用に書かれており、MLXフレームワークに依存しています。LinuxユーザーやNVIDIA GPUユーザーは、vLLMやSGLangを使い続けるべきです。
  • MTPLXはランダムなモデルに任意のMTPヘッドをアタッチすることはできません。重みの不一致が生成の数学的正確性を壊してしまうからです。著者のHugging Face公式カタログ(Qwen 3.5、3.6、3.8、Gemma 4)からの検証済みビルドを使用するか、組み込みのForgeを使用してアダプターをゼロからトレーニングする必要があります。

試す価値はあるか

Macでコードを書き、ContinueやClineを通じてローカルLLMを使用している場合、MTPLXは追加のソフトウェアを購入することなく、優れた高速化をもたらします。Qwen 3.8 27Bのようなモデルでは、自动補完のレスポンシブさとコード生成の違いがすぐに体感できます。

このプロジェクトは寛容なApache-2.0ライセンスで配布されており、ソースコードはクリーンで、ベンチマークはmtplx benchコマンドでターミナルから再現可能です。ローカル開発者にとって素晴らしい発見です。

関連プロジェクト