ホームへ戻る

推論系統

Hugging Face、207個のWebGPUカーネルをオープンソース化――ブラウザAI演算子をバージョン管理可能なパッケージに

`@huggingface/kernels`は、インターフェース、テスト、WGSL実装を備えたGPU演算子をHubから動的に読み込める。公式のApple M4上での演算子単位のテストでは、幾何平均で2.57倍の高速化が報告されたが、この結果にはモデルの読み込み、コンパイル、データ転送のコストは含まれていない。

Lawrence Systems · CC BY 3.0 · Image source
zh-Hant

Hugging Faceは、`@huggingface/kernels`のプレビュー版を公開した。初回リリースにはApache 2.0ライセンスのWebGPU演算子207個が収録され、行列乗算、正規化、畳み込み、Attention、量子化、データレイアウト変換をカバーする。WGSL shaderを推論フレームワークに固定的に組み込む方式とは異なり、各演算子はHub上の独立したバージョン管理可能なリポジトリとして提供される。また、`manifest.json`によるインターフェース契約、ソースとハッシュの情報、正確性テストケース、性能テストケース、パラメータ化されたWGSLテンプレートが付属する。

JavaScriptアプリケーションは、`getKernel()`でリポジトリIDと契約バージョンを指定できる。ローダーは入力テンソルから出力の形状と型を推論し、現在のデバイスに適した実装バリアントを選択する。契約バージョンは、ONNX opset、演算子の`since_version`、モデルのrevisionから意図的に分離されているため、上位の呼び出しインターフェースを安定させたまま、基盤となるshaderを更新できる。この分離により、個々のカーネルを独立してテスト、ロールバック、比較することも可能になり、将来的にはTransformers.jsやONNX Runtime Webなどの高水準ランタイムへの採用が容易になる。

公式はApple M4上で開発版ONNX Runtime Webと比較し、1,756件のケースのうち、双方の結果が一致し、計測の信頼性も確保できた809件を抽出した。新カーネルの成績は629勝、176敗、4引き分けで、幾何平均では2.57倍、中央値では1.90倍の高速化となった。MatMulの高速化は1.14倍にとどまった一方、SoftmaxとLayerNormalizationはそれぞれ2.11倍、2.22倍だった。このことは、効果が演算子と形状に大きく依存することを示している。なお、一部で見られた数万倍の結果は、比較対象が特殊な低速パスに入ったことによるものであり、一般的なモデル速度として捉えることはできない。

同時に公開されたFleetは、ユーザーのブラウザ内で正確性テストと性能テストを実行し、同意を得たうえで匿名化されたデバイス情報を返送する。これにより、ブラウザ、ドライバ、GPUの組み合わせが断片化している問題を補完する。エンジニアリングチームが次に注視すべき点は、エンドツーエンドのモデル統合、初回のshaderコンパイルとテンソル転送のレイテンシ、さらにHubからカーネルを動的に取得する際のキャッシュ、サプライチェーン検証、オフラインデプロイの方法だ。現時点のデータはGPU処理自体の時間だけを計測しているため、実際のアプリケーションのスループットを推定することはまだできない。

出典

  1. Introducing @huggingface/kernels: 200+ WebGPU Kernels for Local AI
  2. webgpu-kernels announcement source and benchmark details