Agent Skills by ALSEL
Anthropic ClaudeLLM・AI開発⭐ リポ 2品質スコア 64/100

evaluating-llms-harness

60以上の学術ベンチマーク(MMLU、HumanEval、GSM8K、TruthfulQAなど)でLLMを評価できます。モデルの品質測定、複数モデルの比較、学術結果の報告、トレーニング進捗の追跡に活用できます。EleutherAIやHuggingFaceなど業界の主要機関が採用する標準的なツールです。HuggingFace、vLLM、各種APIに対応しています。

description の原文を見る

Evaluates LLMs across 60+ academic benchmarks (MMLU, HumanEval, GSM8K, TruthfulQA, HellaSwag). Use when benchmarking model quality, comparing models, reporting academic results, or tracking training progress. Industry standard used by EleutherAI, HuggingFace, and major labs. Supports HuggingFace, vLLM, APIs.

SKILL.md 本文

lm-evaluation-harness - LLMベンチマーキング

クイックスタート

lm-evaluation-harnessは、標準化されたプロンプトとメトリクスを使用して、60以上のアカデミックベンチマークでLLMを評価します。

インストール:

pip install lm-eval

任意のHuggingFaceモデルを評価:

lm_eval --model hf \
  --model_args pretrained=meta-llama/Llama-2-7b-hf \
  --tasks mmlu,gsm8k,hellaswag \
  --device cuda:0 \
  --batch_size 8

利用可能なタスクを表示:

lm_eval --tasks list

一般的なワークフロー

ワークフロー1: 標準ベンチマーク評価

コアベンチマーク(MMLU、GSM8K、HumanEval)でモデルを評価します。

このチェックリストをコピーしてください:

ベンチマーク評価:
- [ ] ステップ1: ベンチマークスイートの選択
- [ ] ステップ2: モデルの構成
- [ ] ステップ3: 評価の実行
- [ ] ステップ4: 結果の分析

ステップ1: ベンチマークスイートの選択

コア推論ベンチマーク:

  • MMLU(Massive Multitask Language Understanding) - 57科目、多肢選択問題
  • GSM8K - 小学校の数学文章問題
  • HellaSwag - 常識推論
  • TruthfulQA - 真実性と事実性
  • ARC(AI2 Reasoning Challenge) - 科学問題

コードベンチマーク:

  • HumanEval - Pythonコード生成(164問題)
  • MBPP(Mostly Basic Python Problems) - Pythonコーディング

標準スイート(モデルリリース時に推奨):

--tasks mmlu,gsm8k,hellaswag,truthfulqa,arc_challenge

ステップ2: モデルの構成

HuggingFaceモデル:

lm_eval --model hf \
  --model_args pretrained=meta-llama/Llama-2-7b-hf,dtype=bfloat16 \
  --tasks mmlu \
  --device cuda:0 \
  --batch_size auto  # 最適なバッチサイズを自動検出

量子化モデル(4ビット/8ビット):

lm_eval --model hf \
  --model_args pretrained=meta-llama/Llama-2-7b-hf,load_in_4bit=True \
  --tasks mmlu \
  --device cuda:0

カスタムチェックポイント:

lm_eval --model hf \
  --model_args pretrained=/path/to/my-model,tokenizer=/path/to/tokenizer \
  --tasks mmlu \
  --device cuda:0

ステップ3: 評価の実行

# 完全なMMLA評価(57科目)
lm_eval --model hf \
  --model_args pretrained=meta-llama/Llama-2-7b-hf \
  --tasks mmlu \
  --num_fewshot 5 \  # 5ショット評価(標準)
  --batch_size 8 \
  --output_path results/ \
  --log_samples  # 個別の予測を保存

# 複数のベンチマークを同時に実行
lm_eval --model hf \
  --model_args pretrained=meta-llama/Llama-2-7b-hf \
  --tasks mmlu,gsm8k,hellaswag,truthfulqa,arc_challenge \
  --num_fewshot 5 \
  --batch_size 8 \
  --output_path results/llama2-7b-eval.json

ステップ4: 結果の分析

結果はresults/llama2-7b-eval.jsonに保存されます:

{
  "results": {
    "mmlu": {
      "acc": 0.459,
      "acc_stderr": 0.004
    },
    "gsm8k": {
      "exact_match": 0.142,
      "exact_match_stderr": 0.006
    },
    "hellaswag": {
      "acc_norm": 0.765,
      "acc_norm_stderr": 0.004
    }
  },
  "config": {
    "model": "hf",
    "model_args": "pretrained=meta-llama/Llama-2-7b-hf",
    "num_fewshot": 5
  }
}

ワークフロー2: トレーニング進捗の追跡

トレーニング中のチェックポイントを評価します。

トレーニング進捗追跡:
- [ ] ステップ1: 定期的な評価の設定
- [ ] ステップ2: 高速ベンチマークの選択
- [ ] ステップ3: 評価の自動化
- [ ] ステップ4: 学習曲線のプロット

ステップ1: 定期的な評価の設定

N個のトレーニングステップごとに評価します:

#!/bin/bash
# eval_checkpoint.sh

CHECKPOINT_DIR=$1
STEP=$2

lm_eval --model hf \
  --model_args pretrained=$CHECKPOINT_DIR/checkpoint-$STEP \
  --tasks gsm8k,hellaswag \
  --num_fewshot 0 \  # 速度のため0ショット
  --batch_size 16 \
  --output_path results/step-$STEP.json

ステップ2: 高速ベンチマークの選択

頻繁な評価のための高速ベンチマーク:

  • HellaSwag: 1つのGPUで約10分
  • GSM8K: 約5分
  • PIQA: 約2分

頻繁な評価には避けるべき(遅い):

  • MMLU: 約2時間(57科目)
  • HumanEval: コード実行が必要

ステップ3: 評価の自動化

トレーニングスクリプトに統合します:

# トレーニングループ内
if step % eval_interval == 0:
    model.save_pretrained(f"checkpoints/step-{step}")

    # 評価を実行
    os.system(f"./eval_checkpoint.sh checkpoints step-{step}")

または、PyTorch Lightningコールバックを使用します:

from pytorch_lightning import Callback

class EvalHarnessCallback(Callback):
    def on_validation_epoch_end(self, trainer, pl_module):
        step = trainer.global_step
        checkpoint_path = f"checkpoints/step-{step}"

        # チェックポイントを保存
        trainer.save_checkpoint(checkpoint_path)

        # lm-evalを実行
        os.system(f"lm_eval --model hf --model_args pretrained={checkpoint_path} ...")

ステップ4: 学習曲線のプロット

import json
import matplotlib.pyplot as plt

# すべての結果を読み込み
steps = []
mmlu_scores = []

for file in sorted(glob.glob("results/step-*.json")):
    with open(file) as f:
        data = json.load(f)
        step = int(file.split("-")[1].split(".")[0])
        steps.append(step)
        mmlu_scores.append(data["results"]["mmlu"]["acc"])

# プロット
plt.plot(steps, mmlu_scores)
plt.xlabel("Training Step")
plt.ylabel("MMLU Accuracy")
plt.title("Training Progress")
plt.savefig("training_curve.png")

ワークフロー3: 複数のモデルを比較

モデル比較のためのベンチマークスイート。

モデル比較:
- [ ] ステップ1: モデルリストの定義
- [ ] ステップ2: 評価の実行
- [ ] ステップ3: 比較表の生成

ステップ1: モデルリストの定義

# models.txt
meta-llama/Llama-2-7b-hf
meta-llama/Llama-2-13b-hf
mistralai/Mistral-7B-v0.1
microsoft/phi-2

ステップ2: 評価の実行

#!/bin/bash
# eval_all_models.sh

TASKS="mmlu,gsm8k,hellaswag,truthfulqa"

while read model; do
    echo "Evaluating $model"

    # 出力ファイル用のモデル名を抽出
    model_name=$(echo $model | sed 's/\//-/g')

    lm_eval --model hf \
      --model_args pretrained=$model,dtype=bfloat16 \
      --tasks $TASKS \
      --num_fewshot 5 \
      --batch_size auto \
      --output_path results/$model_name.json

done < models.txt

ステップ3: 比較表の生成

import json
import pandas as pd

models = [
    "meta-llama-Llama-2-7b-hf",
    "meta-llama-Llama-2-13b-hf",
    "mistralai-Mistral-7B-v0.1",
    "microsoft-phi-2"
]

tasks = ["mmlu", "gsm8k", "hellaswag", "truthfulqa"]

results = []
for model in models:
    with open(f"results/{model}.json") as f:
        data = json.load(f)
        row = {"Model": model.replace("-", "/")}
        for task in tasks:
            # 各タスクの主要メトリクスを取得
            metrics = data["results"][task]
            if "acc" in metrics:
                row[task.upper()] = f"{metrics['acc']:.3f}"
            elif "exact_match" in metrics:
                row[task.upper()] = f"{metrics['exact_match']:.3f}"
        results.append(row)

df = pd.DataFrame(results)
print(df.to_markdown(index=False))

出力:

| Model                  | MMLU  | GSM8K | HELLASWAG | TRUTHFULQA |
|------------------------|-------|-------|-----------|------------|
| meta-llama/Llama-2-7b  | 0.459 | 0.142 | 0.765     | 0.391      |
| meta-llama/Llama-2-13b | 0.549 | 0.287 | 0.801     | 0.430      |
| mistralai/Mistral-7B   | 0.626 | 0.395 | 0.812     | 0.428      |
| microsoft/phi-2        | 0.560 | 0.613 | 0.682     | 0.447      |

ワークフロー4: vLLMで評価(高速推論)

vLLMバックエンドを使用して5~10倍高速に評価します。

vLLM評価:
- [ ] ステップ1: vLLMのインストール
- [ ] ステップ2: vLLMバックエンドの構成
- [ ] ステップ3: 評価の実行

ステップ1: vLLMのインストール

pip install vllm

ステップ2: vLLMバックエンドの構成

lm_eval --model vllm \
  --model_args pretrained=meta-llama/Llama-2-7b-hf,tensor_parallel_size=1,dtype=auto,gpu_memory_utilization=0.8 \
  --tasks mmlu \
  --batch_size auto

ステップ3: 評価の実行

vLLMは標準的なHuggingFaceより5~10倍高速です:

# 標準HF: 7Bモデルで約2時間のMMLA
lm_eval --model hf \
  --model_args pretrained=meta-llama/Llama-2-7b-hf \
  --tasks mmlu \
  --batch_size 8

# vLLM: 7Bモデルで約15~20分のMMLA
lm_eval --model vllm \
  --model_args pretrained=meta-llama/Llama-2-7b-hf,tensor_parallel_size=2 \
  --tasks mmlu \
  --batch_size auto

使用する場合と代替案

lm-evaluation-harnessを使用すべき場合:

  • アカデミック論文のためのモデルベンチマーク
  • 標準タスク全体でモデル品質を比較
  • トレーニング進捗の追跡
  • 標準化されたメトリクス(全員が同じプロンプトを使用)の報告
  • 再現可能な評価が必要

代わりに代替案を使用:

  • HELM(Stanford): より広い評価(公平性、効率性、キャリブレーション)
  • AlpacaEval: LLMジャッジを使用した指示追従評価
  • MT-Bench: 会話型マルチターン評価
  • カスタムスクリプト: ドメイン固有の評価

一般的な問題

問題: 評価が遅い

vLLMバックエンドを使用します:

lm_eval --model vllm \
  --model_args pretrained=model-name,tensor_parallel_size=2

またはフューショット例を削減:

--num_fewshot 0  # 5ではなく

またはMMLA部分集合を評価:

--tasks mmlu_stem  # STEM科目のみ

問題: メモリ不足

バッチサイズを削減:

--batch_size 1  # または --batch_size auto

量子化を使用:

--model_args pretrained=model-name,load_in_8bit=True

CPUオフロードを有効化:

--model_args pretrained=model-name,device_map=auto,offload_folder=offload

問題: 報告された結果と異なる結果

フューショット数を確認:

--num_fewshot 5  # ほとんどの論文は5ショットを使用

正確なタスク名を確認:

--tasks mmlu  # mmlu_directやmmlu_fewshotではなく

モデルとトークナイザーが一致することを確認:

--model_args pretrained=model-name,tokenizer=same-model-name

問題: HumanEvalがコードを実行しない

実行依存関係をインストール:

pip install human-eval

コード実行を有効化:

lm_eval --model hf \
  --model_args pretrained=model-name \
  --tasks humaneval \
  --allow_code_execution  # HumanEvalに必須

高度なトピック

ベンチマークの説明: すべての60以上のタスク、それらが測定するもの、および解釈の詳細な説明は、references/benchmark-guide.mdを参照してください。

カスタムタスク: ドメイン固有の評価タスク作成については、references/custom-tasks.mdを参照してください。

API評価: OpenAI、Anthropic、およびその他のAPIモデルの評価については、references/api-evaluation.mdを参照してください。

マルチGPU戦略: データ並列とテンソル並列評価については、references/distributed-eval.mdを参照してください。

ハードウェア要件

  • GPU: NVIDIA(CUDA 11.8以上)、CPU上でも動作(非常に遅い)
  • VRAM:
    • 7Bモデル: 16GB(bf16)または8GB(8ビット)
    • 13Bモデル: 28GB(bf16)または14GB(8ビット)
    • 70Bモデル: マルチGPUまたは量子化が必要
  • 時間(7Bモデル、単一A100):
    • HellaSwag: 10分
    • GSM8K: 5分
    • MMLU(完全): 2時間
    • HumanEval: 20分

リソース

ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
daeha76
リポジトリ
daeha76/RianFriends
ライセンス
MIT
最終更新
2026/4/6

Source: https://github.com/daeha76/RianFriends / ライセンス: MIT

関連スキル

OpenAILLM・AI開発⭐ リポ 6,054

agent-browser

AI エージェント向けのブラウザ自動化 CLI です。ウェブサイトとの対話が必要な場合に使用します。ページ遷移、フォーム入力、ボタンクリック、スクリーンショット取得、データ抽出、ウェブアプリのテスト、ブラウザ操作の自動化など、あらゆるブラウザタスクに対応できます。「ウェブサイトを開く」「フォームに記入する」「ボタンをクリックする」「スクリーンショットを取得する」「ページからデータを抽出する」「このウェブアプリをテストする」「サイトにログインする」「ブラウザ操作を自動化する」といった要求や、プログラマティックなウェブ操作が必要なタスクで起動します。

by JimmyLv
汎用LLM・AI開発⭐ リポ 1,982

anyskill

AnySkill — あなたのプライベート・スキルクラウド。GitHubを基盤としたリポジトリからエージェントスキルを管理、同期、動的にロードできます。自然言語でクラウドスキルを検索し、オンデマンドでプロンプトを自動ロード、カスタムスキルのアップロードと共有、スキルバンドルの一括インストールが可能です。OpenClaw、Antigravity、Claude Code、Cursorに対応しています。

by LeoYeAI
汎用LLM・AI開発⭐ リポ 1,982

engram

AIエージェント向けの永続的なメモリシステムです。バグ修正、意思決定、発見、設定変更の後はmem_saveを使用してください。ユーザーが「覚えている」「記憶している」と言及した場合、または以前のセッションと重複する作業を開始する際はmem_searchを使用します。セッション終了前にmem_session_summaryを使用して、コンテキストを保持してください。

by LeoYeAI
汎用LLM・AI開発⭐ リポ 21,584

skyvern

AI駆動のブラウザ自動化により、任意のウェブサイトを自動化できます。フォーム入力、データ抽出、ファイルダウンロード、ログイン、複数ステップのワークフロー実行など、ユーザーがウェブサイトと連携する必要があるときに使用します。Skyvernは、LLMとコンピュータビジョンを活用して、未知のサイトも自動操作可能です。Python SDK、TypeScript SDK、REST API、MCPサーバー、またはCLIを通じて統合できます。

by Skyvern-AI
汎用LLM・AI開発⭐ リポ 1,149

pinchbench

PinchBenchベンチマークを実行して、OpenClawエージェントの実世界タスクにおけるパフォーマンスを評価できます。モデルの機能テスト、モデル間の比較、ベンチマーク結果のリーダーボード提出、またはOpenClawのセットアップがカレンダー、メール、リサーチ、コーディング、複数ステップのワークフローにどの程度対応しているかを確認する際に使用します。

by pinchbench
汎用LLM・AI開発⭐ リポ 4,693

openui

OpenUIとOpenUI Langを使用してジェネレーティブUIアプリを構築できます。これらはLLM生成インターフェースのためのトークン効率的なオープン標準です。OpenUI、@openuidev、ジェネレーティブUI、LLMからのストリーミングUI、AI向けコンポーネントライブラリ、またはjson-render/A2UIの置き換えについて述べる際に使用します。スキャフォルディング、defineComponent、システムプロンプト、Renderer、およびOpenUI Lang出力のデバッグに対応しています。

by thesysdev
本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: daeha76 · daeha76/RianFriends · ライセンス: MIT