Cách thức hoạt động của Bảng xếp hạng chuẩn chính thức của Hugging Face: Tệp YAML .eval_results, bộ lọc base_model và 30% dữ liệu bị ẩn theo chế độ xem mặc định
Tóm tắt: Hugging Face hiện gắn thẻ 48 tập dữ liệu là tiêu chuẩn đánh giá chính thức (benchmark:official). Các bảng xếp hạng của họ không do chủ sở hữu tiêu chuẩn tải lên, mà được tự động tổng hợp từ các tệp .eval_results/*.yaml nhỏ mà tác giả mô hình cam kết vào kho lưu trữ mô hình của riêng họ (hoặc đề xuất thông qua các yêu cầu kéo).
Vào ngày 5 tháng 10 năm 2026, tôi đã truy vấn mọi bảng xếp hạng hai lần thông qua API công khai. Chế độ xem mặc định trả về 1.023 mục. Với tham số ?base_model=false, giữ lại các mô hình phái sinh, nó trả về 1.469 mục. Như vậy, 446 mục (30,4%) không bao giờ xuất hiện trong chế độ xem mặc định và trường quyết định là khóa base_model.
Tóm tắt: Hugging Face hiện gắn thẻ 48 tập dữ liệu là các điểm chuẩn chính thức (benchmark:official). Các bảng xếp hạng của họ không do chủ sở hữu điểm chuẩn tải lên mà được tự động tổng hợp từ các tệp .eval_results/*.yaml nhỏ do tác giả mô hình cam kết vào kho lưu trữ mô hình của riêng họ (hoặc đề xuất thông qua các yêu cầu kéo). Vào ngày 5 tháng 10 năm 2026, tôi đã truy vấn từng bảng hai lần thông qua API công khai. Chế độ xem mặc định trả về 1.023 mục. Với tham số ?base_model=false, giữ lại các mô hình phái sinh, nó trả về 1.469 mục. Như vậy, 446 mục (30,4%) không bao giờ xuất hiện trong chế độ xem mặc định và trường quyết định là khóa base_model trong mỗi thẻ mô hình. Một phát hiện khác: 772 trong số 1.023 mục hiển thị (75,5%) đến từ các yêu cầu kéo đang mở và không có mục nào được gắn cờ đã xác minh.
Bảng xếp hạng điểm chuẩn chính thức của Hugging Face là gì?
Một điểm chuẩn chính thức chỉ đơn giản là một kho lưu trữ tập dữ liệu mang thẻ benchmark:official. Hub hiển thị một tiện ích bảng xếp hạng trên trang tập dữ liệu của nó. Mỗi hàng trên tiện ích đó là điểm số của một mô hình trên điểm chuẩn đó. Chủ sở hữu tập dữ liệu không cần phải chạy bất kỳ dịch vụ đánh giá nào cho việc này. Hub thu thập các điểm số mà các kho lưu trữ mô hình tự báo cáo và đối sánh chúng với tập dữ liệu.
Bạn có thể lấy danh sách các bảng bằng một yêu cầu:
curl -s "https://huggingface.co/api/datasets?filter=benchmark:official&limit=200" \
| python -c "import sys,json; d=json.load(sys.stdin); print(len(d)); print('\n'.join(x['id'] for x in d))"
Khi tôi chạy lệnh này vào ngày 5 tháng 10 năm 2026, nó đã trả về 48 tập dữ liệu. Một số tập dữ liệu nổi tiếng hơn bao gồm: TIGER-Lab/MMLU-Pro, Idavidrein/gpqa, cais/hle, SWE-bench/SWE-bench_Verified, hf-audio/open-asr-leaderboard, openai/gsm8k, MathArena/aime_2026, MMMU/MMMU_Pro và harborframework/terminal-bench-2.0. Danh sách cũng bao gồm các bảng mới hơn, chuyên biệt hơn như llamaindex/ParseBench, llamaindex/ExtractBench, LEXam-Benchmark/LEXam, FutureMa/EvasionBench và crosbylegal/RedlineBench.
Bốn trong số 48 bảng (tiiuae/PBench, mercor/ACE, ChrisHayduk/nanofold-public, harborframework/terminal-bench-science) không có mục nào trong cả hai chế độ xem khi tôi kiểm tra. Các bảng được gắn thẻ có thể tồn tại trước khi bất kỳ ai báo cáo điểm số cho chúng.
Các mục bảng xếp hạng Hugging Face được xây dựng từ tệp YAML .eval_results như thế nào?
Mỗi hàng đều bắt nguồn từ một tệp YAML trong một kho lưu trữ mô hình, nằm trong thư mục có tên .eval_results/. API bảng xếp hạng bao gồm đường dẫn trong mỗi hàng, vì vậy bạn có thể tự mình xem:
curl -s "https://huggingface.co/api/datasets/Idavidrein/gpqa/leaderboard" \
| python -c "import sys,json; e=json.load(sys.stdin)[1]; print({k:e[k] for k in ('rank','modelId','value','filename','verified','pullRequest')})"
Mỗi hàng có các trường sau: rank, filename, value, verified, source, pullRequest, modelId, author, lower_is_better và num_parameters. filename là đường dẫn YAML bên trong kho lưu trữ mô hình và pullRequest chứa số PR khi tệp nằm trên một tham chiếu PR thay vì main.
Đây là một tệp thực tế. moonshotai/Kimi-K3 giữ năm tệp trong thư mục main:
curl -s "https://huggingface.co/api/models/moonshotai/Kimi-K3/tree/main/.eval_results" \
| python -c "import sys,json; [print(f['path'], f['size']) for f in json.load(sys.stdin)]"
.eval_results/apex-agents.yaml 157
.eval_results/deep-swe.yaml 156
.eval_results/gpqa.yaml 152
.eval_results/hle.yaml 139
.eval_results/moonshotai__Kimi-K3.yaml 211
Tệp GPQA (/raw/main/.eval_results/gpqa.yaml) chỉ có 152 byte:
- dataset:
id: Idavidrein/gpqa
task_id: diamond
value: 93.5
source:
url: https://huggingface.co/moonshotai/Kimi-K3
name: Model Card
Đây là toàn bộ hợp đồng:
`dataset.id` là kho dữ liệu chuẩn (benchmark dataset repo). Mã này phải khớp chính xác với một trong các mã bảng xếp hạng chính thức, nếu không điểm số sẽ không được ghi nhận.
`dataset.task_id` chọn một tác vụ phụ hoặc phân tách khi một bảng xếp hạng có nhiều tác vụ (ví dụ: đối với GPQA, diamond).
`value` là con số được xếp hạng. Cờ `lower_is_better` của bảng xếp hạng quyết định thứ tự sắp xếp (ví dụ: WER trên bảng ASR).
`source` là một liên kết ghi công. Trên thực tế, liên kết này thường trỏ về thẻ mô hình (model card).
Các khóa tùy chọn cũng xuất hiện phổ biến, như `date` và trường `notes` dạng văn bản tự do cho giao thức (số lượng mẫu, nhiệt độ, ngân sách token, độ chính xác). Hãy sử dụng chúng. Đây là nơi duy nhất người đọc có thể thấy cách con số được tạo ra.
Tệp là một danh sách YAML, vì vậy một tệp duy nhất có thể chứa nhiều kết quả chuẩn. Nhiều kho lưu trữ vẫn sử dụng một tệp cho mỗi chuẩn, giúp giữ cho các bản khác biệt (diff) và yêu cầu kéo (PR) nhỏ gọn.
**Tại sao mô hình của tôi không xuất hiện trên bảng xếp hạng Hugging Face? (bộ lọc `base_model`)**
Đây là vấn đề mà hầu hết các tác giả thường gặp phải. Điểm cuối bảng xếp hạng (leaderboard endpoint) có một tham số gọi là `base_model`. Nếu không có tham số này, API (và tiện ích mặc định) sẽ loại bỏ các mô hình mà thẻ của chúng khai báo một `base_model`, tức là các mô hình được tinh chỉnh (fine-tunes), hợp nhất (merges), lượng tử hóa (quantizations) và bộ điều hợp (adapters). Với `?base_model=false`, các mô hình phái sinh đó sẽ xuất hiện trở lại:
`B=Idavidrein/gpqa`
`curl -s "https://huggingface.co/api/datasets/$B/leaderboard" | python -c "import sys,json;print(len(json.load(sys.stdin)))"`
`curl -s "https://huggingface.co/api/datasets/$B/leaderboard?base_model=false" | python -c "import sys,json;print(len(json.load(sys.stdin)))"`
Đối với GPQA, con số này là 111 so với 175. Tôi đã chạy so sánh tương tự cho tất cả 48 bảng xếp hạng bằng tập lệnh này:
```python
import requests
from concurrent.futures import ThreadPoolExecutor
API = "https://huggingface.co/api/datasets"
boards = [d["id"] for d in requests.get(f"{API}?filter=benchmark:official&limit=200").json()]
def count(bid):
d = requests.get(f"{API}/{bid}/leaderboard", timeout=60).json()
a = requests.get(f"{API}/{bid}/leaderboard?base_model=false", timeout=60).json()
return bid, len(d), len(a)
rows = list(ThreadPoolExecutor(8).map(count, boards))
dflt = sum(r[1] for r in rows); allr = sum(r[2] for r in rows)
print(len(rows), dflt, allr, f"{(allr - dflt) / allr:.1%} hidden")
```
Kết quả xuất ra vào ngày 05/10/2026: 48 1023 1469 30,4% bị ẩn.
Mức độ ẩn khác nhau rất nhiều giữa các bảng xếp hạng:
| Bảng xếp hạng | Mặc định | Với các mô hình phái sinh | Tỷ lệ ẩn |
| :------------------------- | :------- | :----------------------- | :------- |
| TIGER-Lab/MMLU-Pro | 141 | 216 | 34,7% |
| Idavidrein/gpqa | 111 | 175 | 36,6% |
| cais/hle | 89 | 108 | 17,6% |
| SWE-bench/SWE-bench_Verified | 67 | 89 | 24,7% |
| hf-audio/open-asr-leaderboard | 62 | 86 | 27,9% |
Nguồn tin: Dev.to Machine Learning — Tác giả: Ward Ed. Bản dịch tiếng Việt do AI thực hiện, có thể có sai sót.