ローカル環境で大規模言語モデル(LLM)を実行するには通常、大容量のRAMが必要です。Gemma 4 26B-A4B のようなモデルは、全重みをロードすると16GBから32GBのメモリを消費します。TurboFieldfare は Mixture-of-Experts (MoE) 構造を活用し、わずか約 2GBのRAM で260億パラメータモデルの推論を可能にします。
メモリ制限における従来の課題#
llama.cpp や MLX などのフレームワークは、全パラメータをメモリに常駐させます。8GB RAMを搭載した Mac(M2 MacBook Air など)では、7Bを超えるモデルの実行はスワップの発生やメモリ不足を引き起こします。
[!NOTE] MoE (Mixture-of-Experts) モデルは、トークンごとに一部の特定の「エキスパート」のみを活性化させるため、全パラメータを同時に計算する必要がありません。
TurboFieldfareのアーキテクチャ概要#
TurboFieldfare はモデルを2つの構成要素に分割します:
- Shared Core & KV Cache (~1.35 GB): メインメモリに常駐し、基本的な計算と会話コンテキストを保持します。
- Dynamic Experts (SSD On-Demand Streaming): 高速NVMe SSDに保存され、ルーティングで指定されたエキスパートのみをオンデマンドでストリーミングします。
ExpertStreamer.swift
// SSDからオンデマンドでエキスパートをロードするイメージ
func loadExpertOnDemand(expertId: Int) async throws -> MetalBuffer {
if let cached = cache.get(expertId) {
return cached
}
let buffer = try await ssdReader.readExpertChunk(id: expertId)
cache.insert(expertId, buffer)
return buffer
}swift[!TIP] Apple Siliconの高速SSD読み込み速度を活用することで、M2 Airで5〜6トークン/秒、M5 Proでは30トークン/秒以上の生成速度を実現します。
参考文献#
- 公式リポジトリ: drumih/turbo-fieldfare ↗
- TurboFieldfare ベンチマークおよび実験記録.