# 实验设计方案 > 验证"图论方法可以让 32B 模型实现极大的智能提升" --- ## 实验总览 本实验分为 5 个阶段,按先易后难的顺序推进: ``` Phase 1: 基线建立 (~2天) ↓ Phase 2: AGoT 测试时推理增强 (~3天) ← 首选启动项 ↓ Phase 3: 图感知 SFT 训练 (~3天) ↓ Phase 4: 消融实验与机制分析 (~2天) ↓ Phase 5: 跨任务泛化测试 (~1天) ``` --- ## Phase 1: 基线建立 ### 目的 建立 32B 模型在多种推理任务上的性能基线,同时提取内部推理图特征。 ### 模型选择 | 模型 | 参数量 | 用途 | |------|--------|------| | Qwen2.5-32B-Instruct | 32B | 基础对照模型 | | DeepSeek-R1-Distill-Qwen-32B | 32B | 强推理参照模型 | | Qwen2.5-7B-Instruct | 7B | 规模对照(可选) | ### 推理任务 | 任务 | 数据集 | 指标 | 难度 | |------|--------|------|------| | 数学应用题 | GSM8K (8000 samples) | Accuracy | 低 | | 竞赛数学 | MATH500 | Accuracy | 中 | | 高难度数学 | AIME 2024 (30 questions) | Accuracy | 高 | | 多跳问答 | HotpotQA (distractor, 1000) | EM / F1 | 中 | | 科学推理 | GPQA Diamond (198 questions) | Accuracy | 高 | ### 基线方法 | 方法 | 描述 | 预期成本 | |------|------|---------| | IO (Input-Output) | 直接输出答案 | 低 (1次调用/问题) | | CoT (Chain-of-Thought) | 标准思维链提示 | 低 (1次调用/问题) | | CoT-SC (Self-Consistency) | 5条链投票 | 中 (5次调用/问题) | | ToT (Tree-of-Thought) | 束搜索 b=3, 深度3 | 高 (~30次调用/问题) | ### 推理图属性提取 使用 Topology of Reasoning 论文方法: 1. 在模型推理过程中,从最后一个隐藏层提取隐藏状态 2. 使用 K-means (k=200) 聚类得到节点 3. 按推理步骤的顺序连接节点形成推理图 4. 计算图属性: - **循环检测率**: 含至少一个环的样本比例 - **循环数**: 每样本的最大循环次数 - **图直径**: 任意两点间最短路径的最大值 - **小世界指数**: S = (C/C_rand) / (L/L_rand) ### 硬件需求 - GPU: 1× RTX 4090 (24GB) 或 A100 (80GB) - 推理框架: vLLM (推荐) 或 llama.cpp (INT4量化) - 内存: 32GB+ - 存储: 100GB+ ### 运行命令示例 ```bash # 使用 vLLM 加载 32B 模型 python -m vllm.entrypoints.openai.api_server \ --model Qwen/Qwen2.5-32B-Instruct \ --tensor-parallel-size 1 \ --max-model-len 4096 # 运行 GSM8K 评估 lm_eval --model local-completions \ --tasks gsm8k \ --model_args model=Qwen/Qwen2.5-32B-Instruct \ --num_fewshot 8 ``` --- ## Phase 2: AGoT 测试时推理增强 ### 目的 在不修改模型参数的情况下,通过 AGoT 图结构推理框架提升 32B 模型的推理能力。 ### 实现方案 **AGoT 算法实现**(参照 Pandey et al., 2025) ``` Algorithm: AGoT(q, h, G_h^p) Input: Query q, position index h, parent graph G_h^p 1. V_h ← ∅, E_h ← ∅, F_h ← ∅ 2. G_h ← (V_h, E_h, F_h) // 初始化嵌套图 3. d ← |h| // 当前深度 4. for l = 0, 1, ..., l_max-1 do // 逐层循环 5. if l = 0 and d = 0 then 6. thoughts ← T_∅(q) // 生成初始想法 7. else if l = 0 then 8. thoughts ← T_0(q, G_h) // 为嵌套图生成初始想法 9. else 10. thoughts, edges ← T_e(q, G_h) // 生成想法+边+策略 11. if thought is final then 12. return Eval(thought, G_h) // 提前终止 13. for thought in thoughts do 14. if is_complex(thought) and d < d_max then 15. AGoT(thought, h', G_h) // 递归调用 16. else 17. Eval(thought, G_h) // 直接评估 18. return final_answer ``` ### LLM Agent 接口设计 AGoT 需要定义 6 类 LLM Agent: | Agent | 功能 | Prompt 设计要点 | |-------|------|---------------| | T_∅ | 从空图生成初始想法 | 分解问题的第一层子问题 | | T_0 | 从父图生成子图初始想法 | 在父问题的上下文下生成 | | T_e | 在已有图上生成新想法+边 | 评估已有节点,决定扩展方向 | | C | 复杂度分类器 | 判断当前节点是否需要递归分解 | | Eval | 节点/最终答案评估 | 评估节点对回答问题的贡献 | | Φ | 从图合成最终答案 | 聚合所有有效节点的信息 | ### 关键参数 ```python AGOT_CONFIG = { "model": "Qwen/Qwen2.5-32B-Instruct", "max_depth": 2, # d_max: 递归最大深度 "max_layers": 3, # l_max: 每层最大层数 "max_nodes_per_layer": 3, # n_max: 每层最大节点数 "temperature": 0.3, "self_terminate": True, # 自终止机制 } ``` ### 评估协议 ``` 实验组1: IO (直接输出) → 对照基线 实验组2: CoT (思维链) → 链式对照 实验组3: ToT (思维树, b=3) → 树状对照 实验组4: AGoT (自适应图推理) → 主要实验组 ``` 比较维度: - 准确率 - Token 消耗量 (成本) - 推理步数 - 推理图属性(循环率、直径、小世界指数) ### 预期提升 | 任务 | 预期 vs IO | 预期 vs CoT | |------|-----------|-------------| | GSM8K | +5%~15% | +3%~10% | | MATH500 | +10%~25% | +5%~15% | | AIME 2024 | +20%~46% | +15%~30% | | GPQA Diamond | +20%~46% | +10%~25% | | Game of 24 | +100%~400% | +50%~150% | --- ## Phase 3: 图感知 SFT 训练 ### 目的 主动训练 32B 模型具备图结构推理能力,而非仅靠测试时提示。 ### 数据构造策略 #### 策略 A: 优质推理图扩展 (参考 Topology 论文) 使用 s1-v1.1 数据集(已验证能扩展推理图直径)。 从 s1 数据集中筛选能产生大直径推理图的样本。 #### 策略 B: 多路径推理轨迹 ```python 数据格式: { "question": "问题文本", "graph_trajectory": { "nodes": [ {"id": 0, "content": "初始分析...", "type": "analysis"}, {"id": 1, "content": "子问题:...", "type": "decomposition"}, {"id": 2, "content": "计算步骤...", "type": "computation"}, {"id": 3, "content": "Wait, 让我重新检查...", "type": "verification"}, {"id": 4, "content": "子结果聚合...", "type": "aggregation"}, {"id": 5, "content": "最终答案", "type": "answer"} ], "edges": [[0,1], [0,2], [1,3], [2,3], [3,4], [4,5]], "answer": "最终答案" } } ``` 构造方法: 1. 使用 GPT-4o / DeepSeek-R1 生成多路径推理轨迹 2. 在轨迹中插入交叉验证点 ("Wait, let me check...") 3. 添加显式的子结论聚合步骤 4. 确保图中的循环结构自然出现(不是人为强行添加) #### 策略 C: 从 GoT/AGoT 输出蒸馏 1. 用 AGoT 在验证集上生成推理轨迹 2. 只保留 AGoT 回答正确的高质量轨迹 3. 将这些图结构轨迹转化为线性文本用于 SFT ### 训练配置 ```bash # LoRA 微调 accelerate launch \ --num_processes 1 \ train_lora.py \ --model_name Qwen/Qwen2.5-32B-Instruct \ --dataset_path ./data/graph_sft_data.json \ --output_dir ./output/graph_sft_32b \ --lora_r 64 \ --lora_alpha 128 \ --lora_dropout 0.05 \ --learning_rate 2e-4 \ --num_train_epochs 3 \ --per_device_train_batch_size 4 \ --gradient_accumulation_steps 4 \ --logging_steps 10 \ --save_steps 500 \ --eval_steps 500 ``` ### 评估方案 | 评估点 | 评估内容 | 预期 | |--------|---------|------| | Step 0 (基线) | GSM8K + MATH500 准确率 + 推理图属性 | 标准基线 | | Step 500 | 同上 | 开始提升 | | Step 1000 | 同上 | 显著提升 | | Step 1500 | 同上 | 饱和? | | Step 2000 | 全套评估(含 AIME) | 最终结果 | ### 推理图属性变化预期 ``` 微调前 → 微调后: 循环检测率: ~18% → ~50%+ 图直径: ~500 → ~2000+ 小世界指数: ~0.05 → ~0.20+ 准确率: ~73% → ~80%+ (GSM8K) 参考:Topology 论文 s1-v1.1 微调后直径从 ~500 扩展到 ~2500 ``` --- ## Phase 4: 消融实验与机制分析 ### 消融实验 | 实验 | 操作 | 目的 | 预期结果 | |------|------|------|---------| | **消融1: 去除循环** | 强制截断回环推理(设置 max_loops=0) | 循环是否必要 | 准确率下降 >10% | | **消融2: 限制直径** | 限制推理步数上限(max_steps=10/20/50) | 宽广探索是否必要 | 欠限时准确率下降 | | **消融3: 图 vs 树** | AGoT vs ToT 相同节点预算(同 token 数) | 图是否优于树 | AGoT 优于 ToT | | **消融4: 聚合操作** | 禁用聚合变换 | 聚合是否关键 | 准确性下降 | | **消融5: 自终止** | 禁用自终止,强制固定深度 | 自适应是否必要 | 成本增加但准确率不变或略升 | ### 规模对比 | 模型 | 参数量 | 图属性期望 | 准确率期望 | |------|--------|-----------|-----------| | Qwen2.5-1.5B | 1.5B | 低循环、小直径 | 低 | | Qwen2.5-7B | 7B | 中循环、中直径 | 中 | | Qwen2.5-14B | 14B | 高循环(峰值)、大直径 | 中高 | | Qwen2.5-32B | 32B | 高循环、最大直径 | **最高** | ### 量化影响测试 | 量化方案 | 显存占用 | 推理速度 | 预期准确率变化 | |---------|---------|---------|-------------| | FP16 (全精度) | ~64GB | 1x | 基线 | | INT8 | ~34GB | ~1.1x | <1% 下降 | | INT4 (GPTQ/AWQ) | ~18GB | ~1.3x | 1%-3% 下降 | | INT4 (llama.cpp) | ~18GB | ~1.5x | 1%-3% 下降 | --- ## Phase 5: 跨任务泛化测试 ### 测试任务矩阵 | 类别 | 任务 | AGoT 预期提升 | SFT 预期提升 | |------|------|--------------|-------------| | **数学推理** | GSM8K | +5%~15% | +5%~10% | | | MATH500 | +10%~25% | +5%~15% | | | AIME 2024 | +20%~46% | +10%~20% | | **多跳问答** | HotpotQA | +10%~15% | +3%~10% | | | 2WikiMultihop | +10%~20% | +5%~10% | | **科学推理** | GPQA Diamond | +20%~46% | +10%~20% | | | MMLU-Pro | +5%~15% | +3%~8% | | **规划** | Game of 24 | +50%~400% | +20%~100% | | | Blocksworld | +50%~200% | +20%~50% | | **代码** | HumanEval | +3%~10% | +2%~5% | | | MBPP | +3%~8% | +2%~5% | ### 去偏测试 - **提示敏感性测试**: 同一问题用 5 种不同措辞重复测试 - **答案格式测试**: 验证无论答案格式如何,推理质量一致 - **领域迁移测试**: 训练集使用数学数据,测试在规划任务上的零样本迁移 --- ## 实验脚本结构 ``` s-LLM-project/ ├── README.md ├── docs/ │ ├── feasibility_report.md # 可行性报告 │ └── experiment_design.md # 实验设计(本文件) ├── papers/ # 下载论文 ├── src/ │ ├── baseline/ │ │ ├── run_gsm8k.sh │ │ ├── run_math500.sh │ │ ├── run_aime.py │ │ └── run_hotpotqa.sh │ ├── agot/ │ │ ├── agot.py # AGoT 核心算法 │ │ ├── agents.py # 6 类 LLM Agent 定义 │ │ ├── graph_utils.py # 图操作工具 │ │ └── prompts/ # Prompt 模板 │ ├── graph_analysis/ │ │ ├── reasoning_graph.py # 推理图提取 │ │ ├── graph_properties.py # 图属性计算 │ │ └── visualize.py # 可视化 │ └── sft/ │ ├── prepare_data.py # 图感知数据构造 │ └── train_lora.py # LoRA 微调 ├── data/ │ ├── graph_sft_data.json # SFT 训练数据 │ └── results/ # 实验结果保存 └── requirements.txt ``` --- ## 运行优先级 如果在 GPU 服务器上从零开始: 1. **立即运行**: `src/baseline/*` — 基线评估,产出立刻可用 2. **核心开发**: `src/agot/agot.py` — AGoT 算法,最关键的实验 3. **机制理解**: `src/graph_analysis/*` — 推理图可视化与属性分析 4. **深度优化**: `src/sft/*` — 图感知 SFT 训练 --- ## 参考文献 - Besta et al. (AAAI 2024). *Graph of Thoughts: Solving Elaborate Problems with Large Language Models* - https://arxiv.org/abs/2308.09687 | GitHub: https://github.com/spcl/graph-of-thoughts - Pandey et al. (2025). *Adaptive Graph of Thoughts: Test-Time Adaptive Reasoning* - https://arxiv.org/abs/2502.05078 - Minegishi et al. (NeurIPS 2025). *Topology of Reasoning* - https://arxiv.org/abs/2506.05744 | GitHub: https://github.com/gouki510/Topology_of_Reasoning - Bai et al. (ACL 2025). *Self-attention-based Graph-of-Thought for Math Problem Solving* - https://aclanthology.org/2025.findings-acl.317/ - Yao et al. (NAACL 2024). *GoT: Effective Graph-of-Thought Reasoning in Language Models* - https://aclanthology.org/2024.findings-naacl.183/