更新2025年11月21日,似乎可以使用 AISBecnch
ais_bench --models vLLM_api_general_chat --datasets aime2024_gen_0_shot_chat_prompt --summarizer example

最近师兄让评测下 Qwen3-8B 在 AIME 2024 上的性能,我感觉直接让大模型写代码可能会有问题,于是想找一些现成的框架,于是乎找到了 https://github.com/QwenLM/Qwen2.5-Math。

虽然这个评测仓库是 Qwen2.5-Math 官方提供的,但其核心代码(适配自 math-evaluation-harness)实际上非常通用。它内置了 Mistral、DeepSeek-Math、InternLM 等多种模版,非常适合作为一个通用的数学能力测试基座。

这篇笔记记录了如何利用该框架测试各种不同的开源模型,包括环境适配、模型下载加速以及定向测试技巧。

1. 环境搭建与依赖升级

原仓库的 requirements.txt 锁定了较旧的版本(如 vllm==0.5.1),如果我们要测试最新的开源模型(如 Llama-3, DeepSeek-V2/V3 等),强烈建议升级核心推理库

安装步骤

  1. 基础依赖与公式解析器
    首先安装处理 LaTeX 公式的必备组件:

    cd latex2sympy
    pip install -e .
    cd ..
    pip install -r requirements.txt
    
  2. 关键组件升级 (重点)
    为了支持更多新架构的模型,比如 Qwen3,不要使用锁定的旧版本,而是安装最新版:

    # 卸载旧版本(如果有)并安装最新版
    pip install --upgrade vllm transformers
    

2. 模型下载:使用 ModelScope 加速

直接在评测脚本中写 Hugging Face 的模型 ID 可能会因为网络原因导致下载缓慢或中断。推荐先使用 ModelScope(魔塔社区)下载模型到本地,这样不仅速度快,还能看到清晰的下载进度条。

2.1 下载模型

首先安装 modelscope:

pip install modelscope

使用脚本下载:

modelscope download --model Qwen/Qwen3-8B --local_dir ./Qwen3-8B

记下 model_dir 路径,后续评测将直接使用这个绝对路径。

3. 配置通用评测脚本

我们将使用本地路径来运行评测。脚本的核心是 math_eval.py,它支持通过 --prompt_type 适配不同模型。

3.1 确定 Prompt Type

evaluation/utils.py 中,你可以看到框架预定义了多种 Prompt 模板:

  • 通用 CoT: cot (Question + Answer)
  • Qwen 系列: qwen25-math-cot, qwen-boxed
  • DeepSeek 系列: deepseek-math
  • Mistral 系列: mistral
  • InternLM 系列: internlm-math-chat
  • 工具调用: tool-integrated (代码解释器模式)

3.2 编写启动命令

建议直接编写一个通用的 Shell 脚本(例如 run_eval.sh),通过传入本地路径启动:

#!/bin/bash
set -ex

# 1. 设置你的本地模型路径 (从 ModelScope 下载的路径)
MODEL_PATH="/root/.cache/modelscope/hub/Qwen/Qwen2.5-Math-7B-Instruct"

# 2. 设置适合该模型的 Prompt 模板
# Qwen 用 qwen25-math-cot,其他模型可以用 cot 或对应模板
PROMPT_TYPE="qwen25-math-cot" 

# 3. 输出目录
OUTPUT_DIR="outputs/my_model_eval"

# 4. 运行评测
# 注意:--max_tokens_per_call 建议设为 4096 以防止长推理被截断
python3 -u math_eval.py \
    --model_name_or_path "${MODEL_PATH}" \
    --output_dir "${OUTPUT_DIR}" \
    --prompt_type "${PROMPT_TYPE}" \
    --split "test" \
    --seed 0 \
    --temperature 0 \
    --n_sampling 1 \
    --top_p 1 \
    --start 0 \
    --end -1 \
    --use_vllm \
    --save_outputs \
    --overwrite \
    --max_tokens_per_call 32768 \
    --data_names "math,gsm8k" # 默认测试这些,后面会讲如何单测

4. 进阶技巧:单测 AIME 2024

很多时候我们只想看模型在竞赛题上的表现,不需要跑完所有数据集。该框架支持 aime24amc23 等竞赛数据集。

只测试 AIME 2024 的方法:

直接在上面的命令中修改 --data_names 参数:

python3 -u math_eval.py \
    --model_name_or_path "${MODEL_PATH}" \
    --data_names "aime24" \
    --output_dir "${OUTPUT_DIR}" \
    --prompt_type "${PROMPT_TYPE}" \
    ... (其他参数保持不变)

5. 避坑指南:max_new_tokens

重点提醒
仓库默认的 max_tokens_per_call 是 2048。
对于现在的强模型(尤其是尝试做复杂的 AIME 题目时),CoT 过程很容易超过这个长度。务必显式传入 --max_tokens_per_call 32768,否则模型通过大量步骤推理出的正确答案可能会在最后一步被截断,导致判分失败。


总结

  1. 升级 vllmtransformers 以适配各种新模型。
  2. 下载 使用 ModelScope 获取模型到本地。
  3. 配置 指定本地路径,选择匹配的 prompt_type
  4. 参数 调大 max_tokens_per_call,利用 data_names 进行定向测试。
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐