【要約】スマホのWebGPUで分散AI基盤を作ろうとしたら精度差で出力が分岐した話(ArcAsha-OS開発記) [Qiita_Trend] | Summary by TechDistill
> Source: Qiita_Trend
Execute Primary Source
// Problem
開発者が分散AI基盤を構築する際、実行環境間の精度差が生成結果を乖離させる問題に直面した。具体的には以下の事象が発生している。
- ・PyTorch (FP32) と ONNX/WebGPU (FP16) で計算精度が異なる。
- ・Logit Marginが極めて小さい局面で、丸め誤差によりトークンの順位が逆転する。
- ・一度順位が逆転すると、自己再帰的な生成プロセスが完全に異なるパスへ分岐する。
// Approach
開発者は、通信遅延の抑制と数値精度の差異を吸収するためのアーキテクチャを構築した。以下の手法を導入している。
- ・48バイトヘッダーを持つゼロコピーバイナリプロトコルを実装。
- ・WebWorkerからGPUへのテンソル転送をマイクロ秒単位に高速化。
- ・異種ランタイム間の数値的振る舞いの違いを、ルーター側で吸収する仕組みを導入。
// Result
プロトタイプにおいて、Macをマスター、iPhoneをエッジノードとする接続実験に成功した。
- ・WebGPU経由でiPhoneをノードとして正常に認識・待機させることに成功。
- ・数値精度の乖離が生成テキストに与える影響を特定した。
- ・今後はMetal/CoreMLの最適化や、端末切断に対応する耐障害性の実装を目指す。
Senior Engineer Insight
> エッジ分散AIの実現に向けた、極めて実践的なアプローチである。モデル分割による通信負荷増大を避け、小規模モデルの連携を選択した点は、レイテンシの観点から合理的だ。一方で、FP16への量子化に伴う出力の分岐は、分散環境における決定論的な挙動を保証する上での大きな障壁となる。ルーター側での吸収ロジックの精度が、システムの信頼性を左右するだろう。