--verbose を付けて1回実行すると、最後に「prompt eval rate」と「eval rate」が tokens/s で表示されます。手軽ですが、コンテキスト長や生成長を固定しにくいため、おおまかな確認用です。
コマンド例 · Ollama
ollama run MODEL:TAG --verbose "Explain how a transformer language model works."
記録する値 eval rate → 生成速度、prompt eval rate → プロンプト処理速度、eval count → 生成したトークン数。思考(thinking)が有効なモデルでは、そのトークンが含まれるか確認してください。
APIを使うと、コンテキスト長(num_ctx)・生成長(num_predict)・ランダム性(temperature)を固定して1回リクエストできます。レスポンスの eval_count と eval_duration(ナノ秒)から生成速度を自分で計算します。jq が必要です。
コマンド例 · Ollama
OLLAMA_NUM_PARALLEL=1 ollama serve
curl -s http://localhost:11434/api/generate -d '{"model":"MODEL:TAG","prompt":"Explain how a transformer language model works.","stream":false,"options":{"num_ctx":8192,"num_predict":256,"temperature":0}}' | jq '{gen_tps: (.eval_count / .eval_duration * 1e9), prompt_tps: (.prompt_eval_count / .prompt_eval_duration * 1e9), eval_count, prompt_eval_count}'
記録する値 出力された gen_tps → 生成速度、prompt_tps → プロンプト処理速度、eval_count → 生成したトークン数、num_ctx → コンテキスト長。prompt_eval_count が極端に小さい場合は前のリクエストのキャッシュが使われているため、プロンプト処理速度は当てになりません。
同時リクエストを1にするには、サーバー起動時に環境変数 OLLAMA_NUM_PARALLEL=1 を指定し、同時に他のリクエストが入らないようにしてください。既定値はバージョンや環境によって異なる場合があります。