{/* Trang này được tạo tự động từ SKILL.md của kỹ năng bởi website/scripts/generate-skill-docs.py. Chỉnh sửa nguồn SKILL.md, không phải trang này. */}
Đánh giá khai thác LLMs`lm-eval-harness: LLM chuẩn (MMLU, GSM8K, v.v.).
Siêu dữ liệu kỹ năng
| Nguồn | Đi kèm (được cài đặt theo mặc định) |
| Đường dẫn |
skills/mlops/evaluation/lm-evaluation-harness ` | | Phiên bản |
1.0.0 ` | | Tác giả | Nghiên cứu dàn nhạc | | Giấy phép | MIT | | Phụ thuộc |
lm-eval
, `transformers
,
vLLM |
| Nền tảng | Linux, macOS |
| Thẻ |
Evaluation
, `LM Evaluation Harness
, `Benchmarking
, `MMLU
, `HumanEval
, `GSM8K
, `EleutherAI
, `Model Quality
, `Academic Benchmarks
,
Industry Standard |
Tham khảo: đầy đủ SKILL.md
Sau đây là định nghĩa kỹ năng đầy đủ mà Hermes tải khi kỹ năng này được kích hoạt. Đây là những gì tác nhân coi là hướng dẫn khi kỹ năng được kích hoạt.
lm-đánh giá-khai thác - Đánh giá điểm chuẩn LLM`##Có gì bên trong
Đánh giá LLM trên hơn 60 điểm chuẩn học thuật (MMLU, HumanEval, GSM8K, TruthfulQA, HellaSwag). Sử dụng khi đo điểm chuẩn chất lượng mô hình, so sánh các mô hình, báo cáo kết quả học tập hoặc theo dõi tiến độ đào tạo. Tiêu chuẩn ngành được EleutherAI, HuggingFace và các phòng thí nghiệm lớn sử dụng. Hỗ trợ HuggingFace, vLLM, API.
Bắt đầu nhanh`lm-evaluation-harness đánh giá LLM trên hơn 60 điểm chuẩn học thuật bằng cách sử dụng các lời nhắc và số liệu được tiêu chuẩn hóa.
Cài đặt:
`
pip install lm-eval
`
``**Đánh giá bất kỳ mô hình HuggingFace nào**:
`
`bash
lm_eval --model hf \
--model_args pretrained=meta-Llama/Llama-2-7b-hf \
--tasks mmlu,gsm8k,hellaswag \
--device cuda:0 \
--batch_size 8
`
``**Xem các nhiệm vụ có sẵn**:
`
``` bash
lm_eval --tasks list
`
## Quy trình công việc chung
### Quy trình 1: Đánh giá điểm chuẩn tiêu chuẩn
Đánh giá mô hình dựa trên các điểm chuẩn cốt lõi (MMLU, GSM8K, HumanEval).
Sao chép danh sách kiểm tra này:
`
Benchmark Evaluation:
- [ ] Step 1: Choose benchmark suite
- [ ] Step 2: Configure model
- [ ] Step 3: Run evaluation
- [ ] Step 4: Analyze results
`
``**Bước 1: Chọn bộ điểm chuẩn**`**Điểm chuẩn lý luận cốt lõi**:
- **MMLU** (Hiểu ngôn ngữ đa nhiệm lớn) - 57 môn học, trắc nghiệm
- **GSM8K** - Các bài toán đố toán cấp lớp
- **HellaSwag** - Lý luận thông thường
- **TruthfulQA** - Tính trung thực và thực tế
- **ARC** (Thử thách suy luận AI2) - Câu hỏi khoa học`**Điểm chuẩn mã**:
- **HumanEval** - Tạo mã Python (164 vấn đề)
- **MBPP** (Chủ yếu là các vấn đề cơ bản về Python) - Mã hóa Python`**Bộ tiêu chuẩn** (được khuyến nghị cho các phiên bản mô hình):
`
``` bash
--tasks mmlu,gsm8k,hellaswag,truthfulqa,arc_challenge
`
``**Bước 2: Cấu hình mô hình**`**Mô hình ôm mặt**:
`
``` bash
lm_eval --model hf \
--model_args pretrained=meta-Llama/Llama-2-7b-hf,dtype=bfloat16 \
--tasks mmlu \
--device cuda:0 \
--batch_size auto # Auto-detect optimal batch size
`
``**Mô hình lượng tử hóa (4-bit/8-bit)**:
`
``` bash
lm_eval --model hf \
--model_args pretrained=meta-Llama/Llama-2-7b-hf,load_in_4bit=True \
--tasks mmlu \
--device cuda:0
`
``**Điểm kiểm tra tùy chỉnh**:
`
``` bash
lm_eval --model hf \
--model_args pretrained=/path/to/my-model,tokenizer=/path/to/tokenizer \
--tasks mmlu \
--device cuda:0
`
``**Bước 3: Chạy đánh giá**
``` bash
# Full MMLU evaluation (57 subjects)
lm_eval --model hf \
--model_args pretrained=meta-Llama/Llama-2-7b-hf \
--tasks mmlu \
--num_fewshot 5 \ # 5-shot evaluation (standard)
--batch_size 8 \
--output_path results/ \
--log_samples # Save individual predictions
# Multiple benchmarks at once
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
`
``**Bước 4: Phân tích kết quả**
Kết quả được lưu vào
`results/Llama2-7b-eval.JSON
:
``` 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
}
}
`
### Workflow 2: Theo dõi tiến độ đào tạo
Đánh giá các điểm kiểm tra trong quá trình đào tạo.
`
Training Progress Tracking:
- [ ] Step 1: Set up periodic evaluation
- [ ] Step 2: Choose quick benchmarks
- [ ] Step 3: Automate evaluation
- [ ] Step 4: Plot learning curves
`
``**Bước 1: Thiết lập đánh giá định kỳ**
Đánh giá từng N bước huấn luyện:
``` bash
#!/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 for speed
--batch_size 16 \
--output_path results/step-$STEP.JSON
`
``**Bước 2: Chọn điểm chuẩn nhanh**
Điểm chuẩn nhanh để đánh giá thường xuyên:
- **HellaSwag**: ~10 phút trên 1 GPU
- **GSM8K**: ~5 phút
- **PIQA**: ~2 phút
Tránh đánh giá thường xuyên (quá chậm):
- **MMLU**: ~2 giờ (57 môn)
- **HumanEval**: Yêu cầu thực thi mã`**Bước 3: Tự động đánh giá**
Tích hợp với kịch bản đào tạo:
``` python
# In training loop
if step % eval_interval == 0:
model.save_pretrained(f"checkpoints/step-\{step}")
# Run evaluation
os.system(f"./eval_checkpoint.sh checkpoints step-\{step}")
`
``Hoặc sử dụng lệnh gọi lại PyTorch Lightning:
``` python
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}"
# Save checkpoint
trainer.save_checkpoint(checkpoint_path)
# Run lm-eval
os.system(f"lm_eval --model hf --model_args pretrained=\{checkpoint_path} ...")
`
``**Bước 4: Vẽ đường cong học tập**
`Python
import JSON
import matplotlib.pyplot as plt
# Load all results
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"])
# Plot
plt.plot(steps, mmlu_scores)
plt.xlabel("Training Step")
plt.ylabel("MMLU Accuracy")
plt.title("Training Progress")
plt.savefig("training_curve.png")
`
### Workflow 3: So sánh nhiều model
Bộ điểm chuẩn để so sánh mô hình.
`
Model Comparison:
- [ ] Step 1: Define model list
- [ ] Step 2: Run evaluations
- [ ] Step 3: Generate comparison table
`
``**Bước 1: Xác định danh sách mô hình**
``` bash
# models.txt
meta-Llama/Llama-2-7b-hf
meta-Llama/Llama-2-13b-hf
Mistralai/Mistral-7B-v0.1
Microsoft/phi-2
`
``**Bước 2: Chạy đánh giá**
``` bash
#!/bin/bash
# eval_all_models.sh
TASKS="mmlu,gsm8k,hellaswag,truthfulqa"`while read model; do
echo "Evaluating $model"
# Extract model name for output file
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
`
``**Bước 3: Tạo bảng so sánh**
``` python
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:
# Get primary metric for each task
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))
`
``Đầu ra:
`
| 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 |
### Workflow 4: Đánh giá bằng vLLM (suy luận nhanh hơn)
Sử dụng phụ trợ vLLM để đánh giá nhanh hơn 5-10 lần.
`
vLLM Evaluation:
- [ ] Step 1: Install vLLM
- [ ] Step 2: Configure vLLM backend
- [ ] Step 3: Run evaluation
`
``**Bước 1: Cài đặt vLLM**
``` bash
pip install vLLM
`
``**Bước 2: Định cấu hình phụ trợ vLLM**
`bash
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
`
``**Bước 3: Chạy đánh giá**`vLLM nhanh hơn 5-10× so với HuggingFace tiêu chuẩn:
``` bash
# Standard HF: ~2 hours for MMLU on 7B model
lm_eval --model hf \
--model_args pretrained=meta-Llama/Llama-2-7b-hf \
--tasks mmlu \
--batch_size 8
# vLLM: ~15-20 minutes for MMLU on 7B model
lm_eval --model vLLM \
--model_args pretrained=meta-Llama/Llama-2-7b-hf,tensor_parallel_size=2 \
--tasks mmlu \
--batch_size auto
`
## Khi nào nên sử dụng so với các lựa chọn thay thế`**Sử dụng khai thác đánh giá lm khi:**
- Mô hình so sánh các bài báo học thuật
- So sánh chất lượng mô hình giữa các nhiệm vụ tiêu chuẩn
- Theo dõi tiến độ đào tạo
- Báo cáo các số liệu được tiêu chuẩn hóa (mọi người đều sử dụng lời nhắc giống nhau)
- Cần đánh giá lặp lại**Sử dụng các lựa chọn thay thế thay thế:**
- **HELM** (Stanford): Đánh giá rộng hơn (công bằng, hiệu quả, hiệu chỉnh)
- **AlpacaEval**: Đánh giá theo hướng dẫn với giám khảo LLM
- **MT-Bench**: Đánh giá hội thoại nhiều lượt
- **Tập lệnh tùy chỉnh**: Đánh giá theo miền cụ thể
## Các vấn đề thường gặp`**Vấn đề: Đánh giá quá chậm**
Sử dụng phụ trợ vLLM:
`
``` bash
lm_eval --model vLLM \
--model_args pretrained=model-name,tensor_parallel_size=2
`
``Hoặc giảm bớt các ví dụ về vài bức ảnh:
`
``` bash
--num_fewshot 0 # Instead of 5
`
``Hoặc đánh giá tập hợp con của MMLU:
`
``` bash
--tasks mmlu_stem # Only STEM subjects
`
``**Vấn đề: Hết bộ nhớ**
Giảm kích thước lô:
`
``` bash
--batch_size 1 # Or --batch_size auto
`
``Sử dụng lượng tử hóa:
`
``` bash
--model_args pretrained=model-name,load_in_8bit=True
`
``Cho phép giảm tải CPU:
`
``` bash
--model_args pretrained=model-name,device_map=auto,offload_folder=offload
`
``**Vấn đề: Kết quả khác với báo cáo**
Kiểm tra số lượng ảnh chụp:
`
``` bash
--num_fewshot 5 # Most papers use 5-shot
`
``Kiểm tra tên nhiệm vụ chính xác:
`
``` bash
--tasks mmlu # Not mmlu_direct or mmlu_fewshot
`
``Xác minh sự trùng khớp giữa mô hình và mã thông báo:
`
``` bash
--model_args pretrained=model-name,tokenizer=same-model-name
`
``**Vấn đề: HumanEval không thực thi mã**
Cài đặt phụ thuộc thực thi:
`
``` bash
pip install human-eval
`
``Cho phép thực thi mã:
`
`bash
lm_eval --model hf \
--model_args pretrained=model-name \
--tasks humaneval \
--allow_code_execution # Required for HumanEval
`
## Chủ đề nâng cao`**Mô tả điểm chuẩn**: Xem [references/benchmark-guide.md](https://GitHub.com/NousResearch/Hermes-agent/blob/main/skills/mlops/evaluation/lm-evaluation-harness/references/benchmark-guide.md) để biết mô tả chi tiết về hơn 60 nhiệm vụ, những gì chúng đo lường và diễn giải.
**Nhiệm vụ tùy chỉnh**: Xem [references/custom-tasks.md](https://GitHub.com/NousResearch/Hermes-agent/blob/main/skills/mlops/evaluation/lm-evaluation-harness/references/custom-tasks.md) để tạo nhiệm vụ đánh giá theo miền cụ thể.
**Đánh giá API**: Xem [references/API-evaluation.md](https://GitHub.com/NousResearch/Hermes-agent/blob/main/skills/mlops/evaluation/lm-evaluation-harness/references/API-evaluation.md) để đánh giá OpenAI, Anthropic và các mô hình API khác.
**Chiến lược đa GPU**: Xem [references/distributed-eval.md](https://GitHub.com/NousResearch/Hermes-agent/blob/main/skills/mlops/evaluation/lm-evaluation-harness/references/distributed-eval.md) để biết đánh giá song song dữ liệu và tensor song song.
## Yêu cầu về phần cứng
- **GPU**: NVIDIA (CUDA 11.8+), hoạt động trên CPU (rất chậm)
- **VRAM**:
- Model 7B: 16GB (bf16) hoặc 8GB (8-bit)
- Model 13B: 28GB (bf16) hoặc 14GB (8-bit)
- Model 70B: Yêu cầu đa GPU hoặc lượng tử hóa
- **Thời gian** (model 7B, A100 đơn):
- HellaSwag: 10 phút
- GSM8K: 5 phút
- MMLU (đầy đủ): 2 giờ
- Đánh giá con người: 20 phút
## Tài nguyên
- GitHub: https://GitHub.com/EleutherAI/lm-evaluation-harness
- Tài liệu: https://GitHub.com/EleutherAI/lm-evaluation-harness/tree/main/docs
- Thư viện tác vụ: Hơn 60 tác vụ bao gồm MMLU, GSM8K, HumanEval, TruthfulQA, HellaSwag, ARC, WinoGrande, v.v.
- Bảng xếp hạng: https://huggingface.co/spaces/HuggingFaceH4/open_LLM_leaderboard (sử dụng dây nịt này)