Apple Siliconに特化する「Lily」の革新性

Perplexity AIは、同社の「Hybrid Compute in Perplexity Computer」の中核技術であるローカル推論エンジン「Lily」をオープンソースとして公開しました(出典)。このLilyは、Rust言語とApple独自のグラフィックAPIであるMetalを駆使して開発されており、特にQwen3.6-35B-A3BモデルのApple Silicon上での動作に特化している点が大きな特徴です。

Lilyは、単一のモデル、単一のハードウェアファミリーに特化することで、他にはないパフォーマンスを発揮します。

既存のAIフレームワークであるPyTorchやMLXが実行パスに介在しない設計となっており、モデル構造、実行計画、カーネル選択がすべてランタイム内で完結します。この「狭さ」がLilyの高性能を支える最大の理由だと感じます。僕自身も個人プロダクトでローカルLLMを動かすことが多いので、特定の環境に特化することでどれだけのパフォーマンスが得られるのか、非常に興味があります。

MLXとのアプローチの違い

Apple SiliconにおけるデフォルトのMLスタックといえば、MLXとMLX-LMが挙げられます。これらのフレームワークもQwenの実装を提供していますが、様々なアーキテクチャで再利用可能であるように設計されています。

Lilyはここをあえて捨て、モデル構造から実行計画までを単一のランタイムに統合することで、MLXでは実現できない最適化を可能にしているわけです。具体的な違いを以下のテーブルにまとめました。

項目 MLXのアプローチ Lilyのアプローチ
汎用性 複数のモデル・アーキテクチャに対応する汎用性 Qwen3.6-35B-A3BとApple Siliconに特化
実行パス PyTorchやMLXが介在 RustとMetalで直接実行
最適化 汎用的な範囲での最適化 特定モデル・ハードウェアに合わせた深い最適化

Lilyが実現する高速な前処理(Prefill)

Lilyが特に注力しているのは、プロンプトの前処理(Prefill)の高速化です。Qwen3.6-35B-A3Bモデルは350億のパラメータを持ち、各トークンで約30億のパラメータが活性化されます。このモデルは、Grouped-Query AttentionやGated DeltaNetといった先進的なアーキテクチャを組み合わせているため、計算負荷が高いのが現状です。

Lilyは、この重い処理を高速化するために、いくつかの革新的な最適化を導入しています。

  • 量子化ウェイトのオンザフライ再構築: チェックポイントはグループワイズアフィン4ビット量子化を使用しており、約70GBのbfloat16ウェイトを19.4GBに圧縮しています。Metal 4のテンソル操作はbfloat16を消費するため、ウェイトを再構築する必要がありますが、Lilyはこれをグループ化されたGEMM内でタイル単位で実行し、結果をスレッドグループメモリに保持してFP32で累積します。これにより、拡張された配列がユニファイドメモリに到達するのを防ぎます。Perplexityの検証では、この融合により512トークンのプロンプトでエンドツーエンドのプリフィルが 77.4% 向上したと報告されています(出典)。
  • GPU上でのルーティング処理: MoE(Mixture of Experts)レイヤー内のCPU同期を排除するため、ルーティングヒストグラム、プレフィックススキャン、スキャッター、ブロックマップを単一のGPUコマンドバッファ内に保持します。これにより、512トークンで 89% の性能向上が見られました(出典)。

これらの最適化は、特にMoEモデルの効率的な実行に不可欠だと感じます。僕もローカルLLMを動かす際にプロンプト長が長くなると処理時間がネックになることが多いため、このような工夫は非常に参考になりますね。Claude Codeにこの辺りのMetalカーネルのコードを投げてみたら、もう少し最適化のヒントが得られるかもしれません。

動作環境と導入の容易さ

Lilyは、GitHubのリポジトリ pplx-garden 内でスタンドアロンのデモとして公開されており、OpenAI互換の最小限のHTTP APIを介してテキスト生成を提供するRustおよびMetal製の推論サーバーが含まれています(出典)。

モデルの4ビット量子化されたチェックポイントのサイズは19.4GBであるため、Apple Silicon搭載Macの要件としては、32GB以上のユニファイドメモリが現実的な最低ラインとされています。PerplexityのHybrid Compute製品では、macOS 15以上、最小24GB、最適には32GBが推奨されています。私の自作PCはRTX 3090を搭載していますが、Apple Siliconの高いメモリ帯域と低遅延はローカルLLMにおいてやはり有利だと感じますね。