LLMの評価:Hugging Face Leaderboardベンチマークの再現
- 評価フレームワーク
- ファインチューニング
- Hugging Face
- リーダーボード
- LLMベンチマーキング
- LLM評価
- モデル比較
- オープンソースツール
- パフォーマンステスト
- 再現性
- Wasif Mehmood
- Ready Tensor
- Mohamed Abdelhamid
🏠
ホーム – 全レッスン
⬅️
前 – Google Colabの使用
➡️
次 – Week 1クイズ
前回のレッスンでは、リーダーボードを解釈し、モデルのパフォーマンスを比較する方法を学びました。
では、簡単な実践演習を行いましょう:それらのベンチマークの1つを自分で再現してください。
Google Colab内でオープンソースのlm-evaluation-harnessを使用して、Hugging Faceリーダーボードの公式タスクを実行します。
最初のベンチマーク再現演習
前回のレッスンでは、リーダーボードの結果を解釈する方法を学びました — 各ベンチマークが何を測定し、目標に合ったモデルを選択する方法を理解しました。
では、実践の時間です。
Hugging Face Open LLM Leaderboardから実際のベンチマークを再現して、それらのスコアが実際にどのように計算されるかを確認します。
この演習では、tinyGSM8K — 数学能力を測定する高速で軽量なベンチマーク — に焦点を当てます。
このベンチマークを実行するために、Hugging Faceがリーダーボード評価のバックグラウンドで使用しているのと同じオープンソースツール、lm-evaluation-harnessを使用します。
lm-evaluation-harness
これにより、ベンチマーキングが透明で一貫性があり、再現可能になります — 公開された結果を検証したり、単一のコマンドで独自のファインチューニング済みモデルを評価したりできます。
動画ウォークスルー:リーダーボードベンチマークの再現 🎥
この動画では、モデルを取り上げて、Hugging Faceの公式リーダーボードベンチマークを実行し、GSM8Kを使用して高レベルの数学推論タスクでのパフォーマンスを測定する方法を学びます。
ステップ1 – Colab環境のセットアップ
新しいColabノートブックを開き、GPUランタイムに接続することから始めます:
ランタイム → ランタイムのタイプを変更 → GPU。
ランタイム → ランタイムのタイプを変更 → GPU
次に、評価フレームワークをインストールします:
! pip install lm_eval langdetect -q
! pip install git+https://github.com/felipemaiapolo/tinyBenchmarks
正しくインストールされたことを確認します:
!lm_eval --help
これで、Hugging Faceリーダーボードとまったく同じようにモデルを評価する準備が整いました。
ステップ2 – モデルとタスクを選択
Hugging Face Hubでホストされている任意のモデルをテストできます。
この演習では、以下のような小さな命令チューニング済みモデルを選択してください:
meta-llama/Llama-3.2-1B-Instruct
そして、tinyGSM8K(数学データセット)のような軽量なベンチマークタスクを選択します。
ステップ3 – 最初の評価を実行
簡単なテストのためにコマンドラインインターフェースを使用します:
!lm_eval --model hf \
--model_args pretrained=meta-llama/Llama-3.2-1B-Instruct \
--tasks tinyGSM8K \
--device auto \
--batch_size auto
このコマンドは:
- Hugging Faceからモデルをダウンロードします。
- 利用可能なGPUにロードします。
- 公式プロンプトを使用してベンチマークを実行します。
- 精度およびその他のメトリクスを出力します。
最終スコアをHugging Faceリーダーボードと比較してください — 結果は近似するはずです。
ステップ4 – PythonからTechvaluation評価を実行
ファインチューニングや研究ワークフローに評価を統合するには、Python APIを使用します:
from lm_eval import evaluator
from joblib import dump
results = evaluator.simple_evaluate(
model="hf",
model_args="pretrained=meta-llama/Llama-3.2-1B-Instruct,parallelize=True,trust_remote_code=True",
tasks=["tinyGSM8K"],
device="cuda",
batch_size="auto"
)
print(results)
dump(results, "results.joblib")
これにより、以下が可能になります:
- 後で比較するために構造化された結果を保存します。
- 各ファインチューニング実行後に評価チェックポイントを追加します。
- 自動化されたパフォーマンストラッキングをワークフローに構築します。
ステップ5 – 結果の解釈
出力には以下が含まれます:
- ベンチマークタスクの全体的な精度。
- タスクごとの詳細(複数のタスクを評価する場合)。
- 再現性を確認するシステム情報。
データセットの精度
モデルはtinyGSM8kベンチマークで約39%の精度を記録しました。厳密なメトリックは完全一致のみをカウントし、柔軟なメトリックはフォーマットの違いなどの小さなバリエーションを許容します。両方とも同じスコアを生成しました。これは、モデルの答えが予想されるものと約10回のうち4回一致したことを意味します。stderr(標準誤差)値はnullです。なぜなら計算されなかったからですが、–bootstrap_itersフラグで有効にできます(例:–bootstrap_iters 1000)。これはブートストラップリサンプリングを使用します。これは統計的手法で、評価データのサブセットを繰り返しサンプリングして、テストが異なる例で繰り返された場合に報告されたスコアがどの程度変化するかを推定します。
--bootstrap_iters
--bootstrap_iters 1000
手動検査されたサンプル
質問: Roryは配達用に各7.50ドルのサブ2つ、各1.50ドルのチップス2袋、各1.00ドルのクッキー2つを注文します。チェックアウト時に20%の配達料金が追加され、5.00ドルのチップを追加したいと考えています。配達注文の費用はいくらになりますか?
正解: サブ2つは各7.50ドルなので2*7.50 = $<<2*7.5=15.00>>15.00
チップス2袋は各1.50ドルなので2*1.50 = $<<2*1.50=3.00>>3.00
クッキー2つは各1.00ドルなので2*1 = $<<2*1=2.00>>2.00
配達注文は15+3+2= $<<15+3+2=20.00>>20.00
20.00ドルに20%の配達料金があり、これは.20*20 = $4.00が請求書に追加されます
配達注文は20.00ドル、4.00ドルの配達料金があり、5.00ドルのチップを追加するので、合計は20+4+5 = $<<20+4+5=29.00>>29.00
#### 29
LLMの回答: Roryはサブに$7.50 x 2 = $15.00を使います。
チップスに$1.50 x 2 = $3.00を使います。
クッキーに$1.00 x 2 = $2.00を使います。
したがって、サブ、チップス、クッキーの合計費用は$15.00 + $3.00 + $2.00 = $20.00です。
配達料金は$20.00の20%で、0.20 x $20.00 = $4.00です。
チップは$5.00です。
したがって、注文の合計費用は$20.00 + $4.00 + $5.00 = $29.00です。
#### 29
後のモジュールでファインチューニングを開始する際、このプロセスを再実行して、モデルのスコアが実際に改善されたかどうかを確認します。
次のステップ
以上です — Week 1が完了しました!
これで以下を行う方法がわかりました:
- モデルアーキテクチャとエコシステムを理解する
- ファインチューニング vs RAGの使用を決定する
- リーダーボードを読んで比較する
- ベンチマークスコアを自分で再現する
来週は、ファインチューニングの基礎を構築します。
言語モデルが分類システムとしてどのように動作するか、トークン化とパディングがどのように機能するか、データセットを準備する方法、LoRAやQLoRAなどの技術がファインチューニングを効率的にする方法を学びます。
準備してください — 来週はLLMファインチューニングのビルディングブロックをまとめ始めます。
- ハンズオン:リーダーボードベンチマークの再現

コメント