lm-evaluation-harness: Chạy MMLU GSM8K HumanEval Benchmark LLM

Đá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.

Giao diện lm-evaluation-harness CLI chạy benchmark MMLU trên terminal

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.

lm-evaluation-harness benchmark dashboard so sánh điểm MMLU GSM8K HumanEval giữa các 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%.

bảng điểm benchmark thực tế Llama 3.1 Mistral Phi trên MMLU GSM8K HumanEval

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@1pass@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_size xuống 1-2, dùng --device cpu cho model nhỏ, hoặc quantize trước.
  • Token hết nơi: dùng --max_gen_toks giới hạn output, kiểm tra model_max_length của tokenizer.
  • Kết quả không reproducible: đảm bảo seed cố đị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

Tôi là một lập trình viên IOS. Code chính là IOS nhưng thỉnnh thoảng vẫn đá sang Android hoặc web. Mặc dù không quá thông thạo nhưng tôi sẽ chia sẻ những kiến thức mà mình đã tìm hiểu, áp dụng qua.

Bài viết liên quan

Transformer model architecture diagram showing encoder-decoder with attention mechanism

Speculative Decoding: Tăng tốc inference LLM 2-3x với draft model

Speculative decoding là kỹ thuật tăng tốc độ inference của Large Language Models (LLM) lên 2-3x mà không làm giảm chất lượng đầu ra. Ý tưởng cốt lõi: sử dụng…

Xem thêm
GPT-4o multimodal interface demo

Multimodal AI: GPT-4o và Gemini Pro tích hợp văn bản, hình ảnh, âm thanh

Multimodal AI: GPT-4o và Gemini Pro tích hợp văn bản, hình ảnh, âm thanh GPT-4o multimodal interface demo: hiển thị đầu vào văn bản, hình ảnh và âm thanh Trí…

Xem thêm

Đánh giá RAG: Precision, Recall, Faithfulness trong Retrieval-Augmented Generation

Đánh giá RAG: Precision, Recall, Faithfulness trong Retrieval-Augmented Generation Khi xây dựng hệ thống RAG (Retrieval-Augmented Generation), việc đo lường chất lượng retrieval và generation là cực kỳ quan trọng….

Xem thêm
0 0 đánh giá
Article Rating
Theo dõi
Thông báo của
guest
0 Comments
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất