Perplexity、Apple Silicon推論エンジンLilyをオープンソース化

PerplexityがApple Silicon向け推論エンジンLilyをオープンソース化。RustとMetalでMLX比1.3倍高速。

投稿者 central
Perplexityが公開したLilyは、Apple Siliconに特化した高速推論エンジン。
ハイライト
  • LilyはPyTorchやMLXを使わず、RustとMetalのみで実装されている。
  • Qwen3.6-35B-A3Bという一つのモデルに特化し、性能を最大化している。
  • ベンチマークではMLX-LMに対し、プリフィルで約1.21倍、デコードで約1.37倍の性能を示した。

米Perplexityは現地時間9月1日、Apple Silicon向けに特化したローカル推論エンジン「Lily」をオープンソースソフトウェアとして公開した。同社が提供する「Perplexity Computer」のハイブリッドコンピュート機能を支える中核技術であり、GitHub上のリポジトリ「pplx-garden」にてコードとデモが公開されている。Lilyの最大の特徴は、PyTorchやMLXといった汎用機械学習フレームワークを一切介さず、RustとMetal(AppleのGPU向け低レベルAPI)のみで実装されている点にある。

Lilyとは何か――単一プロセス、単一モデル、単一ハードウェアへの徹底特化

Lilyは、Rust製のレイヤーがチェックポイントを読み込み、生成ループを駆動する。推論サーバーはOpenAI互換のChat Completions APIを備え、トークンをストリーミング配信する。モデルの実行は、すべて手書きのMetalカーネルが担う。この設計の意図は明確だ。LilyはQwen3.6-35B-A3Bという1つのモデル、そしてApple Siliconという1つのハードウェアファミリーにのみ対応する。この「狭さ」こそがパフォーマンスの源泉である。

デプロイは現実的な範囲にある。4ビット量子化されたチェックポイントのサイズは19.4GB。したがって、32GB以上のユニファイドメモリを搭載したApple Silicon Macが実用的な下限となる。Perplexityの製品仕様では、macOS 15以降、最小24GB、推奨32GBとされている。

なぜ汎用スタックを捨てたのか――MLXとの決定的な違い

Apple Silicon上での標準的なLLM実行環境といえば、MLXとMLX-LMである。MLX-LMは既にQwenの実装を備えており、グループ化エキスパート処理、融合リカレントMetalカーネル、GQA対応アテンションなど、高度な最適化が施されている。しかし、MLXはあらゆるアーキテクチャで再利用可能であることを前提に設計されている。この汎用性が、特定のモデルとチップの組み合わせにおいてはボトルネックとなり得る。

Lilyはその制約を潔く放棄した。モデルの構造、実行計画、カーネル選択のすべてを単一のランタイムに統合。結果として、MLX-LM対比でプリフィル(入力処理)で平均1.23倍、デコード(生成処理)で平均1.35倍のスループットを達成している。

Qwen3.6-35B-A3Bの3つのワークロード特性

LilyがターゲットとするQwen3.6-35B-A3Bは、35Bのパラメータを持ちながら、トークンあたりに活性化されるのは約3Bという、極めて効率的なMixture-of-Experts(MoE)モデルである。ルーターが256のエキスパートから8つを選択し、さらに1つの共有エキスパートがすべてのトークンを処理する。アテンション機構も特殊で、10層がグループ化クエリアテンション(GQA)、30層がGated DeltaNetと呼ばれるリカレント構造を採用している。これにより、プリフィルとデコードで全く異なる3つの計算パターンが生まれる。

プリフィル最適化――重みの再構築をGEMM内部に融合、77.4%向上

プリフィルでは、複数のトークンを同時に処理するため、重みの再利用が効く。Lilyはここで、4ビット量子化された重みの再構築(bf16への展開)を、グループ化GEMMの内部でタイル単位で実行する。結果をスレッドグループメモリに保持し、FP32で累積。展開された配列がユニファイドメモリに書き出されることはない。この融合により、512トークンのプロンプトでエンドツーエンドのプリフィル速度が77.4%向上した。

さらに、エキスパートルーティングのヒストグラム、プレフィックススキャン、スキャッター、ブロックマップを単一のGPUコマンドバッファ内に収めることで、CPUとの同期を排除。同じく512トークンで89%の改善を達成した。32行×4 simdgroupのタイル最適化で13.2%、レジスタ常駐型のGated DeltaNetスキャンで5.6%の追加向上を得ている。プリフィル時間の約90%をエキスパートGEMMが占めるため、この領域への集中投資は理にかなっている。

デコード最適化――転送バイト数の極小化、GQAパッキングで23.8%改善

バッチサイズ1のデコードでは、重みの再利用がほぼ発生しない。したがって、性能の上限はメモリ帯域幅で決まる。Lilyはここで、1ステップあたり795ものカーネルを795のシーケンシャルステージではなく、依存関係を考慮した並列Metalパスとしてスケジューリング。選択されたトークンは直接GPU上の入力スロットに書き込まれ、CPUラウンドトリップを排除する。

代表的な最適化として、4つのクエリヘッドが1つのスレッドグループを共有するGQAパッキングがある。これにより各KV行のロード回数が削減され、32Kコンテキストでのデコード速度が23.8%向上した。128Kコンテキストでは固定ブロックアテンションが威力を発揮し、40.2%の改善を記録。その他、KVキャッシュ読み出しのコアレッシングにより、キー帯域幅は33.8GB/sから47.9GB/sへ、バリュー帯域幅は42.0GB/sから61.8GB/sへとそれぞれ向上している。

ベンチマーク結果――MLX-LMを全長で上回る

40コア、128GBのM5 Max上で、同一の4ビットチェックポイントを用いた比較では、Lilyは256トークンから128Kトークンまでの全10ポイントでMLX-LMを上回った。プリフィルで1.12〜1.42倍、デコードで1.31〜1.37倍のレンジ。4Kプロンプト・4Kコンテキストの条件では、プリフィル5749.9トークン/秒(MLX-LM4737.5)、デコード186.6トークン/秒(同140.9)を記録した。品質面では、192ポジションの教教師強制チェックで、パープレキシティの増加はわずか0.04%、同一トップ候補選択率は96.35%と、実質的な劣化は認められない。

オープンソース化の意義と今後の展望

パフォーマンス特化の代償として、LiLyはQwen3.6-35B-A3B以外のモデルを動かせない。しかし、この「一つのモデル、一つのハードウェア」への極端な特化が、汎用スタックでは到達できない効率を実現したことは間違いない。Perplexityはこのエンジンを製品に統合し、実際にユーザーに提供している点も重要だ。オープンソース化により、Apple Silicon上のオンデバイスLLM推論の新たなリファレンス実装が生まれたと言える。今後の展開として、Lilyの設計思想が他のモデルやハードウェアに応用されるのか、あるいはPerplexityがさらに特化を推し進めるのか、注目が集まる。

この記事をシェア