【2024年2月時点】WebGPUに関する各ブラウザ、OSの挙動が若干違う話
Web-llmという、webGPUを使ったライブラリで遊んでおり、最近メインPCをWindowsからUbuntuに変えたことで色々と詰まったので、それについてのざっくりとした情報整理を行う。
WebGPUのそもそもの対応
Can I useを使うと以下のことがわかる
- PC以外のブラウザ、つまりスマホは対応していない
- 最新版のChrome,Edge,Operaではreleaseで対応している
- ただし、Linuxではフラグの有効化が必要
- Firefoxではreleaseで対応しているもののフラグ有効化が必要
- SafariではTechPreviewかつ設定で有効化が必要
基本はこれを抑えておけば大丈夫だが、web-llmではもう少し深堀りが必要になる
WebGPUの詳細の対応について
次に、各ブラウザで https://webgpureport.org/ にアクセスしてみる。
以下のスクショはすべてUbuntuであり、フラグの有効化はすべて終わっている前提。
まずはChromeから。
requestAdapterがfailedでshared workersとservice workersのwebgpu APIがn/aになっている。
次にfirefox(nightly)
adapterはきちんと読み込まれている一方で、WGSL language featuresがなかったり、dedicated,shared,service workersのwebgpu APIがn/aになっている。
これは何がおきているかはmozillaの互換性を見るとわかりやすい。
つまり、Linux端末においては
- ChromeではGPUやrequestAdapterの対応がまだ
- firefoxではNightlyでのみ一部分サポート(なのでまだ完全サポートでない)
というややこしい状況になっている。
要するに何が起こったの?
web-llmではwebGPUを使うし、adapterにも対応してないといけない。
そうなるとLinuxにおいて、ChromeはWebGPUは対応してるけどadapterに対応してないからweb-llmでは弾かれるし、firefoxはWebGPuとadapterは対応してるから動くっちゃ動くけど一部分サポートのせいなのか、推論がCPUで動く事態に遭遇する。
まとめ
「ブラウザで挙動統一されるしWebGPUええやん」とタカを括ってると普通に痛い目にあうので気をつけましょう。まぁ「対応してるのはWindowsの最新版ChromeとEdgeだけですよ」と言ってしまうのが一番安泰かも。
Discussion