AI・機械学習
上級

LLM評価ハーネス(エルエルエムヒョウカハーネス)

LLM(大規模言語モデル)の性能を体系的に測定・比較するためのフレームワーク。EleutherAI が開発した lm-evaluation-harness が代表的な実装であり、数百種類のベンチマークを統一インターフェースで実行できる。

0 回閲覧
0 いいね

LLM評価ハーネスとは

LLM評価ハーネス(LLM Evaluation Harness)は、大規模言語モデルの能力を定量的・再現可能な形で測定するための統合テストフレームワークである。最も広く利用されているのは EleutherAI が開発・公開している lm-evaluation-harness(通称 lm-eval)で、HuggingFace Open LLM Leaderboard の公式評価ツールとしても採用されている。

モデル開発者が独自のベンチマーク結果を自己申告する従来の手法では、評価条件の不統一(プロンプト形式、few-shot 数、トークナイザの違い等)により公平な比較が困難だった。評価ハーネスはこの問題を解決し、同一条件下での横断的な性能比較を可能にする。

主要な評価ハーネスの比較

ハーネス名開発元対応タスク数特徴
lm-evaluation-harnessEleutherAI400+OSS標準、HuggingFace連携
HELMStanford CRFM80+多軸評価(精度・公平性・毒性)
OpenCompass上海AI研究所100+中国語ベンチマーク充実
Eval Harness (OpenAI)OpenAI非公開内部利用、Evals リポジトリで一部公開
BigBenchGoogle200+204タスク、学際的
LightEvalHuggingFace60+軽量・高速、lm-eval互換

アーキテクチャと動作原理

lm-evaluation-harness のアーキテクチャは以下の4層で構成される。

モデルインターフェース層

対象モデルへの統一アクセスを提供する。HuggingFace Transformers、GGUF(llama.cpp)、vLLM、OpenAI API、Anthropic API など複数のバックエンドに対応しており、--model フラグで切り替え可能である。

# HuggingFace モデルの評価
lm_eval --model hf --model_args pretrained=meta-llama/Llama-3.1-8B-Instruct --tasks mmlu --num_fewshot 5

# vLLM バックエンドの評価
lm_eval --model vllm --model_args pretrained=meta-llama/Llama-3.1-8B-Instruct,tensor_parallel_size=2 --tasks mmlu

# OpenAI API の評価
lm_eval --model openai-completions --model_args model=gpt-4o --tasks mmlu

タスク定義層

各ベンチマークをYAML形式のタスク設定ファイルで定義する。プロンプトテンプレート、評価メトリクス、データセットの取得方法、few-shot 例の構成方法を宣言的に記述できる。

評価実行層

バッチ処理によるトークン生成と対数尤度計算を効率的に実行する。loglikelihood(選択肢の尤度比較)、generate_until(自由生成+正規表現マッチ)、loglikelihood_rolling(パープレキシティ算出)の3つの評価モードを提供する。

集計・レポート層

タスクごとのスコアを集計し、JSON/CSV 形式で出力する。WandB(Weights & Biases)や MLflow への自動ログ記録にも対応している。

評価手法の分類

LLM の評価手法は大きく以下の4カテゴリに分類される。

評価手法説明代表的ベンチマーク長所短所
多肢選択式正解選択肢の対数尤度で判定MMLU, ARC, HellaSwag自動化容易、再現性高実用能力と乖離
自由生成式生成テキストを正規表現や完全一致で判定HumanEval, GSM8K実用に近い評価採点基準の曖昧さ
ヒューマン評価人間の評価者が品質を判定Chatbot Arena, AlpacaEval最も実用的コスト高、再現性低
LLM-as-Judge別の LLM が生成品質を評価MT-Bench, Arena-Hardスケーラブル評価バイアスの存在

実運用での活用パターン

CI/CD パイプラインへの統合

モデルのファインチューニングや量子化後に自動テストとして評価ハーネスを実行し、性能劣化(リグレッション)を検知する。

# GitHub Actions での評価自動化例
evaluate:
  runs-on: gpu-runner
  steps:
    - uses: actions/checkout@v4
    - name: Run evaluation
      run: |
        lm_eval --model hf \
          --model_args pretrained=./finetuned-model \
          --tasks mmlu,hellaswag,arc_challenge \
          --num_fewshot 5 \
          --batch_size auto \
          --output_path results/
    - name: Check regression
      run: python scripts/check_regression.py results/

モデル選定ワークフロー

複数の候補モデルを同一ベンチマークスイートで評価し、用途に最適なモデルを選定する。コスト(推論速度・メモリ使用量)と精度のトレードオフを定量化できる。

カスタムドメイン評価

業務固有のタスク(法律文書要約、医療用語抽出、コードレビュー等)に対するカスタムベンチマークを定義し、汎用ベンチマークでは測定できないドメイン特化性能を評価する。

評価ハーネスの限界と注意点

  • データ汚染(Contamination): 評価データがモデルの学習データに混入している可能性がある。lm-eval は --decontamination_ngrams_path で汚染検出を試みるが完全ではない
  • ベンチマーク飽和: 既存ベンチマークのスコアが上限に近づき、モデル間の差異が測定困難になる現象。MMLU では複数のモデルが90%超を達成している
  • タスク形式依存性: 同じ知識を問う場合でも、プロンプト形式(0-shot vs 5-shot、Chain-of-Thought の有無)によりスコアが大幅に変動する
  • 実用性との乖離: ベンチマークスコアが高くても、実際のユースケースでの品質と相関しない場合がある

よくある質問(FAQ)

Q1: lm-evaluation-harness と HELM はどう使い分けるべきか?

lm-evaluation-harness はタスク数と対応モデルの幅広さが強みで、モデル開発者・研究者のデファクトスタンダードである。HELM は精度だけでなく公平性・毒性・ロバスト性など多軸での評価が必要な場合(企業のモデル選定・コンプライアンス評価)に適している。まずは lm-eval で基本性能を測定し、必要に応じて HELM で多軸評価を追加するのが実践的なアプローチである。

Q2: 評価ハーネスの実行にはどの程度の計算資源が必要か?

タスク数とモデルサイズに依存する。7B パラメータモデルで MMLU(57科目・約14,000問)を評価する場合、A100 80GB GPU 1枚で約30分〜1時間が目安である。vLLM バックエンドを使用すると Continuous Batching により2〜3倍高速化できる。API ベースのモデル(GPT-4o 等)では GPU は不要だが、API コストと Rate Limit に注意が必要である。

Q3: 自社モデルの評価結果を公開する際の注意点は?

評価条件(few-shot数、プロンプト形式、バージョン、デコーディング設定)を完全に開示することが重要である。lm-eval の --log_samples フラグでサンプルレベルの予測結果を保存し、再現可能性を担保するのがベストプラクティスである。Open LLM Leaderboard への提出では、lm-eval の特定バージョンと設定が指定されている。