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];
}textSSDのレイテンシを克服する3つの技術#
重みストリーミングにおける最大の障害であるディスクレイテンシに対し、TurboFieldfare は以下の手法を採用しています:
- LFU (Least Frequently Used) キャッシュ: 最も頻繁に使用されるエキスパート(Hot Experts)を2GBのRAM制限内に保持。
- Chunked Prefill: 入力プロンプト処理を小さなチャンクに分割し、I/O処理のスループットを最適化。
- 量子化重みフォーマット: エキスパートデータのサイズを最小化し、SSDからの転送時間を削減。
[!IMPORTANT] リポジトリには100以上の実験記録が掲載されており、様々なカーネルとI/Oパターンの最適化プロセスが記録されています。
参考文献#
- 公式ソースコード: drumih/turbo-fieldfare ↗
- Apple Developer Metal Shading Language ドキュメント.