評価ツール
September 21, 2026 · View on GitHub
以下は任意の開発・評価用ツールです。プロジェクトルートでpython3 -m tools.<名前>として実行してください。測定結果はresults/に保存し、Gitには含めません。
APIの実通信確認
./run.shが起動済みの状態で実行します。モデルの正答率ではなく、認証・入力検証・3種の質問・確率の正規化を確認します。
python3 -m tools.verify_api
公式SDKとの接続も確認する場合のみ、追加依存をインストールします。
python3 -m venv .venv
.venv/bin/python -m pip install typesafe-sdk==0.7.0
.venv/bin/python -m tools.verify_api --sdk
直接推論の速度・小規模診断
APIを停止し、./run_server.shだけを起動してから実行します。
python3 jev_local.py benchmark --rounds 3 --output results/benchmark.json
python3 -m tools.evaluate --output results/sanity.json
python3 -m tools.evaluate --semantic-tokens --output results/semantic.json
python3 -m tools.evaluate --json-baseline --output results/with_json.json
速度比較の既定入力は4問(examples/original.json)です。--input examples/decide.jsonで7問に変更できます。モデルロードを除外し、JSON Schema制約付きの値のみの生成と比較します。prompt cacheは既定で無効です。logprob方式にはtemplate適用のHTTP通信時間が含まれ、JSON生成側はtemplate適用後から計時するため、完全に対称な計測ではありません。
精度診断は手作りの返金要求8例で、候補順の反転による変化も調べます。一般的なモデル性能を推定するベンチマークではありません。
その他
python3 -m tools.evaluate_heldout_tasks --url ... --output results/heldout: ModernBERTの学習に使っていないタスク(livedoorニュース分類・JMMLU・手作り顧客対応16例)をAPI経由で採点。LFMとModernBERTの汎化を同条件で比較します(結果)。- JGLUE評価: JNLI / JCommonsenseQAの固定splitをAPI経由で評価。
--urlを変えればModernBERTバックエンドにも同じ手順で使えます。 - Sarashinaと全方式の比較: LFM text / VL・Sarashina Q4 / Q8・ModernBERTを同じテキスト入力で測定。画像修正、数値照合、GPU FA160、画像エンコード再利用の同一ビルド比較も記録。
- 共通Stateの計測: 専用バックエンドで保存・復元の効果を測定。
python3 -m tools.probe_prefix: 過去の回答prefix探索用ツール。
過去の個別PC上の測定ログは配布対象に含めません。実験条件と新しい測定結果をセットで保存してください。
画像入力と速度測定
モデルの画像入力を確認
python3 -m tools.verify_vision --url http://127.0.0.1:8080
赤・青のPNGをコードで生成して送り、画像に応じた回答と、テキストStateキャッシュとの同時実行を確認します。外部の画像ファイルは不要です。APIは--state-cache autoまたはsharedで起動してください。
Sarashinaはこの単色テストを参照クローンでも誤答します。専用のtools.verify_sarashina_visionは図形・画像順・再送・テキストとの同時実行を検証し、既知の失敗も記録して非ゼロ終了します。前処理/embeddingの数値照合はtools.verify_sarashina_embeddings、参照生成との比較はtools.verify_sarashina_reference。依存と許容誤差・実行許可の条件はSarashinaの再検証手順を参照してください。
手元の画像で応答時間を測る
python3 -m tools.benchmark_vision \
--url http://127.0.0.1:18080 \
--input examples/vision_gss_4.json \
--image sample_pics/20260911_image_resized.png \
--rounds 5 --output results/my_vision_benchmark.json
起動済みAPIに対してウォームアップ1回+指定回数を計測し、中央値・平均・最小・最大、全回答とヘッダーを保存します。--urlは実際のAPIのポートに合わせてください。4問に限らず、別の入力JSONも指定できます。画像を使い回す測定なので、画像エンコードキャッシュを有効にしたサーバーでは再送時の速度を測ることになります。
GSS資料の12問を採点
python3 -m tools.evaluate_vision_gss \
--url http://127.0.0.1:18080 --backend-url http://127.0.0.1:18097 \
--image sample_pics/20260911_image_resized.png
python3 -m tools.evaluate_vision_gss \
--url http://127.0.0.1:18080 --backend-url http://127.0.0.1:18097 \
--image sample_pics/20260911_image_resized.png \
--reverse-choices --output results/vision_gss/reversed_choices.json
画像あり・なしを比較します。--reverse-choicesはChoiceの順序だけを反転し、入力ファイルは変更しません。資料に対応するローカル画像が必要です。測定記録と採点上の制約を参照してください。
画像エンコード再利用の有無を比較
実験ビルドの準備後、以下を実行します。
python3 -m tools.benchmark_image_cache \
--input examples/vision_gss_4.json \
--image sample_pics/20260911_image_resized.png \
--device ROCm0 --rounds 5
必要なROCm共有ライブラリがシステムにない場合は、LD_LIBRARY_PATHを設定してから実行します。同じ実験バイナリを無効→有効→有効→無効の順に起動し、初回と再送時を分けて記録します。この比較ツールはChoice質問用です。--workers 1で逐次実行、--port・--backend-portで使用ポート、--outputで保存先を指定できます。初期値の19080/19097は測定用で、通常の8080/8097や手動起動例の18080/18097とは別です。
Sarashinaの修正版では--model sarashina(または--model sarashina-q8)、専用--server・--mmprojを明示します。FA単独の比較にはtools.benchmark_sarashina_faを使用してください。測定範囲の違いとコマンドを参照してください。