blog.dopana

Back

SSDからのリアルタイム・ストリーミング推論で高い性能を維持するため、TurboFieldfare は既存の MLX や llama.cpp に依存せず、Swift 6.2 と Metal Compute Shaders を使用して独自エンジンを構築しています。

独自エンジン開発の理由#

macOSとハードウェアに深く統合するためには、メモリキャッシュやディスクI/Oの完全な制御が必要不可欠です。

  • Swift Concurrency: 非同期ディスク読み込みとGPUでの計算パイプラインの並列処理を制御。
  • Metal Kernel Shaders: Apple Silicon GPU上でMoEレイヤーのアクティベーションと行列演算を高速実行。
MoEKernel.metal
#include <metal_stdlib>
using namespace metal;

kernel void moe_expert_compute(
    device const float* input [[buffer(0)]],
    device const float* expert_weights [[buffer(1)]],
    device float* output [[buffer(2)]],
    uint id [[thread_position_in_grid]]
) {
    // ロードされたエキスパート重みの行列計算
    output[id] = input[id] * expert_weights[id];
}
text

SSDのレイテンシを克服する3つの技術#

重みストリーミングにおける最大の障害であるディスクレイテンシに対し、TurboFieldfare は以下の手法を採用しています:

  1. LFU (Least Frequently Used) キャッシュ: 最も頻繁に使用されるエキスパート(Hot Experts)を2GBのRAM制限内に保持。
  2. Chunked Prefill: 入力プロンプト処理を小さなチャンクに分割し、I/O処理のスループットを最適化。
  3. 量子化重みフォーマット: エキスパートデータのサイズを最小化し、SSDからの転送時間を削減。

[!IMPORTANT] リポジトリには100以上の実験記録が掲載されており、様々なカーネルとI/Oパターンの最適化プロセスが記録されています。

参考文献#