Repository navigation
中文版
基准测试数据集
- 多轮对话评测:新增 MT-Bench,支持两轮对话和可配置的 Judge,遵循官方评分流程。
- Agent 评测:新增 Terminal-Bench 4.0(
terminal_bench_v4),固定官方数据版本4.0.0,支持任务筛选、重复试验及独立验证环境。 - 决策能力评测:新增 ANLI、BoolQ、BANKING77、ContractNLI、RewardBench v1,默认从 ModelScope 加载,支持普通 LLM 和 System One Choice 评测。
功能增强
- System One Choice:新增
eval_type='systemone_api',通过现有模型接口支持文本单选决策模型,并保留选项概率、置信度和请求信息。 - 数学评分:统一使用固定版本 Math-Verify 进行答案提取、解析与等价判断,覆盖 29 个基准,保留各基准的容差、部分得分及多答案规则。
- 基准加载:适配器改为按需加载,减少 CLI 和库导入时加载整个基准目录的开销。
- 数据集缓存:Native 加载支持复用 ModelScope SDK 本地快照;优化临时 Arrow 缓存、并发写入和中断恢复。
- 多模态性能测试:新增真实 MMMU 多图数据模式,保留提示中的图像占位顺序。
- 多轮性能测试:支持会话 ID 与逐轮请求 ID,SWE-Smith 数据构建支持副本生成,并减少延迟指标收集开销。
- SLA 自动调优:支持显式
s/ms阈值单位,校验指标有效性,使用准确请求计数,并改进约束与优化搜索。 - Dashboard:展示已安装的 EvalScope 版本,并提供本地化说明。
文档优化
- 更新 System One、Terminal-Bench 4.0、SLA 调优、多轮性能测试和数据缓存使用指南。
- 新增 DeepSearchQA 的 Parallel Search MCP 示例与 Qwen-Image 文生图评测示例。
- 修复性能结果分析、函数调用 API key、Python 3.10 示例以及多处外部文档链接。
问题修复
- 修复 AI2D 图像版本按图而非逐题选择的问题,依据官方
abcLabel标注选择原图或字母标注图。 - 修复 IFBench 关键词/姓名子串匹配、部分校验器与上游不一致及无单词回复的除零问题。
- 修复 AlpacaEval 胜负被计为 0.75/0.25、HallusionBench 分组、OCRBench-v2 类别宏平均、PubMedQA 未识别答案分母及 collection 宏平均问题。
- 修复 BFCL-v3、ACEBench 和 OCRBench-v2 汇总行重复计入总分/样本数,以及 vote@k 将空答案纳入投票的问题。
- 修复 C-Eval 答案格式解析、中文多选分隔符、MMLU-Redux 多答案标注和 BBH 自由答案括号保留问题。
- 修复 NER 重复实体与 BIO 边界、LiveCodeBench sandbox 输出比较和视频压缩包文件匹配问题。
- 修复流式性能测试中的工具调用 TTFT、推理文本 token 估算、Responses ITL/失败识别/缓存用量、单 token TPOT、分位数精度与 NaN、推测解码估算及 embedding/rerank 响应体延迟统计。
- 修复 Anthropic 图片 URL 和 thinking/signature 历史保留、Responses 中断重试及自定义 finish reason 处理。
- 修复 Agent 提交数值 0、临时 HOME 清理、工具 Schema 字面量、缺省样本 metadata、本地音视频路径,以及未测量 PD 指标导致性能详情 API 返回 500 等问题。
- 修复 Terminal-Bench 的 Codex
max_turns兼容问题,并更新 Full CI 的文本/视觉模型配置。
升级说明
- 数学评分涉及的 29 个基准、22 个 NER 基准及 AI2D、IFBench 等评分修复均更新了相应评测版本。比较结果时请核对
evaluation_version;旧预测可通过rerun_review=True/--rerun-review重新评分,旧 reviews 不能直接跨评测版本复用。 - AI2D
v1.1使用修正后的逐题图像,结果与v1.0不直接可比。Terminal-Bench 4.0 结果也不直接与 2.0/2.1 比较。 - Math-Verify 使用 ANTLR 4.13.2;当前
ms-vlmeval==0.0.20要求 ANTLR 4.11.1,因此vlmeval/allextras 的联合依赖安装存在冲突,请使用独立环境。数学解析与验证不提供硬超时。 - System One 仅支持文本单选;RewardBench v1 的整体 accuracy 按样本加权,ContractNLI 当前评估文档分类 accuracy,请勿将它们视为完整复现官方排行榜的全部指标。
English Version
Benchmark Datasets
- Multi-turn Evaluation: Added MT-Bench with two-turn conversations, configurable judges, and the official judging flow.
- Agent Evaluation: Added Terminal-Bench 4.0 (
terminal_bench_v4), pinned to official revision4.0.0, with task filtering, repeated trials, and separate verifier environments. - Decision Evaluation: Added ANLI, BoolQ, BANKING77, ContractNLI, and RewardBench v1, defaulting to ModelScope and supporting both standard LLM and System One Choice evaluation.
Feature Enhancements
- System One Choice: Added
eval_type='systemone_api'for text single-choice decision models through the existing model interface, retaining option probabilities, confidence, and request metadata. - Mathematical Scoring: Unified extraction, parsing, and equivalence checking with pinned Math-Verify across 29 benchmarks, preserving benchmark-specific tolerances, partial credit, and multiple-answer policies.
- Benchmark Loading: Load adapters on demand to reduce full-catalog import overhead for CLI and library use.
- Dataset Caching: Reuse local ModelScope SDK snapshots in Native loading and improve temporary Arrow storage, concurrent cache publication, and interruption recovery.
- Multimodal Performance Testing: Added a real MMMU multi-image mode with correct prompt/image placeholder ordering.
- Multi-turn Performance Testing: Added conversation and per-turn request IDs, SWE-Smith dataset replication, and lower latency-metric collection overhead.
- SLA Auto-tuning: Added explicit
s/msthreshold units, metric-validity checks, exact request-count handling, and improved constraint/optimization searches. - Dashboard: Display the installed EvalScope version with localized guidance.
Documentation
- Updated System One, Terminal-Bench 4.0, SLA auto-tuning, multi-turn performance testing, and dataset-cache guides.
- Added Parallel Search MCP for DeepSearchQA and a Qwen-Image text-to-image evaluation example.
- Fixed performance-result analysis, function-call API-key configuration, Python 3.10 examples, and external documentation links.
Bug Fixes
- Fixed AI2D image selection to follow each question's official
abcLabelannotation instead of choosing one image variant per diagram. - Fixed IFBench keyword/name substring matching, verifier deviations from upstream, and division by zero for word-less responses.
- Fixed AlpacaEval win/loss scores of 0.75/0.25, HallusionBench grouping, OCRBench-v2 category averaging, PubMedQA denominators for unrecognized answers, and collection macro averaging.
- Fixed summary-row double counting in BFCL-v3, ACEBench, and OCRBench-v2, and empty answers participating in vote@k.
- Fixed C-Eval answer parsing, Chinese multi-select separators, MMLU-Redux multi-answer annotations, and bracket preservation in BBH free-form targets.
- Fixed repeated NER entities and BIO boundaries, LiveCodeBench sandbox stdout comparison, and exact video archive-member matching.
- Fixed streamed tool-call TTFT, reasoning-token estimates, Responses ITL/failure/cached-usage handling, one-token TPOT, percentile precision/NaN handling, speculative-decoding estimates, and embedding/rerank response-body latency.
- Fixed Anthropic image URL and thinking/signature preservation, interrupted Responses retries, and provider-specific finish reasons.
- Fixed Agent numeric-zero submissions, temporary HOME cleanup, literal tool-schema values, missing sample metadata, local audio/video paths, and performance-detail API errors for unmeasured PD metrics.
- Fixed Codex
max_turnscompatibility in Terminal-Bench and updated Full CI's text/vision model configuration.
Upgrade Notes
- Evaluation versions have changed for the 29 mathematical benchmarks, 22 NER benchmarks, and scoring fixes such as AI2D and IFBench. Check
evaluation_versionwhen comparing results. Usererun_review=True/--rerun-reviewto rescore saved predictions; old reviews cannot be reused across evaluation versions. - AI2D
v1.1uses corrected per-question images and is not directly comparable withv1.0. Terminal-Bench 4.0 results are also not directly comparable with 2.0/2.1. - Math-Verify uses ANTLR 4.13.2, while
ms-vlmeval==0.0.20requires 4.11.1. Joint dependency installation with thevlmeval/allextras conflicts; use separate environments. Mathematical parsing and verification have no hard timeout. - System One supports text single-choice tasks only. RewardBench v1 reports sample-weighted overall accuracy, and ContractNLI currently evaluates document-classification accuracy; these are not full reproductions of every official leaderboard metric.
What's Changed
- feat(perf): add real multi-image MMMU dataset mode by @Bruce-Yii in #1729
- refactor(benchmarks): load adapters on demand instead of importing all 238 at package import by @Yunnglin in #1749
- feat(bench): add MT-Bench by @Yunnglin in #1750
- fix(metrics): parse Chinese multi-select answers separated by 、 or / by @feizhuzheng in #1751
- fix(perf): preserve MMMU image placeholder order by @git-jxj in #1754
- fix(agent): prevent zero answers from falling back to assistant text by @git-jxj in #1753
- fix(ifbench): count keywords and person names on word boundaries by @feizhuzheng in #1755
- fix(ifbench): align remaining upstream verifiers by @Yunnglin in #1756
- fix(agent): remove the temporary HOME after codex/hermes/gemini-cli runs by @Linxiushen in #1758
- fix: give logger calls a placeholder for their extra positional arguments by @Linxiushen in #1757
- fix(alpaca_eval): count a win as 1 and a loss as 0 by @jiangLLM in #1771
- fix(benchmarks): match archive members exactly in mvbench/videomme_v2 video lookup by @feizhuzheng in #1752
- feat(math): unify mathematical scoring with Math-Verify by @Yunnglin in #1785
- fix(models): preserve provider finish reasons in streamed responses by @1fanwang in #1777
- feat(web): display the installed EvalScope version by @git-jxj in #1784
- docs: update moved Qwen and ms-swift readthedocs links (EN and ZH) by @pratikgx in #1782
- docs(t2i): add Qwen-Image example to text-to-image best practice by @Bruce-Yii in #1768
- fix(perf): stop perf/detail 500 for runs without PD metrics by @Yunnglin in #1790
- fix(bbh): keep brackets in free-form targets such as dyck_languages by @Lostmanu in #1773
- fix(ifbench): guard StopWordPercentageChecker against word-less responses by @feizhuzheng in #1761
- fix(hallusion_bench): align fAcc/qAcc grouping with official evaluation by @feizhuzheng in #1769
- fix(multi-choice): accept spaces between labels in Chinese multi-select answers by @RizgarOzan in #1789
- fix(perf): keep a rerank request successful when the top score is not a number by @Linxiushen in #1760
- fix(perf): tolerate non-JSON SSE terminators; route per-turn max_tokens per protocol by @Yunnglin in #1791
- fix(perf): include response body time in embedding and rerank latency by @git-jxj in #1763
- fix(tools): preserve literal values in JSON schemas by @git-jxj in #1765
- fix(models): preserve Anthropic image URL sources by @git-jxj in #1764
- fix(web): localize version badge tooltip by @git-jxj in #1796
- fix(perf): support explicit units in SLA thresholds by @David-Wu1119 in #1793
- test(perf): assert p99 siblings of unmeasured optional metrics are pruned by @RizgarOzan in #1797
- fix(perf): leave NaN samples out of percentile columns by @David-Wu1119 in #1798
- docs: fix API key lookup in function calling examples by @git-jxj in #1801
- docs: fix benchmark examples for Python 3.10 by @git-jxj in #1802
- docs: fix moved links in full-stack, RAG and OpenCompass guides by @pratikgx in #1799
- docs: fix performance result analysis examples by @git-jxj in #1803
- fix(halueval): read Yes/No verdicts as whole words, not substrings by @Zhuoxi2000 in #1800
- fix(perf): stop treating rerank search units as tokens by @git-jxj in #1811
- fix(perf): fail the SLA success gate on any failed request by @David-Wu1119 in #1810
- fix(perf): keep runs with failed requests out of SLA optimization by @David-Wu1119 in #1812
- fix(ocr_bench_v2): write text spotting files as UTF-8 by @RizgarOzan in #1804
- fix(dataset): default missing sample metadata to an empty dict by @March-7 in #1806
- chore(perf): enforce F401 and remove unused imports by @loyce-cheng in #1805
- docs: require benchmark registry index regeneration by @git-jxj in #1807
- fix(models): retry interrupted Responses API streams by @git-jxj in #1808
- fix(perf): count Responses protocol failures as failed requests by @git-jxj in #1809
- fix(benchmarks): read Yes/No verdicts as whole words in pope, hallusion_bench, drivel_binary by @Yunnglin in #1816
- fix(perf): leave one-token replies out of TPOT by @David-Wu1119 in #1814
- fix(perf): keep millisecond resolution in latency percentiles by @David-Wu1119 in #1815
- fix(perf): count streamed tool calls as output for TTFT by @David-Wu1119 in #1813
- fix(perf): harden SLA auto-tuning while preserving summary format by @Yunnglin in #1818
- fix(perf): count reasoning text in the tokenizer fallback by @David-Wu1119 in #1819
- fix(perf): count empty-delta chunks in the speculative decoding estimate by @David-Wu1119 in #1820
- fix(report): flag BFCL-v3, ACEBench and OCRBench-v2 summary rows as aggregates by @David-Wu1119 in #1824
- fix(collection): average macro_avg. over (dataset, subset) members by @David-Wu1119 in #1823
- fix(ocr_bench_v2): average EN, CN and OVERALL over categories, not samples by @David-Wu1119 in #1825
- fix(dataset): reuse the default ModelScope cache for Native loading by @sfeng1996 in #1795
- feat: support System One Choice models and decision benchmarks by @Yunnglin in #1829
- fix(perf): measure Responses ITL between output deltas by @git-jxj in #1826
- fix(messages): absolutise local audio and video paths in markdown output by @D41910 in #1833
- fix(pubmedqa): include unrecognized answers in recall and F1 denominators by @mavericksea-ai in #1828
- fix(multi-choice): accept a full-width comma between unbracketed answer labels by @D41910 in #1832
- fix(perf): preserve cached usage in incomplete Responses streams by @heranliu in #1831
- feat: add Terminal-Bench 4.0 support by @Yunnglin in #1835
- fix(ner): preserve entity occurrences and BIO boundaries by @git-jxj in #1834
- fix(models): preserve Anthropic thinking in streams and history by @git-jxj in #1840
- fix(live_code_bench): compare sandbox stdio output like the local grader by @David-Wu1119 in #1843
- fix(ceval): parse the answer line with the shared Chinese parser by @David-Wu1119 in #1842
- fix(mmlu_redux): read space-separated multiple-answer annotations by @David-Wu1119 in #1844
- perf: add conversation IDs and replicas, optimize latency metrics for multi-turn benchmark by @syuoni in #1845
- fix(metrics): ignore failed extractions in vote@k majority vote by @li872 in #1839
- fix(terminal_bench): skip max_turns for Codex agent (Harbor 0.24.0 compatibility) by @zzx04-cool in #1846
- Add a Parallel Search MCP example for DeepSearchQA by @georgeatparallel in #1841
- fix(ai2d): use per-question images per official abcLabel semantics (v1.1) by @Yunnglin in #1848
New Contributors
- @feizhuzheng made their first contribution in #1751
- @Linxiushen made their first contribution in #1758
- @jiangLLM made their first contribution in #1771
- @1fanwang made their first contribution in #1777
- @pratikgx made their first contribution in #1782
- @Lostmanu made their first contribution in #1773
- @RizgarOzan made their first contribution in #1789
- @David-Wu1119 made their first contribution in #1793
- @Zhuoxi2000 made their first contribution in #1800
- @March-7 made their first contribution in #1806
- @loyce-cheng made their first contribution in #1805
- @sfeng1996 made their first contribution in #1795
- @D41910 made their first contribution in #1833
- @mavericksea-ai made their first contribution in #1828
- @heranliu made their first contribution in #1831
- @syuoni made their first contribution in #1845
- @li872 made their first contribution in #1839
- @zzx04-cool made their first contribution in #1846
- @georgeatparallel made their first contribution in #1841
Full Changelog: v1.12.0...v1.13.0