본문으로 건너뛰기
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.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

연동 도구Hugging Face
설치 방법 보기

포함된 파일(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

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

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의 스킬 모두 보기

이 스킬의 문제 신고