CS6493: Natural Language Processing - Group Project
Topic: Mathematical Reasoning Ability of Large Language Models
评估大语言模型(Qwen2.5-Math-1.5B 和 DeepSeek-R1-Qwen-1.5B)在数学推理任务上的表现,系统对比三种提示工程方法的效果。
| 模型 | 数据集 | 方法 |
|---|---|---|
| Qwen2.5-Math-1.5B | GSM8K, MATH-500, AIME-2024 | CoT, Self-Refine, Self-Consistency |
| DeepSeek-R1-Qwen-1.5B | GSM8K, MATH-500, AIME-2024 | CoT, Self-Refine, Self-Consistency |
说明:命令行中的模型键使用
deepseek-r1-qwen-1.5b,其对应的 Hugging Face 模型为deepseek-ai/DeepSeek-R1-Qwen-1.5B。
- Accuracy: 准确率(模型答案与标准答案匹配率)
- Response Length: 平均响应长度(用于分析推理深度)
- 3月25日: 进度报告
- 4月14日: 课堂展示(15分钟)
- 4月15日: 最终提交(报告+代码+幻灯片)
.
├── data/ # 数据集
│ ├── loader.py # 数据加载器(统一入口)
│ ├── MATH-500/
│ │ └── test.json # 500道测试题
│ ├── GSM8K/
│ │ └── test.json # ~1319道测试题(需运行脚本下载)
│ └── AIME-2024/
│ └── aime2024.json # 30道竞赛题
├── models/ # 模型加载
│ └── loader.py # Qwen/DeepSeek 加载器
├── prompts/ # 提示工程实现
│ ├── cot.py # Chain of Thought
│ ├── self_refine.py # Self-Refine 迭代改进
│ └── self_consistency.py # Self-Consistency 多数投票
├── evaluation/ # 评估
│ └── metrics.py # 准确率 / 答案提取 / 规范化
├── experiments/ # 实验运行
│ └── runner.py # 单实验运行器(支持 --limit 测试)
├── scripts/ # 工具脚本
│ └── download_data.py # 数据集下载脚本
├── results/ # 实验结果(自动生成)
├── app.py # Streamlit 可视化界面
├── run_batch.py # 批量实验脚本 ⭐
├── requirements.txt # Python 依赖
└── README.md
# 推荐使用 conda 或 venv 创建独立环境
conda create -n nlp_math python=3.10
conda activate nlp_math
# 安装依赖
pip install -r requirements.txt# 下载 GSM8K 和 MATH-500(如已手动放置可跳过)
python scripts/download_data.py当前实现中,
scripts/download_data.py会从公开切分HuggingFaceH4/MATH-500的testsplit 下载并写入data/MATH-500/test.json。
AIME-2024 使用公开数据集
HuggingFaceH4/aime_2024(trainsplit,30题),并由scripts/download_data.py自动写入data/AIME-2024/aime2024.json。
模型权重会缓存到 Hugging Face 默认目录。如需指定目录:
# Windows
set HF_HOME=E:\huggingface_cache
# Linux / Mac
export HF_HOME=~/huggingface_cache首次运行时会自动从 Hugging Face Hub 下载模型(需要网络连接)。
# 运行所有18组实验(约5-6小时,串行)
python run_batch.py --all
# 只运行 Qwen 的9组实验
python run_batch.py --model qwen2.5-math-1.5b
# 只运行 MATH-500 的6组实验
python run_batch.py --dataset math500
# 只运行单个实验
python run_batch.py --id 4# 格式: python experiments/runner.py --model <模型> --dataset <数据集> --method <方法>
# 示例: Qwen + MATH-500 + CoT
python experiments/runner.py --model qwen2.5-math-1.5b --dataset math500 --method cot --seed 42
# 示例: DeepSeek + GSM8K + Self-Consistency
python experiments/runner.py --model deepseek-r1-qwen-1.5b --dataset gsm8k --method self_consistency --seed 42# 用前5条数据快速验证流程,不生成正式结果文件
python experiments/runner.py --model qwen2.5-math-1.5b --dataset math500 --method cot --limit 5 --seed 42# 启动可视化界面
python -m streamlit run app.py浏览器打开 http://localhost:8501,支持:单题测试 / 查看已有结果 / 多实验对比。
| ID | 模型 | 数据集 | 方法 | 预计时间 | 状态 |
|---|---|---|---|---|---|
| 1 | Qwen2.5-Math-1.5B | GSM8K | CoT | ~40min | ⏳ |
| 2 | Qwen2.5-Math-1.5B | GSM8K | Self-Refine | ~80min | ⏳ |
| 3 | Qwen2.5-Math-1.5B | GSM8K | Self-Consistency | ~200min | ⏳ |
| 4 | Qwen2.5-Math-1.5B | MATH-500 | CoT | ~15min | ⏳ |
| 5 | Qwen2.5-Math-1.5B | MATH-500 | Self-Refine | ~30min | ⏳ |
| 6 | Qwen2.5-Math-1.5B | MATH-500 | Self-Consistency | ~75min | ⏳ |
| 7 | Qwen2.5-Math-1.5B | AIME-2024 | CoT | ~1min | ⏳ |
| 8 | Qwen2.5-Math-1.5B | AIME-2024 | Self-Refine | ~2min | ⏳ |
| 9 | Qwen2.5-Math-1.5B | AIME-2024 | Self-Consistency | ~5min | ⏳ |
| 10 | DeepSeek-R1-Qwen-1.5B | GSM8K | CoT | ~40min | ⏳ |
| 11 | DeepSeek-R1-Qwen-1.5B | GSM8K | Self-Refine | ~80min | ⏳ |
| 12 | DeepSeek-R1-Qwen-1.5B | GSM8K | Self-Consistency | ~200min | ⏳ |
| 13 | DeepSeek-R1-Qwen-1.5B | MATH-500 | CoT | ~15min | ⏳ |
| 14 | DeepSeek-R1-Qwen-1.5B | MATH-500 | Self-Refine | ~30min | ⏳ |
| 15 | DeepSeek-R1-Qwen-1.5B | MATH-500 | Self-Consistency | ~75min | ⏳ |
| 16 | DeepSeek-R1-Qwen-1.5B | AIME-2024 | CoT | ~1min | ⏳ |
| 17 | DeepSeek-R1-Qwen-1.5B | AIME-2024 | Self-Refine | ~2min | ⏳ |
| 18 | DeepSeek-R1-Qwen-1.5B | AIME-2024 | Self-Consistency | ~5min | ⏳ |
总计: ~5.5小时(串行)。建议晚上挂机运行,或两台机器分别跑 Qwen / DeepSeek。
实验中断后重新运行,已完成的结果会自动跳过(无需担心重复运行)。
- 成员A: 负责 Qwen 的9组实验(ID 1-9)
- 成员B: 负责 DeepSeek 的9组实验(ID 10-18)
- 成员A: GSM8K 的6组(ID 1-3, 10-12)
- 成员B: MATH-500 的6组(ID 4-6, 13-15)
- 成员C: AIME-2024 的6组(ID 7-9, 16-18)+ 报告撰写
- 成员A: 运行所有实验
- 成员B: 数据分析与可视化
- 成员C: 报告 + 幻灯片
确保网络可以访问 Hugging Face Hub。设置镜像站点(可选):
# 使用 HF Mirror(国内加速)
set HF_ENDPOINT=https://hf-mirror.com两个模型不要同时加载,实验脚本每次只加载一个模型。如仍 OOM,减少 max_new_tokens 参数。
直接重新运行。脚本默认会跳过已有结果文件(--skip-existing),不会重复运行。
python experiments/runner.py --model qwen2.5-math-1.5b --dataset math500 --method cot --no-skip需要先运行数据下载脚本:
python scripts/download_data.py编辑 models/loader.py 中的 generate_response 函数,调整 temperature、top_p、max_new_tokens 等参数。
见 report/progress_report.md
建议结构:Introduction / Related Work / Methodology / Preliminary Results / Challenges / Next Steps
- Wei J et al. Chain-of-thought prompting elicits reasoning in large language models. NeurIPS, 2022.
- Madaan A et al. Self-refine: Iterative refinement with self-feedback. NeurIPS, 2024.
- Wang X et al. Self-consistency improves chain of thought reasoning in language models. arXiv:2203.11171, 2022.
最后更新: 2026-03-25