本文へ移動
cccskills
無料GitHub で公開

evaluating-llms-harness

Avalia LLMs em mais de 60 benchmarks acadêmicos (MMLU, HumanEval, GSM8K, TruthfulQA, HellaSwag). Use quando benchmarking de qualidade de modelo, comparação de modelos, relatório de resultados acadêmicos ou rastreamento de progresso de treinamento. Padrão da indústria usado por EleutherAI, HuggingFace e laboratórios principais. Suporta HuggingFace, vLLM, APIs.

インストール方法を見る

含まれるファイル(5)

  • SKILL.md12.5 KB
  • references/api-evaluation.md10.9 KB
  • references/benchmark-guide.md10.5 KB
  • references/custom-tasks.md12.8 KB
  • references/distributed-eval.md11.2 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

lm-evaluation-harness - Benchmarking de LLM

Início rápido

lm-evaluation-harness avalia LLMs em mais de 60 benchmarks acadêmicos usando prompts e métricas padronizadas.

Instalação:

pip install lm-eval

Avalie qualquer modelo HuggingFace:

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

Veja tarefas disponíveis:

lm_eval --tasks list

Fluxos de trabalho comuns

Fluxo de trabalho 1: Avaliação de benchmark padrão

Avalie o modelo em benchmarks principais (MMLU, GSM8K, HumanEval).

Copie esta lista de verificação:

Avaliação de Benchmark:
- [ ] Etapa 1: Escolha a suite de benchmark
- [ ] Etapa 2: Configure o modelo
- [ ] Etapa 3: Execute a avaliação
- [ ] Etapa 4: Analise os resultados

Etapa 1: Escolha a suite de benchmark

Benchmarks principais de raciocínio:

  • MMLU (Massive Multitask Language Understanding) - 57 disciplinas, múltipla escolha
  • GSM8K - Problemas de matemática de escola primária
  • HellaSwag - Raciocínio de senso comum
  • TruthfulQA - Veracidade e factualidade
  • ARC (AI2 Reasoning Challenge) - Perguntas de ciência

Benchmarks de código:

  • HumanEval - Geração de código Python (164 problemas)
  • MBPP (Mostly Basic Python Problems) - Codificação Python

Suite padrão (recomendado para lançamentos de modelo):

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

Etapa 2: Configure o modelo

Modelo HuggingFace:

lm_eval --model hf \
  --model_args pretrained=meta-llama/Llama-2-7b-hf,dtype=bfloat16 \
  --tasks mmlu \
  --device cuda:0 \
  --batch_size auto  # Detecta automaticamente o tamanho de lote ideal

Modelo quantizado (4-bit/8-bit):

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

Checkpoint customizado:

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

Etapa 3: Execute a avaliação

# Avaliação completa de MMLU (57 disciplinas)
lm_eval --model hf \
  --model_args pretrained=meta-llama/Llama-2-7b-hf \
  --tasks mmlu \
  --num_fewshot 5 \  # Avaliação 5-shot (padrão)
  --batch_size 8 \
  --output_path results/ \
  --log_samples  # Salva predições individuais

# Múltiplos benchmarks de uma vez
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

Etapa 4: Analise os resultados

Resultados salvos em 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
  }
}

Fluxo de trabalho 2: Rastreie o progresso do treinamento

Avalie checkpoints durante o treinamento.

Rastreamento de Progresso de Treinamento:
- [ ] Etapa 1: Configure avaliação periódica
- [ ] Etapa 2: Escolha benchmarks rápidos
- [ ] Etapa 3: Automatize a avaliação
- [ ] Etapa 4: Plote curvas de aprendizado

Etapa 1: Configure avaliação periódica

Avalie a cada N etapas de treinamento:

#!/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-shot para velocidade
  --batch_size 16 \
  --output_path results/step-$STEP.json

Etapa 2: Escolha benchmarks rápidos

Benchmarks rápidos para avaliação frequente:

  • HellaSwag: ~10 minutos em 1 GPU
  • GSM8K: ~5 minutos
  • PIQA: ~2 minutos

Evite para avaliação frequente (muito lento):

  • MMLU: ~2 horas (57 disciplinas)
  • HumanEval: Requer execução de código

Etapa 3: Automatize a avaliação

Integre com script de treinamento:

# No loop de treinamento
if step % eval_interval == 0:
    model.save_pretrained(f"checkpoints/step-{step}")

    # Execute avaliação
    os.system(f"./eval_checkpoint.sh checkpoints step-{step}")

Ou use callbacks do 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}"

        # Salve checkpoint
        trainer.save_checkpoint(checkpoint_path)

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

Etapa 4: Plote curvas de aprendizado

import json
import matplotlib.pyplot as plt

# Carregue todos os resultados
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"])

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

Fluxo de trabalho 3: Compare múltiplos modelos

Suite de benchmark para comparação de modelos.

Comparação de Modelos:
- [ ] Etapa 1: Defina a lista de modelos
- [ ] Etapa 2: Execute avaliações
- [ ] Etapa 3: Gere tabela de comparação

Etapa 1: Defina a lista de modelos

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

Etapa 2: Execute avaliações

#!/bin/bash
# eval_all_models.sh

TASKS="mmlu,gsm8k,hellaswag,truthfulqa"

while read model; do
    echo "Evaluating $model"

    # Extraia nome do modelo para arquivo de saída
    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

Etapa 3: Gere tabela de comparação

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:
            # Obtenha métrica primária para cada tarefa
            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))

Saída:

| 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      |

Fluxo de trabalho 4: Avalie com vLLM (inferência mais rápida)

Use backend vLLM para avaliação 5-10x mais rápida.

Avaliação com vLLM:
- [ ] Etapa 1: Instale vLLM
- [ ] Etapa 2: Configure backend vLLM
- [ ] Etapa 3: Execute avaliação

Etapa 1: Instale vLLM

pip install vllm

Etapa 2: Configure backend 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

Etapa 3: Execute avaliação

vLLM é 5-10× mais rápido que HuggingFace padrão:

# HF padrão: ~2 horas para MMLU em modelo 7B
lm_eval --model hf \
  --model_args pretrained=meta-llama/Llama-2-7b-hf \
  --tasks mmlu \
  --batch_size 8

# vLLM: ~15-20 minutos para MMLU em modelo 7B
lm_eval --model vllm \
  --model_args pretrained=meta-llama/Llama-2-7b-hf,tensor_parallel_size=2 \
  --tasks mmlu \
  --batch_size auto

Quando usar vs alternativas

Use lm-evaluation-harness quando:

  • Benchmarking de modelos para artigos acadêmicos
  • Comparação de qualidade de modelo em tarefas padrão
  • Rastreamento de progresso de treinamento
  • Relatório de métricas padronizadas (todos usam os mesmos prompts)
  • Necessidade de avaliação reproduzível

Use alternativas em vez disso:

  • HELM (Stanford): Avaliação mais ampla (fairness, eficiência, calibração)
  • AlpacaEval: Avaliação de seguimento de instruções com juízes LLM
  • MT-Bench: Avaliação multi-turno conversacional
  • Scripts customizados: Avaliação específica de domínio

Problemas comuns

Problema: Avaliação muito lenta

Use backend vLLM:

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

Ou reduza exemplos fewshot:

--num_fewshot 0  # Em vez de 5

Ou avalie subconjunto de MMLU:

--tasks mmlu_stem  # Apenas disciplinas STEM

Problema: Sem memória disponível

Reduza tamanho do lote:

--batch_size 1  # Ou --batch_size auto

Use quantização:

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

Ative offloading de CPU:

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

Problema: Resultados diferentes dos relatados

Verifique contagem de fewshot:

--num_fewshot 5  # A maioria dos artigos usa 5-shot

Verifique nome exato da tarefa:

--tasks mmlu  # Não mmlu_direct ou mmlu_fewshot

Verifique correspondência de modelo e tokenizador:

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

Problema: HumanEval não executa código

Instale dependências de execução:

pip install human-eval

Ative execução de código:

lm_eval --model hf \
  --model_args pretrained=model-name \
  --tasks humaneval \
  --allow_code_execution  # Necessário para HumanEval

Tópicos avançados

Descrições de benchmarks: Veja references/benchmark-guide.md para descrição detalhada de todas as 60+ tarefas, o que medem e interpretação.

Tarefas customizadas: Veja references/custom-tasks.md para criar tarefas de avaliação específicas de domínio.

Avaliação de API: Veja references/api-evaluation.md para avaliar modelos OpenAI, Anthropic e outras APIs.

Estratégias multi-GPU: Veja references/distributed-eval.md para avaliação data parallel e tensor parallel.

Requisitos de hardware

  • GPU: NVIDIA (CUDA 11.8+), funciona em CPU (muito lento)
  • VRAM:
    • Modelo 7B: 16GB (bf16) ou 8GB (8-bit)
    • Modelo 13B: 28GB (bf16) ou 14GB (8-bit)
    • Modelo 70B: Requer multi-GPU ou quantização
  • Tempo (modelo 7B, single A100):
    • HellaSwag: 10 minutos
    • GSM8K: 5 minutos
    • MMLU (completo): 2 horas
    • HumanEval: 20 minutos

Recursos

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

Especialista em construir experiências 3D para a web - Three.js, React Three Fiber, Spline, WebGL e cenas 3D interativas. Cobre configuradores de produtos, portfólios 3D, websites imersivos e adição de profundidade às experiências web. Use quando: website 3D, three.js, WebGL, react three fiber, experiência 3D.

日本語の概要は準備中です。原文の説明を表示しています。

artubss/SKILLS-CLAUDE-CODE112026年5月17日 更新

Quando o usuário quer planejar, projetar ou implementar um teste A/B ou experimento. Também use quando o usuário menciona "teste A/B", "split test", "experimento", "testar essa mudança", "copy variante", "teste multivariado" ou "hipótese". Para implementação de rastreamento, veja analytics-tracking.

日本語の概要は準備中です。原文の説明を表示しています。

artubss/SKILLS-CLAUDE-CODE112026年5月17日 更新

Auditar e melhorar a acessibilidade web seguindo as diretrizes WCAG 2.1. Use quando solicitado para "melhorar acessibilidade", "auditoria a11y", "conformidade WCAG", "suporte a leitor de tela", "navegação por teclado" ou "tornar acessível".

日本語の概要は準備中です。原文の説明を表示しています。

artubss/SKILLS-CLAUDE-CODE112026年5月17日 更新

Testes e benchmarking de agentes LLM incluindo testes comportamentais, avaliação de capacidades, métricas de confiabilidade e monitoramento em produção—onde até os melhores agentes alcançam menos de 50% em benchmarks do mundo real. Use quando: testes de agentes, avaliação de agentes, benchmark de agentes, confiabilidade de agentes, teste de agentes.

日本語の概要は準備中です。原文の説明を表示しています。

artubss/SKILLS-CLAUDE-CODE112026年5月17日 更新

Criar, gerenciar e orquestrar agentes de IA usando o CLI AI Maestro. Use quando o usuário pedir para "criar agente", "listar agentes", "deletar agente", "hibernar agente", "despertar agente", "instalar plugin", "mostrar agente", "reiniciar agente" ou qualquer tarefa de gerenciamento do ciclo de vida do agente.

日本語の概要は準備中です。原文の説明を表示しています。

artubss/SKILLS-CLAUDE-CODE112026年5月17日 更新

Gerencie múltiplos agentes CLI locais via sessões tmux (iniciar/parar/monitorar/atribuir) com agendamento compatível com cron.

日本語の概要は準備中です。原文の説明を表示しています。

artubss/SKILLS-CLAUDE-CODE112026年5月17日 更新

artubss のスキルをすべて見る

このスキルの問題を報告する