ブラウザの中の Python(Pyodide、WebAssembly 版の CPython)で言語モデルを動かす実験です。サーバーは静的ファイルを配るだけです。推論も Hugging Face のモデルの変換と量子化も、訪問者のブラウザのタブの中で行います。
- 元の純 Python 実装の 0.26 tok/s から、WASM SIMD カーネル(
ctypesで読み込む数 KB のモジュール)で 351 tok/s(stories15M、int8、最初の開発機)。 - 日本語モデル llm-jp-3-150m(1.5 億パラメータ)が、スマホ級の ARM の Chromium で 75〜79 tok/s。最初に動くいちばん軽い tiny-lm は約 280 tok/s。
- Hugging Face のモデルを、ブラウザの中で取得・変換して動かす。80 億パラメータまで動く(CI の Chromium で 3.4〜3.9 tok/s)。取得は原本でなく Q8_0 の GGUF からで、バイトはほぼ半分。
- 既定で GPU(WebGPU)を使い、端末ごとに CPU と測って速い側を選ぶ。 持ち主の Android で、ページの本当の道のプロンプトが CPU の 2.9〜7.2 倍(1 回ずつ)。Llama 3.2 3B は GPU だけに置いて 6.0 tok/s。
- OS 5 種 × ブラウザの 23 通りで動作を確認。端末の計測は /benchmark/ で 1 つの報告に。
