ブラウザ内LLM 対話・計測
ブラウザの中だけでAI(LLM)を動かして対話するページです。授業を担当する先生が、どのモデルなら使えるかを試すための場所で、 生徒に使わせる教材ではありません。 入力した内容も応答もこの端末から出ません。 ただしモデルの本体はネットワークからダウンロードします(数百MB〜数GB)。 初回は時間がかかり、2回目からは端末に残ったものを読みます。
この画面で使っている実装(エンジン)について
ブラウザの中でAIを動かす方法は1つではありません。候補は次の3つで、いま動かせるのは WebLLM だけです(残りは未実装なので選べません)。WebLLM は GPU(WebGPU)専用で、CPU では動きません。WebGPU が使えない端末では、CPU で動く実装(wllama など)がどこまで遅くなるかを 測ることになります。
| 候補 | どこで動くか | この画面で | 備考 |
|---|---|---|---|
| WebLLM(MLC) | GPU(WebGPU)のみ | 使える | モデルを WebGPU 用にコンパイルしたものを GPU で動かす。CPU では動かないので、WebGPU が使えない端末では起動もしない |
| transformers.js(ONNX Runtime Web) | GPU(WebGPU)と CPU(Wasm)の両方 | 未実装 | 端末に合わせてGPUとCPUを使い分けられる。未実装 |
| wllama(llama.cpp の Wasm) | CPU(Wasm)のみ | 未実装 | GPU を使わない。WebGPU が使えない端末で、どこまで遅くなるかの下限を測る役。未実装 |
モデルの本体は、どの実装でもネットワークから落として端末の中に置きます。 入力も応答も端末から出ません。
1. モデルを読み込む
読み込みが始まらない・応答が返ってこないときは「立て直す」を押してください (最初の読み込みからやり直します)。
2. 役割(system prompt)
見本を選ぶと入れ替わります。書き換えても構いません。変更は次の送信から効きます。指示が変わると待ち時間も変わるので、変えて送ると計測はやり直しになります(下の「生成の設定」を変えたときも同じです)。
3. 対話する
モデルは指示しなくても Markdown で返してきます。外すと、届いた文字をそのまま出します(記法が壊れていないかを見るとき用)。 生成中はいつも素のまま出して、返答が終わったところで整えます。
まだやり取りはありません。
「先読みで温める」は、system prompt だけを先に1トークン分流して待ち時間を減らす試みです。 押したあとで TTFT が下がるかどうかを見ます(下がらなければ、その実装では効かないという結果)。 「中断」は生成の区切りまで待つことがあります。
生成の設定
ここを変えると待ち時間も生成の長さも変わるので、変えて送ると計測はやり直しになります。 報告には「そのとき測った設定」が入ります。
0 に近いほど毎回同じ答えになります(比較するときは 0 にする)。
長くすると生成速度の平均は安定しますが、待ち時間が伸びます。
4. 計測
| モデルの読み込み | — |
|---|---|
| 読み込み時間 | — |
| 先読み初期化 | — |
| TTFT(1回目) | — |
| TTFT(2回目以降の平均) | — |
| 生成速度(1回目) | — |
| 生成速度(2回目以降の平均) | — |
1回ごとの計測
| # | TTFT | 生成終了まで | プロンプト | トークン数 | 生成速度 |
|---|---|---|---|---|---|
| まだ計測していません。 | |||||
5. 結果を書き出す
試した結果(モデル・設定・待ち時間・やり取り)を、そのまま貼り付けられる形でコピーします。 端末によって結果が変わるので、どの端末で試したかを書き添えてください。
学校と家では、回線もフィルタリングも違います。
モデル・生成の設定・計測に加えて、やり取りの中身と応答ごとの待ち時間を 折りたたみで入れます。数字だけでは中身の良し悪しが判断できないので、既定で入れています (長い会話のときや、中身を出したくないときは外してください)。