這是論文《AlphaMath 幾乎為零:無流程的流程監督》的官方儲存庫。該程式碼是從我們內部公司程式碼庫中提取的。因此,在複製我們論文中報告的數字時可能會存在輕微差異,但它們應該非常接近。我們的方法涉及僅使用從蒙特卡羅樹搜尋 (MCTS) 框架導出的數學推理來訓練策略和價值模型,從而消除了對 GPT-4 或人工註釋的需要。這是 MCTS 在第 3 輪中產生的訓練實例的圖示。
檢查點:AlphaMath-7B 第 3 輪? / AlphaMath-7B 第三輪?
資料集:AlphaMath-Round3-Trainset?訓練資料的求解過程是根據第2輪中的MCTS和檢查點自動產生的。
訓練代碼:由於政策原因,我們只能發布一些關鍵功能的實作細節,基本上應該在你自己的訓練程式碼中進行修改。
推理法 | 準確性 | 平均。每 q 的時間(秒) | 平均。步驟 | # 溶膠 |
---|---|---|---|---|
貪婪的 | 53.62 | 1.6 | 3.1 | 1 |
少校@5 | 61.84 | 2.9 | 2.9 | 5 |
階梯級梁 (1,5) | 62.32 | 3.1 | 3.0 | 前1名 |
5 次運行 + 少校@5 | 67.04 | x5 | x1 | 5 前 1 |
階梯級梁 (2,5) | 64.66 | 2.4 | 2.4 | 前1名 |
階梯梁 (3,5) | 65.74 | 2.3 | 2.2 | 前1名 |
階梯梁 (5,5) | 65.98 | 4.7 | 2.3 | 前1名 |
1 次運行 + 少校@5 | 66.54 | x1 | x1 | 前 5 名 |
5 次運行 + 少校@5 | 69.94 | x5 | x1 | 5 前 1 |
MCTS(N = 40) | 64.02 | 10.1 | 3.8 | 前1名 |
+ Maj@5
需要跑 5 次,鼓勵了多樣性。+ Maj@5
直接用5個候選,缺乏多元性。溫度 | 0.6 | 1.0 |
---|---|---|
階梯級梁 (1,5) | 62.32 | 62.76 |
階梯級梁 (2,5) | 64.66 | 65.60 |
階梯梁 (3,5) | 65.74 | 66.28 |
階梯梁 (5,5) | 65.98 | 66.38 |
對於步進級波束搜索,設定temperature=1.0
可能會獲得稍微更好的結果。
requirements.txt
pip install -r requirements.txt
或簡單地按照cmds操作
> git clone https://github.com/MARIO-Math-Reasoning/Super_MARIO.git
> git clone https://github.com/MARIO-Math-Reasoning/MARIO_EVAL.git
> git clone https://github.com/MARIO-Math-Reasoning/vllm.git
> cd Super_MARIO && pip install -r requirements.txt && cd ..
> cd MARIO_EVAL/latex2sympy && pip install . && cd ..
> pip install -e .
> cd ../vllm
> pip install -e .
scripts/save_value_head.py
將值頭新增至LLM。 您可以執行以下兩個命令之一。兩者之間的準確度可能略有不同。在我們的機器中,第一個獲得了 53.4%,第二個獲得了 53.62%。
python react_batch_demo.py
--custom_cfg configs/react_sft.yaml
--qaf ../MARIO_EVAL/data/math_testset_annotation.json
或者
# use step_beam (1, 1) without value func
python solver_demo.py
--custom_cfg configs/sbs_greedy.yaml
--qaf ../MARIO_EVAL/data/math_testset_annotation.json
在我們的機器上,在 MATH 測試集上,以下配置B1=1, B2=5
的 cmd 可以達到 ~62%,配置B1=3, B2=5
的 cmd 可以達到 ~65%。
python solver_demo.py
--custom_cfg configs/sbs_sft.yaml
--qaf ../MARIO_EVAL/data/math_testset_annotation.json
計算準確度
python eval_output_jsonl.py
--res_file
ground_truth
(最終答案,不是求解過程)必須在qaf
json 或 jsonl 檔案中提供(範例格式可以參考../MARIO_EVAL/data/math_testset_annotation.json
)。
第一輪
# Checkpoint Initialization is required by adding value head
python solver_demo.py
--custom_cfg configs/mcts_round1.yaml
--qaf /path/to/training/data
回合 > 1,SFT 後
python solver_demo.py
--custom_cfg configs/mcts_sft_round.yaml
--qaf /path/to/training/data
只有question
將用於產生解決方案,但ground_truth
將用於計算準確性。
python solver_demo.py
--custom_cfg configs/mcts_sft.yaml
--qaf ../MARIO_EVAL/data/math_testset_annotation.json
與步級波束搜尋不同,你需要先建立一棵完整的樹,然後你應該離線運行MCTS,然後計算準確性。
python offline_inference.py
--custom_cfg configs/offline_inference.yaml
--tree_jsonl
注意:此評估腳本也可以透過步驟級波束搜尋使用已儲存的樹運行,並且精度應保持相同。
因為訓練資料的基本事實是已知的,所以最後一步的值是獎勵,並且 Q 值可以很好地收斂。
在測試集上,真實情況未知,因此 Q 值分佈包括中間步驟和最終步驟。從這張圖我們可以發現
MCTS 的 SVPO
@misc{chen2024steplevelvaluepreferenceoptimization,
title={Step-level Value Preference Optimization for Mathematical Reasoning},
author={Guoxin Chen and Minpeng Liao and Chengxi Li and Kai Fan},
year={2024},
eprint={2406.10858},
archivePrefix={arXiv},
primaryClass={cs.CL},
url={https://arxiv.org/abs/2406.10858},
}
MCTS版本
@misc{chen2024alphamathzeroprocesssupervision,
title={AlphaMath Almost Zero: process Supervision without process},
author={Guoxin Chen and Minpeng Liao and Chengxi Li and Kai Fan},
year={2024},
eprint={2405.03553},
archivePrefix={arXiv},
primaryClass={cs.CL},
url={https://arxiv.org/abs/2405.03553},
}
評估工具包
@misc{zhang2024marioevalevaluatemath,
title={MARIO Eval: Evaluate Your Math LLM with your Math LLM--A mathematical dataset evaluation toolkit},
author={Boning Zhang and Chengxi Li and Kai Fan},
year={2024},
eprint={2404.13925},
archivePrefix={arXiv},
primaryClass={cs.CL},
url={https://arxiv.org/abs/2404.13925},
}
OVM(結果價值模型)版本
@misc{liao2024mariomathreasoningcode,
title={MARIO: MAth Reasoning with code Interpreter Output -- A Reproducible Pipeline},
author={Minpeng Liao and Wei Luo and Chengxi Li and Jing Wu and Kai Fan},
year={2024},
eprint={2401.08190},
archivePrefix={arXiv},
primaryClass={cs.CL},
url={https://arxiv.org/abs/2401.08190},
}