西川和久の不定期コラム
ブラウザだけで即ローカルLLM。WebGPUでGemma-4やQwen 3.5を試す
2026年4月13日 06:07
2026年現在、ローカルでLLMを楽しむ場合、たとえばLM Studioをダウンロード/起動、モデルをダウンロード、設定、実行する必要がある。こういうと簡単といえば簡単だが、ちょっとハードルが高い。クラウドサービスと同様、WebブラウザであるURLを開くだけで、サクッとローカルLLMが動けば……と思われるかもしれない。
これを実現するのがWebGPUだ。今回の記事では、WebブラウザとWebGPUを使って手軽にローカルLLMを動かす仕組みと、すぐに試せるサイトを紹介する。
そもそもWebGPUとは!?
まず初めに、誤解なきよう解説しておこう。WebGPUは、WebGL技術の後継にあたり、クラウド側のGPUを使うのではなく、ローカルPCに搭載しているGPUを使い、さまざまな処理を行なう仕組みのこと。今回、このWebGPUを使ってLLMを動かすわけだ。従って、LLMに向かないiGPU搭載PCでは快適に動かすことができない(CPUでも動くが劇的に遅い)。この点だけは要注意!
WebGPUを使うには、まずそれに対応したWebブラウザが必要となる。といっても、Google Chrome/Microsoft Edge 113以降、Safari 18以降(macOS 15以降)で動くので、一般的には問題ないだろう。
また、WindowsとmacOSで実装方法が異なるため、結果的にmacOSは実用的な速度で動くものの、WindowsではGeForce RTX 4090ですら遅くちょっと厳しいものがあったりする。その原因となる仕掛けをざっくりおさらいしておくと、
- macOS Chrome/Safari: Webkit→Metal
- Windows Chrome/Edge: WGSL→Tintコンパイラ→HLSL→D3D12→GPUドライバ→GPU
といった感じだ。つまり、Windowsはオーバーヘッドがかなりあり、遅くなるのは現状仕方ないところとなる。この改善は今後に期待といったところか。
加えて、WebGPUを使ったLLMのモデルは、GGUFやMLXなど一般的なフォーマットには未対応となっており、専用のONNXが必要。コンバータ自体はあるにはあるが、transformersが古く、新しいモデルでは動かない。
従って、今回ご紹介するGemma-4やQwen 3.5はどうやったのか?のレシピが不明だ。ただし、今回紹介するサイトはすでに変換済みのモデルがホストされており、アクセスするだけでそのまま使えるので安心してほしい。
WebGPUを使ったLLMチャットの特徴は、初回のみモデルをHugging FaceからブラウザのCache Storage(検証→Application→Cache Storage)にダウンロード、チャットの内容はブラウザ内で完結するため(意図的に内容を外部に送信するようなコードを仕込まない限り)、安心な点。使用するVRAMも、そのページを閉じるか離れるかすれば即座に解放される。
これらを踏まえた上、WebGPUでLLMを使うWebチャットを4つ紹介したい。ただし、今回は時系列を逆にし、最新順とした。理由は、直近の方が最新モデルに対応しているからだ。
なお、初回アクセス時は数GBの通信が発生するため、Wi-Fi環境での実行やストレージ容量に注意したい。
WebGPUその3/Gemma-4 E2B
「Gemma-4-WebGPU」は、Googleが先日リリースされたばかりの軽量モデルGemma-4 E2Bに対応したWebGPUチャット。特徴としてはPC搭載のカメラ、マイクが使え、画像と音も入力可能な点。
機能は豊富で、
- 音声入力 — マイクで録音→Gemma 4のaudio encoderがそのまま書き起こし
- カメラキャプチャ — 動画の現フレームをボタン1つでスナップショットして送信
- 動画ソース選択 — Webcam/動画ファイルの2択
- Thinkingモード — モデルの思考過程を生成前に折りたたみ表示。オン/オフ切り替え可
- Tool Calling(vision) - 「今何が見える?」など視覚に関する質問をモデルが自律判断し、カメラキャプチャを自分でリクエスト→回答する
- Markdownレンダリング — 見出し・リスト・表・コード・引用等を整形表示
- シンタックスハイライト — コードブロックをプログラミング言語ごとに色分け
- 数式レンダリング(KaTeX) — $...$ や $$...$$ の数式を綺麗に描画
- Mermaidダイアグラム — モデルが出力した Mermaid記法をフローチャートや図としてSVG描画。ズーム・ダウンロード機能付き
- コードブロックCopyボタン — コードをワンクリックでクリップボードにコピー
など、一般的なチャットアプリと引けを取らない仕様となっている。
面白いのは「今何が見える?」で、カメラを自動起動、撮影し、分析できること。が、なぜか普通の画像はドラッグ&ドロップできない。
また仕様的に少し困るのが、起動時、カメラかビデオファイルは必ずなければならず(チャット画面の背景でずっと表示する)、デスクトップPCでカメラがなく、mp4などの動画ファイルが1本もストレージにない場合、先に進めずここで詰む。
WebGPUその2-2/Qwen 3.5 0.8B|2B|4B
次は「Qweb3.5-WebGPU」で、Alibabaが開発したQwen 3.5 0.8B/2B/4Bを試してみた。Qwen 3.5は0.8Bも含めすべてVision対応なので画像認識が可能。
当初、この後で紹介するもう1つのQwen 3.5 WebGPUチャットの性能がイマイチだったので、待ってました!的な存在だった。今はGemma-4があるので何ともなのだが……。
WebGPUその2-1/Qwen 3.5 Ex0bit/tensorbend
「Qwen 3.5 Ex0bit/tensorbendも」も同じくQwen 3.5用なのだがこれはちょっと変わった仕掛けになっており、ONNXランタイムを挟まず、GPU演算を独自で直接記述=一般的なフォーマットのモデルをロードできる。ただしこの仕掛け上、Qwen 3.5専用だ。
Qwen 3.5ならBはVRAMが許す限り何でもOK、PAROやINT4、AWQも使用可能となかなか面白く、速度もそれなりなのだが、推論精度が落ちる。全部自前でやってるので仕方ないが、ONNX不要というのは夢があるのではないだろうか。
WebGPUその1/gpt-oss-20b
最後は「GPT-OSS-WebGPU」。これはOpenAIが開発したgpt-oss-20bを使ったWebGPUチャット。タイミング的には一番古いものとなる。
ただ20bをロードするとなると、それなりにVRAMが必要(CPUで動かすにしてもメモリ32GB以上ほしい)、上記で紹介した1桁Bのより一般性に欠ける。動けば性能が良いのはご存知の通り。残念なのは、掲載した中では唯一Vision未対応=画像認識はできないことだろうか。
さて一通りご紹介したところで、実際サイトで遊ぶとすぐ分かるのが、IMEの確定[Enter]が抜けてしまい送信してしまうこと。日本固有の問題かもしれないので仕方ないところ。
すべてソースコードはgit clone <モデルのURL>で取得でき、この点を修正(Claudeに指示すればすぐできる)したついでに、筆者がいろいろ機能追加したのを、2つご紹介したい。
Vision対応gpt-oss-20b WebGPUチャット
1つ目は、gpt-oss-20bはVision非対応なので画像認識はできない。何か方法はないか?と調べたところ、LLMではなく、画像認識だけするFlorence-2のONNXがあったので、これを組み込んでみた。
結果オーライ!画像の内容をセッションに書き出せば、以降、それについて話ができる。以下に公開しているので興味のある人は試してほしい。
しかし、今となってはQwen 3.5とGemma-4があるので、これは出番がない感じか……。
1点、これまでご紹介したWebUIチャットは、ローカルPCでnpm run devやnpx serve .などとすれば http://localhost:3000 といった形でこのWebチャットを開くことができるものの、たとえばこのPCのIPアドレスが192.168.1.20だとして、同一LAN上のほかのPCからアクセスするとページは開くがモデルのダウンロードに失敗する。
これはセキュリティの観点から、http://はlocalhostのみ、それ以外はhttps://を使う必要があるからだ(Webブラウザ側で制御)。制限を外すにはChromeの場合、
chrome://flags/#unsafely-treat-insecure-origin-as-secure
これでExperimentsを開き、Insecure origins treated as secureへ、WebGPUチャットが作動しているhttp://192.168.1.20:3000などと入れ、有効にしWebブラウザを再起動すればダウンロード可能になる。
Web検索対応+α。Gemma-4 E2B|E4B WebGPUチャット
2つ目は、Gemma-4 E2B WebGPUチャットをE2BとE4B両対応した上で、動画がなくても起動、システムプロンプト、フォントサイズ変更、画像のドラッグ&ドロップ、キャッシュクリア、Max Tokens、BGマスク(チャット画面背景にある映像が邪魔なのでマスク)、そしてWebサーチ機能……など、いろいろ機能強化したバージョンとなる。
Web検索については、LM StudioでMCPとして使っているものをプロキシサーバーを立て呼び出す形になっている(localhost:3001)。詳細は公開予定のGitHub、README.mdに書いてあるので、興味のある人は見てほしい。なおこのWeb検索については、やる気になれば先のVision対応gpt-oss-20bにも付けることは可能だ。
Web検索で工夫している点は、そのまま戻った文字列をLLMに渡すと、広告やURLなど不要なものがかなり混じっており、Tokenを食い潰してしまうのでクリーニングした結果を渡している。
完成すればVision対応gpt-oss-20b同様、GitHubに公開する予定だが、Claude Codeの利用制限が頻繁に発生するため、なかなか開発が進まない状況だ(Proプラン)。
余談だが、Claudeは少し前と比較して、安直にコードを書いてバグもしくは仕様通りに動かず、指示を続けるとループに陥り無駄にトークンを浪費する。意図的かバグかは不明だが、利用制限中は何もできず、ある意味、AIコーディングに頼っていると危ういな……と思った次第。
完成したら、ここで公開するので興味のある人はチェックしてほしい。
以上のように、WebGPUは、Webブラウザでサイトを開くだけでローカルPCのGPUを駆動できる面白い仕掛けだ。ただmacOSでは実用レベルで動くものの、Windowsではその実装方法が異なり遅いことが残念なところ。とはいえ、誰でも簡単にGPUを使えるようになる技術だけに今後に期待したい。
※入稿後にGitHubへGemma 4 E2B/E4B WebGPUチャット公開しました。




































