WebGPUでブラウザ内AI推論はどこまでできる?——インストール不要のオンデバイスAIが開く新しいかたち

1. はじめに — 読者の痛みを共感し、解決を約束

「AI機能をプロダクトに追加したい」。そう思い立ったとき、Web開発者やプロダクトオーナーの頭に浮かぶのは、たいてい同じ壁ではないでしょうか。

GPUサーバーの構築と運用費用。OpenAI APIの従量課金が続くことへの不安。ユーザーデータを外部サーバーに送ることへの、個人情報保護・GDPR対応の懸念。そして「ローカルLLMを試してみたい」と思っても、Python環境の構築やCUDAドライバとの格闘が面倒で、二の足を踏んだ経験がある人も多いはずです。

その壁を崩しつつあるのが、次世代GPU API「WebGPU」です。Chromeをはじめ主要ブラウザが順次対応を進めており、対応環境であればURLを開くだけで、LLMによるテキスト生成、Whisperによる音声認識、CLIPによる画像認識まで、ブラウザ内でAI推論が動く時代が始まっています。サーバー不要、インストール不要、そして推論入力を自アプリのサーバーへ送らない構成がとれます。

この記事では、その全体像を一気通貫で解説します。(1) WebGPUとは何か、WebGLと何が違うのか、(2) Transformers.js / WebLLM / LiteRT.js / WebNN / Chrome Built-in AIという5つのツールの選び方、(3) 今日すぐ試せるサンプルコード付きの始め方、(4) パフォーマンスの現実と「まだできないこと」まで。

エンジニアなら15分で最初のデモが動かせます。プロダクトオーナーなら、コスト設計とプライバシー設計の選択肢がひとつ増えます。まずは、この「ブラウザ内AI推論」がどこまで実用なのか、一緒に見ていきましょう。

2. WebGPUとは何か — WebGLとの違いをMermaid図で可視化

まずは一言で定義しておきましょう。WebGPUは、W3C(World Wide Web Consortium)「GPU for the Web」ワーキンググループ(Apple・Google・Mozilla・Microsoft・Intelが共同編集)が標準化を進める次世代GPU APIです。Vulkan / Metal / Direct3D 12といったモダンなネイティブGPU APIを覆う薄いレイヤーとして設計されており、ブラウザからGPUのグラフィックス機能だけでなく、汎用計算(GPGPU)を直接利用できるようにしたものです。対してWebGLはDirectX 9世代の概念がベースの、いわば「前世代の設計」。WebGPUは単なる「速いWebGL」ではなく、GPUの使い方そのものが変わる世代交代です(出典: https://webgpu.org/ / https://developer.chrome.com/blog/webgpu-release/)。

WebGLとの3つの決定的な違い

① コンピュートシェーダーがファーストクラス

最大の違いはこれです。WebGPUではコンピュートシェーダー(計算シェーダー)が第一級の機能として標準搭載され、機械学習推論の中核であるMatmul(行列積)やAttention、畳み込み演算をGPUで直接実行できます。WebGLではこの「GPGPU」が本来不可能で、強引にテクスチャ経由で擬似的に計算させるしかありませんでした。ブラウザ内AI推論が現実になった技術的な柱が、このコンピュートシェーダーです。

② 新シェーダー言語WGSL

WebGPUでは、GLSLの後継としてApple・Google・Mozillaが共同設計した新しいシェーディング言語WGSL(WebGPU Shading Language)が導入されました。Rust風の文法を持ち、明示的な型指定・明示的なメモリアドレス空間(storage / uniform / workgroup / private)を持ち、アウトオブバウンズアクセスの挙動が仕様で定義済みという、安全性を重視した設計です。

③ 明示的パイプライン設計によるJSオーバーヘッド削減

WebGPUはパイプラインを事前に明示的に組み立てる設計で、JavaScript側のオーバーヘッドを大幅に削減します。Chrome公式は「WebGLと比較してMLモデル推論で3倍以上の性能向上」と発表しています(出典: https://developer.chrome.com/blog/webgpu-release/)。

変換スタックの全体像

JavaScriptのコードがGPUで動くまでの流れを、Mermaid図にまとめました。その上で動くAIライブラリ(Transformers.js / WebLLM / LiteRT.js)や、OSネイティブのNNエンジン直結を目指すWebNNの位置づけも含めた階層構造です。

graph TD
    A[Webアプリ / JavaScript] --> B{WebGPU API}
    B -->|WGSLシェーダ| C[コンパイラ<br/>Chrome: Tint / Firefox: naga]
    C --> D[Vulkan / Metal / Direct3D 12]
    D --> E[GPU]
    A --> F[AIライブラリ層<br/>Transformers.js / WebLLM / LiteRT.js]
    F -->|重みはWASM+キャッシュ| B
    A --> G[WebNN / Built-in AI API]
    G -->|OSネイティブNNエンジン| H[NPU / Core ML / OpenVINO]

標準化のステータスとブラウザ対応状況

標準化の段階としては、WebGPUとWGSLはW3C「GPU for the Web」ワーキンググループが仕様策定を主導しています。最新の正式なステータスはW3CのWebGPU仕様ページ(https://www.w3.org/TR/webgpu/)で確認することをおすすめします。初期設計から数えると6年・貢献者90名・コミット2,000件をかけた大型標準です(出典: https://developer.chrome.com/blog/webgpu-release/)。

ブラウザ別の対応状況を時系列で整理します。対応可否はブラウザのバージョンだけでなく、OS・GPU・グラフィックドライバ・企業ポリシーなどにも依存するため、最新状況は公式情報(caniuse、各ブラウザのリリースノート)での確認を推奨します。

  • Chrome 113(2023年5月): 初の正式対応(GA)。ChromeOS / macOS / Windowsでデフォルト有効。バックエンドはGoogle自製のDawn、WGSLコンパイラはTint(出典: https://developer.chrome.com/blog/webgpu-release/)
  • Safari 26: WebKit実装により対応。caniuse上、iOS Safari 26.0以降はSupported、デスクトップSafari 26系はPartial support表記(出典: https://caniuse.com/webgpu/)
  • Firefox 141(2025年7月): Windows上のWebGPU APIが有効化。Rust製wgpu+naga構成(出典: https://www.firefox.com/en-US/firefox/141.0/releasenotes/)
  • Firefox 147(2026年1月): Apple Silicon搭載のMac(対応macOS上)でWebGPUが有効化。Windows対応はFirefox 141から、Linuxなどその他プラットフォームは引き続き状況を要確認(出典: https://www.firefox.com/en-US/firefox/147.0/releasenotes/)

主要ブラウザの対応は着実に進んでいますが、プラットフォームごとの有効化状況は時期が異なるため、利用者環境の互換性情報(caniuse等)を確認しながら導入を進めるのが安全です。なお、旧型デバイスや低電力モバイル、WebView埋め込みではWebGL 1/2が依然必要で、両者は共存関係にあります。新規プロジェクトはWebGPUを主軸にWebGL/WASMをフォールバックに置く構成が定石です。

次のセクションでは、このWebGPUの上に構築された「ブラウザ内AI推論」のツールスタックを5つ横断比較します。

3. ツールスタック比較 — 5つの選択肢を独自の比較表で

「ブラウザでAIを動かす」と一口に言っても、2026年8月時点で使える選択肢は大きく5つに分かれます。それぞれ思想がまったく違うので、まず全体像を1枚の比較表にまとめました。

5ツール比較表(2026年8月時点)

観点 Transformers.js WebLLM LiteRT.js WebNN Chrome Built-in AI
開発元 Hugging Face MLC / CMU Google W3C仕様(Web API。ランタイムではない) Google Chrome
実行方式 ONNX Runtime Web + WebGPU/WASM MLCコンパイル済みWebGPUカーネル WebGPU + WASM(.tflite) OSネイティブNNエンジンと接続するWeb API仕様 ブラウザ内蔵モデル(Gemini Nano系)
主な対象 小型〜中型モデル(120アーキテクチャ/1,200以上の変換済みモデル) LLMチャット(Llama 3/3.1・Phi・Gemma・Mistral・Qwen2など) モバイル系MLモデルのWeb移植(.task / .tflite資産) ハードウェア加速を活かしたい推論 テキスト生成・翻訳・要約などの完成API
APIの肌触り Python版transformers互換のpipeline API OpenAI API互換(chat.completions)※対応範囲は公式ドキュメント参照 タスクAPI 低レベルな計算グラフAPI(MLGraphBuilder) 高レベルタスクAPI(Prompt / Translator / Summarizer等)

(出典:Transformers.js — https://huggingface.co/blog/transformersjs-v3 / WebLLM — https://github.com/mlc-ai/web-llm / LiteRT — https://github.com/google-ai-edge/LiteRT / WebNN — https://webnn.io/ / Chrome Built-in AI — https://developer.chrome.com/docs/ai/built-in)

一言で選ぶ基準

5つすべてを試す時間はないはずなので、判断基準は1つに絞りましょう。

  • BERT・Whisper・CLIP系の小中型モデルを幅広く使いたい → Transformers.js。120アーキテクチャ・1,200以上のモデルが事前変換済みで、Pythonのtransformersと同じpipeline APIで書けます(https://huggingface.co/blog/transformersjs-v3)
  • ブラウザでLLMチャットを本格的に動かしたい → WebLLM。OpenAI API互換のchat.completionsを持つため、既存コードの差し替えから始められます(https://github.com/mlc-ai/web-llm)
  • モバイルで実績のあるtflite資産をWebに持ち込みたい → LiteRT.js。TensorFlow Lite後継のGoogle製ランタイムで、WebGPUとWASM経由で動きます(https://github.com/google-ai-edge/LiteRT)
  • ハードウェア加速を最優先にしたい → WebNN(今後の本命候補)。ニューラルネットワーク推論向けにハードウェア加速を抽象化するWeb API仕様です(https://webnn.io/)
  • モデル配布もサイズ管理も不要の手軽さが欲しい → Chrome Built-in AI。ブラウザ自体がモデルを内蔵し、APIだけで使えます(https://developer.chrome.com/docs/ai/built-in)

現状の成熟度 — 「今すぐ」なのはどれか

重要なのは、この5つが同じ成熟度にないことです。

Transformers.jsとWebLLMは「今すぐ実用」レベルです。Transformers.jsはv3(2024年10月)でWebGPUサポートが正式化され、device: 'webgpu' の1行でGPU加速が有効になります。公式にWASM比で最大100倍高速と告知されており、Whisper・CLIP・SAM・BERT系はもちろん、Phi-3.5やGemma 2などLLM系まで範囲が広いのが強みです(https://huggingface.co/blog/transformersjs-v3)。WebLLMは同一デバイス上でネイティブ実行性能の最大80%を維持するとの学術検証(arXiv:2412.15803)もあります(https://arxiv.org/abs/2412.15803)。

LiteRT.jsは過渡期です。公式プラットフォーム表でWebプラットフォームはCPU・WebGPUが対応済みですが、WebNNは「近日対応(coming soon)」の位置づけ。WebNN公式ステータスページでは「LiteRT.js(WebNN External Delegate)」として統合が進行中と掲載されており、統合が完了すればOSネイティブのNNエンジンを直接叩けるようになる予定です(https://github.com/google-ai-edge/LiteRT / https://webmachinelearning.github.io/webnn-status/)。

WebNNは実装が途上です。2026年4月時点の公式インストールガイドでは、Chrome/Edge Canaryの about://flags での有効化が必要とされており、Windows ML/OpenVINO実行にはWindows 11 24H2以降が求められます(https://webnn.io/en/learn/get-started/installation)。実装状況は変化が速い分野のため、最新の公式ステータス(https://webmachinelearning.github.io/webnn-status/)を確認してください。

Chrome Built-in AIは拡張中です。Prompt APIはChrome 138のOrigin Trialから始まり、Chrome 148で拡張。Writer・Rewriter・Translator・Summarizer・Proofreader・Language Detectorといった高レベルAPIが揃いつつあります。ただし動作要件はストレージ22GB以上の空き・VRAM 4GB超(またはRAM 16GB+4コア)とやや高めで、Translator等はAndroid/iOS未対応です(https://developer.chrome.com/docs/ai/prompt-api)。

選び方のまとめ

迷ったらこう考えてください。「汎用性で選ぶならTransformers.js、LLM特化ならWebLLM、そして1〜2年後のハードウェア加速時代を見据えるならWebNNの動向を追う」。LiteRT.jsは既存のtflite資産があるチームに、Built-in AIはChrome限定を許容できるなら最も手軽な選択肢になります。次章からは、この中で最もとっつきやすいTransformers.jsとWebLLMを使って、実際にコードを書いていきます。

4. 実践:今日から始めるステップバイステップ(サンプルコード付き)

ここからは、実際に手を動かしてブラウザ内AI推論を体験するステップを紹介します。必要なのはWebGPU対応環境(例: Chrome 113以降のChromeOS/macOS/Windows)だけ。Python環境もGPUサーバーも不要です。すべてのサンプルは公式ドキュメントのコードをベースにした、動作する最小構成です。

Step 0: 対応確認 — 機能検出とフォールバック

まずはユーザーのブラウザでWebGPUが実際に使えるかを確認します。重要なのは、navigator.gpu の有無に加えて、アダプタ取得(requestAdapter())が成功するかまで確認することです。ブラウザが対応していても、GPU・ドライバ・企業ポリシーなどの条件によってはアダプタ取得が失敗するためです。

async function checkWebGPU() {
  if (!navigator.gpu) {
    return false; // ブラウザ自体がWebGPU非対応 → WASM/WebGLフォールバックへ
  }
  try {
    const adapter = await navigator.gpu.requestAdapter();
    if (!adapter) {
      return false; // 対応ブラウザでもアダプタ取得失敗 → フォールバックへ
    }
    return true;
  } catch (e) {
    console.error("WebGPUアダプタの取得に失敗しました:", e);
    return false;
  }
}

if (!(await checkWebGPU())) {
  // 実運用ではWASM/WebGLフォールバック、またはサーバーサイドAPIへ切り替え
  console.warn("WebGPUを利用できないため、フォールバック処理に切り替えます。");
}

WebGPU可否はブラウザ版数だけでなくOS・GPU・ドライバ・ポリシーに依存するため、実運用ではこのフォールバック機構を必ず用意するのが定石です。

Step 1: 感情分析を3分で(Transformers.js)

Transformers.js v3はWebGPUサポートを正式化しており、公式に「WASM比で最大100倍速い」と告知されています。CDNからimportしてpipelineを呼ぶだけで、distilbertクラスの小型モデルの推論が快適に動きます(処理時間はデバイス・モデル・量子化設定に依存します)。

<script type="module">
import { pipeline } from "https://cdn.jsdelivr.net/npm/@huggingface/transformers";

const analyzer = await pipeline(
  "sentiment-analysis",
  "onnx-community/distilbert-base-uncased-finetuned-sst-2-english",
  { device: "webgpu" }
);

const result = await analyzer("I love running AI models in my browser!");
console.log(result); // [{ label: "POSITIVE", score: 0.999... }]
</script>

npmプロジェクトなら npm i @huggingface/transformers で同じコードが使えます。

Step 2: ブラウザでLLMチャット(WebLLM)

WebLLMはOpenAI API互換のchat.completionsを持つ、ブラウザ内LLM推論エンジンです。

<script type="module">
import * as webllm from "https://esm.run/@mlc-ai/web-llm";

const engine = await webllm.CreateMLCEngine(
  "Llama-3.1-8B-Instruct-q4f32_1-MLC",
  { initProgressCallback: (p) => console.log(p.text, (p.progress * 100).toFixed(1) + "%") }
);

const reply = await engine.chat.completions.create({
  messages: [{ role: "user", content: "ブラウザ内AI推論の利点を1つ挙げて。" }]
});
console.log(reply.choices[0].message.content);
</script>

初回のみq4量子化の重み(数GB)をダウンロードしますが、initProgressCallbackで進捗を表示でき、2回目以降はCache APIにキャッシュされ即座に起動します。ロード済みの状態はWebLLM Chat(chat.webllm.ai)でも体感できます。

Step 3: Whisperで音声認識(Transformers.js)

音声認識もpipeline 1本です。公式サンプルそのままの呼び出しで、録音データから文字起こしができます。

const transcriber = await pipeline(
  "automatic-speech-recognition",
  "onnx-community/whisper-tiny.en",
  { device: "webgpu" }
);
const text = await transcriber(audioFloat32Array);

whisper-tiny.enなら初回ロードも軽く、字幕付けツールのプロトタイプが短時間で組めます。

Step 4: 量子化でサイズを削る

Transformers.jsのdtypeにはfp32(WebGPU既定)/fp16/q8/q4/q4f16があり、dtype指定でモデル容量と精度のバランスを調整できます。

const generator = await pipeline(
  "text-generation",
  "onnx-community/Qwen2.5-0.5B-Instruct",
  { dtype: "q4", device: "webgpu" }
);

4bit量子化ならQwen2.5-0.5Bクラスは数百MBで収まり、VRAM 4GB級のGPUでも快適に動きます。Whisperなど量子化に敏感なエンコーダを持つモデルでは、モジュールごとの個別dtype指定も可能です。

どのステップも、transformers.js-examplesや公式Playground(transformers-js.github.io)に動くデモがあります。まずは自分のブラウザで動かしてみてください。

5. 何ができるか:ユースケースとケーススタディ

ここまで仕組みとツールを見てきました。「で、実際どんな場面で役立つのか?」——ブラウザ内AI推論が本領を発揮するのは、次の4つの価値が組み合わさるときです。

1. プライバシー保護。 WebLLMが「100%クライアント計算」とうたうように、推論は端末内で完結し、推論入力を自アプリのサーバーへ送らない構成がとれます。医療・法務・教育など機微なデータを扱う現場で、サーバー経由を避けたい機能をそのまま実装しやすくなります。ただし、モデルの初回ダウンロード時のCDN通信、テレメトリー・分析SDK、アプリ側の別ネットワーク通信などは別途発生し得るため、GDPR等の法令適合も含めてアプリ全体の設計・評価は別途必要です(出典: https://github.com/mlc-ai/web-llm)。

2. サーバーコスト削減。 推論をユーザーのGPUで実行するため、推論用サーバーの費用を削減できます。ただしモデル配信のCDN費用、セキュリティ更新、開発運用コストはゼロではない点には注意が必要です(出典: https://blog.mlc.ai/2024/06/13/webllm-a-high-performance-in-browser-llm-inference-engine)。

3. オフライン動作。 モデル重みを一度キャッシュすれば、PWAとして機内モードでも動作させられます(出典: https://github.com/mlc-ai/web-llm)。

4. 配布の容易さ。 URLを開くだけで動き、WebLLMはCDN経由でJSFiddle/CodePen上でも即実行できます(出典: https://blog.mlc.ai/2024/06/13/webllm-a-high-performance-in-browser-llm-inference-engine)。

具体的なアプリ例

  1. 録音→字幕付け:Transformers.jsでWhisperをWebGPU実行し、音声をその場で文字起こし(出典: https://huggingface.co/blog/transformersjs-v3)
  2. 社内文書の意味検索・ローカルQA:sentence-transformers系の埋め込み生成+LLMで、文書を端末外に出さず検索・質問応答(出典: https://huggingface.co/blog/transformersjs-v3)
  3. ブラウザ内画像生成:Web Stable Diffusionは量子化モデル約2.1GBでStable Diffusionをブラウザ内実行できます(生成速度は環境依存です)
  4. Chrome拡張の要約・翻訳:Chrome Built-in AIのSummarizer/Translator APIで実現(出典: https://developer.chrome.com/docs/ai/built-in)
  5. 画像分類・埋め込み:CLIPやMobileNetをWebGPUで高速実行(出典: https://huggingface.co/blog/transformersjs-v3)

ケーススタディ:ブラウザベンダー自身が使い始めた

象徴的なのがFirefox 141の「AI強化タブグループ」です。類似タブの自動グループ化にローカルAIモデルを使い、プライバシーのため端末内で処理すると明記しています(出典: https://www.firefox.com/en-US/firefox/141.0/releasenotes/)。国内でもpixivのインタラクティブエフェクト、CyberAgentの3D広告・ライブ配信エフェクトなどWebGPU採用の動きが広がっています。

6. パフォーマンスの現実と制約 — 「どこまでできるか」への直球回答

ブラウザ内でのAI推論は非常に強力な選択肢となった一方で、物理的なハードウェアやWebのアーキテクチャに起因する明確な限界も存在します。期待値のズレを防ぐため、ここでは「どこまでできて、何ができないのか」の現実を直球で解説します。

ネイティブ実行との速度差

ブラウザ上でGPUを直接叩くとはいえ、ブラウザというサンドボックス環境を経由するオーバーヘッドがゼロになるわけではありません。しかし、その性能差はかつてのWASM単体時代とは比較になりません。

  • WebLLM(LLM推論): MLCチームの研究論文によれば、同一デバイス上でネイティブ実行の最大80%の性能を維持することが示されています(出典: https://arxiv.org/abs/2412.15803)。
  • Transformers.js(小型モデル・ビジョン・音声): WebGPUバックエンドを利用した場合、従来の純粋なWASM環境と比較して最大100倍の高速化を公式が告知しています(出典: https://huggingface.co/blog/transformersjs-v3)。

実測値の目安

具体的な生成速度(トークン/秒)や画像生成時間は、デバイス、GPU、モデルの種類と量子化方式、コンテキスト長、ブラウザ/OS/ドライバの組み合わせによって大きく変わるため、一律の数値では示せません。自分の環境での実力を知るには、WebLLM Chat(chat.webllm.ai)で実際にモデルを動かして生成速度を確認するのが最も確実です。

できることの代表例

現時点で多くの環境で実用しやすいとされる構成の例は以下の通りです(あくまで一例であり、上限を示すものではありません)。

  • LLM: 4bit等の量子化を施した数B(数十億パラメータ)クラスのモデル(Llama 3.1 8B、Qwen2.5-7Bなど)。実用可否は端末メモリ・GPU性能・待ち時間の許容度次第です。
  • 画像生成: Stable Diffusion 1.5 / 2.1 クラス(モデルサイズ約2GB前後)。
  • マルチモーダル・音声・ビジョン: Whisper(tiny / base)、CLIP、MobileNet、SAMなどの小型〜中型モデル。

まだ難しいこと

一方で、以下の領域は現時点ではブラウザ内完結の対象外、あるいは時期尚早です。

  • 超大型モデル: 70B級の巨大LLMや、7GBを超えるSDXLなどの大型画像生成モデルは、メモリ・VRAMの制約や初回ダウンロードサイズの面から、多くの一般環境では現実的ではありません。
  • モバイルNPUの本格活用: デスクトップ環境のGPU(WebGPU)に比べ、スマートフォン等のNPUを直接フル活用する標準パス(WebNN等)は、2026年時点ではまだ広く普及・安定化の途上にあります。

実運用の注意点

プロダクトにブラウザ内AIを組み込む際は、以下の点に注意が必要です。

  1. 初回ダウンロードの壁: LLMのq4モデルで数GB、画像生成モデルで2GB以上の重みを初回ロードするため、ユーザーの回線環境やストレージ容量に配慮したキャッシュ戦略(IndexedDB等)とプログレス表示が必須です。
  2. フォールバック機構: ユーザーのブラウザやグラフィックドライバがWebGPUに対応していない環境、または社内ポリシーでブロックされている環境が一定数存在します。そのため、navigator.gpuとrequestAdapter()による機能検出を行い、必要に応じてWASM/WebGLやサーバーサイドAPIへフォールバックする仕組みを必ず用意しましょう。
  3. リソース要件の周知: Chrome Built-in AIなどのブラウザ内蔵型を利用する場合も、十分な空きストレージやVRAMが求められるため、対象ユーザーのターゲット層のデバイススペックを確認しておくことが重要です。

7. よくある質問(FAQ)

What is WebGPU?

WebGPUは、W3C「GPU for the Web」ワーキンググループが策定する次世代GPU APIです。Vulkan / Metal / Direct3D 12といったモダンGPU APIを覆う薄いレイヤーとして設計され、ブラウザからGPUのグラフィックス処理と汎用計算(GPGPU)を直接利用できます。従来のWebGLとの最大の違いは、機械学習推論に必要な行列積やAttentionをGPUで直接実行できるコンピュートシェーダーがファーストクラス機能になった点です。シェーダー言語にはApple/Google/Mozillaが共同設計したWGSLを採用しています。Chrome公式によれば、ML推論でWebGL比3倍以上の性能向上を実現します(出典: https://developer.chrome.com/blog/webgpu-release/ / https://webgpu.org/)。

How to enable WebGPU in my browser?

対応状況はブラウザ・OS・GPU・ドライバ・ポリシーによって異なります。Chrome 113以降(ChromeOS/macOS/Windows)が最初の正式対応です。Firefoxは141でWindows上で有効化され、147ではApple Silicon搭載のMacで有効化されました。Safariは26系で対応が進んでいます。特別な設定は基本的に不要ですが、環境によっては使えないケースがあるため、ブラウザのコンソールで navigator.gpu の存在と navigator.gpu.requestAdapter() の成功を確認するのが確実です(出典: https://developer.chrome.com/blog/webgpu-release/ / https://www.firefox.com/en-US/firefox/147.0/releasenotes/ / https://caniuse.com/webgpu/)。

How to run an LLM in the browser?

WebLLMを使うのが最も手軽です。CreateMLCEngine('Llama-3.1-8B-Instruct-q4f32_1-MLC') でモデルをロードし、OpenAI API互換の chat.completions.create() を呼ぶだけで、ブラウザ内でLLMチャットが動作します。サーバー不要・100%クライアント計算で、重みは初回ダウンロード後にキャッシュされます。Llama 3/3.1、Phi、Gemma、Mistral、Qwen2などに対応しています。小規模なテキスト生成ならTransformers.jsのpipeline("text-generation", ...)でも可能です(出典: https://github.com/mlc-ai/web-llm / https://huggingface.co/blog/transformersjs-v3)。

What is the difference between WebGPU and WebNN?

WebGPUはGPUの汎用計算全般を扱うAPIであるのに対し、WebNN(Web Neural Network API)はニューラルネットワーク推論向けにハードウェア加速を抽象化するWeb API仕様で、OSネイティブのNNエンジン経由でNPUなどのアクセラレータを利用できる道を開くものです。WebGPUは現在すぐ実用段階にあり、Transformers.jsやWebLLMの基盤として動いています。一方WebNNは2026年4月時点でChrome/Edge Canaryのフラグ扱いで、ONNX Runtime WebやLiteRT.jsとの統合が進行中です(実装状況は変化しやすいため公式ステータス参照推奨)。当面はWebGPU主力+将来のハードウェア加速パスとしてWebNNを捉えるのが実践的です(出典: https://webnn.io/ / https://webmachinelearning.github.io/webnn-status/)。

How much VRAM do I need for browser AI inference?

必要メモリはモデルのサイズ・量子化方式・コンテキスト長・実行環境によって大きく変わるため、一律の数字では断定できません。目安として、4bit量子化の数BクラスLLMでは数GBのVRAM/メモリが求められることが多く、モデルの重みダウンロードもGB単位になります。Chrome Built-in AI(Gemini Nano系)の場合、公式要件はVRAM 4GB超のGPU、またはRAM 16GB以上+4コア以上のCPU、ストレージ22GB以上の空きです(出典: https://developer.chrome.com/docs/ai/prompt-api)。

Is browser AI inference private and secure?

推論そのものは端末内で完結する構成がとれ、入力テキストや音声などのデータを推論のために外部サーバーへ送らずに済みます。WebLLMは公式に「100%クライアント計算」と明記しています。ただし完全な無通信ではありません。モデル重みの初回ダウンロード時には配信元(Hugging Face Hub等)との通信が発生し、アプリが組み込むテレメトリー・分析SDK・クラッシュ報告などは別途設計で制御する必要があります。モデルのライセンス、重み配信元の信頼性、GDPR等の法令適合性も事前に確認しましょう(出典: https://github.com/mlc-ai/web-llm)。

8. まとめ — 次のアクション3つ

ここまでの要点を振り返ります。WebGPUは主要ブラウザで順次利用可能になりつつあり(対応範囲はプラットフォームごとに異なるため最新の公式情報・caniuseでの確認を)、URLを開くだけでAIモデルが動く時代が現実になっています。性能面でも、WebLLMは同一デバイス上でネイティブ実行の最大80%を維持すると報告され(出典: https://arxiv.org/abs/2412.15803)、Transformers.jsはWASM比で最大100倍高速です(出典: https://huggingface.co/blog/transformersjs-v3)。推論をユーザー自身のGPUで実行する構成により推論用サーバー費用を削減でき、推論入力を端末外へ送らないプライバシー設計が可能になります(出典: https://github.com/mlc-ai/web-llm)。

理屈はここまで。あとは手を動かすだけです。今日から試せるアクションを3つ挙げます。

  1. Transformers.js公式デモをChromeで開く — transformers-js.github.io のModel Playgroundは「WebGPU-accelerated, no server required」で動作します。感情分析やWhisperの音声認識が、インストールなしの数ステップでGPU推論できる感覚をつかめます(出典: https://transformers-js.github.io/)。
  2. WebLLM Chatで実測する — chat.webllm.ai にアクセスし、手元のGPUがLlama 3.1などのLLMを実際に何トークン/秒で生成できるか確認しましょう。自分の環境の「できる上限」が数字で見えます(出典: https://chat.webllm.ai/)。
  3. センシティブ機能のクライアント側移行プロトタイプを組む — 自分のプロダクトの「サーバーに置くにはセンシティブな機能」(入力補完・文書要約・社内検索など)を1つ選び、1週間でブラウザ内推論への移行プロトタイプを作ってみてください。OpenAI互換APIを持つWebLLMなら、既存コードの差し替えから始められます(出典: https://github.com/mlc-ai/web-llm)。

GPUサーバーの構築も、Python環境の整備も、APIキーの管理も不要。ブラウザという「すべての人が持っているランタイム」でAIが動く——この新しい選択肢を、まずは自分の目で確かめてみてください。

関連記事