
Đánh giá mô hình ngôn ngữ lớn (LLM) là bước quan trọng khi bạn cần so sánh hiệu năng giữa các model như Llama, Mistral, GPT hay Gemini. Thay vì tự viết script đánh giá rời rạc, cộng đồng hiện dùng lm-evaluation-harness — framework chuẩn của EleutherAI chạy hơn 60 benchmark học thuật theo cách đồng nhất. Bài này hướng dẫn bạn chạy MMLU, GSM8K, HumanEval thực tế trên local GPU hoặc API model.
lm-evaluation-harness là gì
lm-evaluation-harness là framework Python cung cấp unified interface để evaluate LLM trên hàng trăm benchmark. Framework này là backend chính thức của Open LLM Leaderboard trên Hugging Face, được hàng trăm bài báo khoa học trích dẫn và dùng nội bộ bởi NVIDIA, Cohere, BigScience.

Tính năng cốt lõi: hỗ trợ hơn 60 benchmark học thuật, load model qua HuggingFace Transformers, GPT-NeoX, vLLM, OpenAI API, hỗ trợ quantized model (GPTQ, AutoGPTQ), few-shot learning, custom prompt template, và reproducibility — kết quả so sánh được giữa các paper do dùng chung prompt set.
Các benchmark phổ biến trong LLM evaluation
Trong 60+ benchmark của harness, ba cái phổ biến nhất là MMLU, GSM8K, HumanEval. Mỗi benchmark đo một khía cạnh khác nhau của LLM.

| Benchmark | Đánh giá | Kích thước | Độ khó |
|---|---|---|---|
| MMLU (Massive Multitask Language Understanding) | Kiến thức đa lĩnh vực | 14,042 câu hỏi | Cao |
| GSM8K (Grade School Math 8K) | Toán suy luận bước | 8,500 bài toán | Trung bình |
| HumanEval | Sinh code functional | 164 bài tập | Trung bình |
| BIG-Bench Hard | Kỹ thuật suy luận phức tạp | 6,511 câu | Cao |
| HellaSwag | Hiểu ngữ cảnh commonsense | 10,042 câu | Thấp |
Cách chạy MMLU, GSM8K, HumanEval với lm-evaluation-harness
Framework hiện tách base package khỏi model backends. Cài đặt tối thiểu cho HuggingFace Transformers backend:
pip install lm-eval[hf]
Chạy nhanh MMLU 5-shot trên model HuggingFace:
lm-eval run --model hf --model_args pretrained=meta-llama/Llama-3.1-8B-Instruct --tasks mmlu --num_fewshot 5 --batch_size 8
CLI mới v0.4.0 dùng subcommands run, ls, validate. Bạn cũng có thể dùng YAML config file để quản lý nhiều benchmark cùng lúc, dễ version control và reproduce.
Kết quả thực tế: Llama 3.1 vs Mistral vs Phi
Khi chạy evaluation trên các model 7B-8B phổ biến, điểm khác biệt rõ ràng giữa các model. Llama 3.1 8B đạt khoảng 68-70% MMLU, trong đó Mistral 7B xoay quanh 60-62%. GSM8K thường thấy gap lớn hơn do benchmark này phụ thuộc chain-of-thought — model hỗ trợ CoT sẽ đạt 80%+, model thuần pre-training chỉ 30-40%.

HumanEval đánh giá khả năng sinh code functional. Model 7B thường đạt 50-60%, model 70B+ vượt 80-85%. Lưu ý HumanEval có pollution risk — một số training set trùng lặp nên điểm có thể được phóng đại. Luôn kiểm tra pass@1 và pass@10 thay vì chỉ nhìn một con số.
Prompt template và few-shot engineering
Benchmark không chỉ phụ thuộc model, prompt template cũng quyết định. Harness hỗ trợ --fewshot_as_multiturn để chèn few-shot examples dạng chat messages. Với Llama 3.1 Instruct, template mặc định đã optimize rất tốt, nhưng nếu bạn custom prompt hoặc dùng tool use, cần chạy lại evaluation để đảm bảo kết quả chính xác.
Đánh giá trên API model (OpenAI, Anthropic)
Nếu bạn không có GPU local, có thể evaluate qua OpenAI-compatible API. vLLM hỗ trợ OpenAI API endpoint, bạn host model trên server rồi dùng --model local-chat hoặc --model local-completions với --base_url để connect.
Lỗi thường gặp khi chạy evaluation
- OOM trên GPU: giảm
batch_sizexuống 1-2, dùng--device cpucho model nhỏ, hoặc quantize trước. - Token hết nơi: dùng
--max_gen_toksgiới hạn output, kiểm tramodel_max_lengthcủa tokenizer. - Kết quả không reproducible: đảm bảo
seedcố định, tắt sampling randomness khi cần. - HumanEval score cao bất thường: kiểm tra data contamination, dùng
--allow_code_executionđể chạy thực tế thay vì chỉ match string.
Tổng kết
lm-evaluation-harness là công cụ chuẩn để benchmark LLM, không cần viết evaluation script từ đầu. Chỉ cần một command, bạn có kết quả MMLU, GSM8K, HumanEval so sánh trực tiếp với các paper công khai. Hãy dùng nó mỗi khi bạn thử nghiệm model mới, quantized variant, hay custom prompt template — kết quả đồng nhất và reproducible giúp bạn đưa ra quyết định chính xác hơn.
Nguồn: GitHub EleutherAI lm-evaluation-harness, Open LLM Leaderboard
