深入解读 s1 仓库中 GSM8K 评测任务:从 Chain-of-Thought 到 Self-Consistency 的完整实战指南
大模型推理模型微调模型推理服务【免费下载链接】s1s1: Simple test-time scaling项目地址https://gitcode.com/gh_mirrors/s1/s1点击查看免费下载导读本文以 GSM8K 任务说明文档 为主线系统讲解在 lm-evaluation-harness 中评测 GSM8K 数学应用题的全套方案。GSM8KGrade School Math 8K是用于检验语言模型多步数学推理能力的经典基准本仓库中的gsm8k任务族覆盖了普通生成、Chain-of-Thought思维链、Self-Consistency自洽性投票与 Llama 对齐格式共 4 种评测变体。读完本文你将掌握每个 YAML 任务的关键配置、答案抽取与精确匹配的过滤链路以及如何复现 Meta 官方 Llama-3.1 评测设置。一、GSM8K 是什么任务背景与数据集特点GSM8K 数据集源于论文Training Verifiers to Solve Math Word ProblemsCobbe 等人2021其核心论断是即便最先进的 Transformer 模型在许多任务上可以媲美人类但在多步数学推理上仍不稳健。为此论文发布了 GSM8K——一个包含8.5K 道高质量、语言多样化的初中数学应用题grade school math word problems的评测集用于诊断模型失败模式并支持相关研究。尽管该问题分布概念上很简单但论文发现即使是最大的 Transformer 模型也难以取得高测试成绩。在评测时注意GSM8K 官方实现提供了每个样本的计算器标注calculator annotations若要让你自己的语言模型在采样/生成函数中使用这些标注可参考官方 grade-school-math 仓库的calculator.py示例本仓库在 README 中给出了该提示但目前任务族中尚未内置计算器变体见文末 Wishlist 说明。本仓库的 GS8K 相关任务全部位于 eval/lm-evaluation-harness/lm_eval/tasks/gsm8k/ 目录共 5 个 YAML 配置文件。该目录对应的引用信息见 README 中的 Citation 块即上述论文的 BibTeX 条目。二、任务族总览Groups 与 Tasks 的组织结构在 lm-evaluation-harness 中任务通过 YAML 的tag字段与 Group 关联便于按组批量调度。本任务族涉及的三个 GroupGroup含义关联任务math_word_problems数学文字应用题组gsm8k、gsm8k_cot_zeroshotchain_of_thought思维链评测组gsm8k_cot及其变体self_consistency自洽性投票组gsm8k_cot_self_consistency四个核心 Task 变体Task 名说明gsm8k基础 5-shot 生成式评测使用 Question: ... Answer: 模板gsm8k_cot8-shot Chain-of-Thought 评测fewshot 示例内嵌完整推理步骤gsm8k_cot_self_consistency在 CoT 基础上开启 64 次采样 多数投票Maj64gsm8k_cot_llama提示格式对齐 Meta Llama-3.1 官方评测设置其中gsm8k_cot_llama是 README 中特别强调的变体其提示格式依照 Meta 的 Llama-3.1-8B-Instruct 评测设置调整使用该任务时须配合--fewshot_as_multiturn与--apply_chat_template两个命令行参数才能复现 Meta 官方报告的成绩。三、基础任务gsm8k5-shot 生成评测逐字段拆解gsm8k.yaml 是任务族的基石下面逐字段说明其作用tag: - math_word_problems task: gsm8k dataset_path: gsm8k dataset_name: main output_type: generate_until training_split: train fewshot_split: train test_split: test doc_to_text: Question: {{question}}\nAnswer: doc_to_target: {{answer}} metric_list: - metric: exact_match aggregation: mean higher_is_better: true ignore_case: true ignore_punctuation: false regexes_to_ignore: - , - \\$ - (?s).*#### - \\.$ generation_kwargs: until: - Question: - /s - |im_end| do_sample: false temperature: 0.0 repeats: 1 num_fewshot: 5 filter_list: - name: strict-match filter: - function: regex regex_pattern: #### (\\-?[0-9\\.\\,]) - function: take_first - name: flexible-extract filter: - function: regex group_select: -1 regex_pattern: (-?[$0-9.,]{2,})|(-?[0-9]) - function: take_first metadata: version: 3.0关键设计解读数据与划分dataset_path: gsm8k/dataset_name: main对应 HF 上的gsm8k数据集的main子集fewshot 从train划分采样最终在test划分上评测。提示模板doc_to_text将题目组装成Question: ...\nAnswer:期望模型续写出答案doc_to_target直接取数据集的answer字段数据集内答案形如答案\n#### 6####后为最终数值。生成设置generate_until型任务以until中的字符串Question:、/s、|im_end|作为停止符do_sample: false且temperature: 0.0即贪心解码保证可复现性。双路答案过滤这是 GSM8K 评测的精髓所在。filter_list定义两条独立打分管线filter评测时对每条 filter 分别计算指标strict-match用正则#### (\-?[0-9\.\,])在模型原始输出中寻找####之后的数值这与数据集答案格式一致然后take_first取第一个匹配flexible-extract用(-?[$0-9.,]{2,})|(-?[0-9])且group_select: -1取最后一组匹配从答案字段中柔性抽取数值容忍$、逗号、小数等格式差异。精确匹配指标exact_match聚合方式为meanhigher_is_better: trueignore_case: true忽略大小写regexes_to_ignore在比较前剔除逗号、美元符号、####之后的内容和末尾句点。四、Chain-of-Thought 变体gsm8k_cot与零样本触发词4.1 gsm8k_cot8-shot 思维链评测gsm8k-cot.yaml 将任务升级为显式思维链评测提示模板doc_to_text为Q: {{question}}\n\nA:fewshot 示例中每个target都包含完整的逐步推理如There are 15 trees originally. Then there were 21 trees after some more were planted. So there must have been 21 - 15 6. The answer is 6.从而引导模型输出中间推理过程。fewshot 来源使用fewshot_config.sampler: first_n直接内嵌 8 个精选示例不依赖外部 fewshot 采样逻辑保证示例稳定一致。答案目标doc_to_target使用表达式{{answer.split(####)[-1].strip() if answer is defined else target}}即优先取####后的数值部分作为参考答案回退到target字段。过滤strict-match 正则变为The answer is (\-?[0-9\.\,]).匹配模型输出中The answer is ...后的数字tag标记为chain_of_thoughtnum_fewshot: 8。4.2 gsm8k_cot_zeroshot零样本思维链触发gsm8k-cot-zeroshot.yaml 提供零样本评测选项num_fewshot: 0不注入任何示例doc_to_text: Q: {{question}}\nA: Lets think step by step.——通过追加经典的Lets think step by step 触发词在零样本条件下诱导模型展开推理其余配置生成、过滤、指标与gsm8k.yaml保持一致。该变体常用于快速验证模型原生推理能力或作为 CoT 能力的下限参考。五、Self-Consistency 变体Maj64 多数投票的实现细节gsm8k-cot-self-consistency.yaml 通过include: gsm8k-cot.yaml继承基座任务仅做三处关键改动generation_kwargs: until: - Q: - \n\n do_sample: true temperature: 0.2 repeats: 64 filter_list: - name: score-first filter: - function: regex regex_pattern: The answer is (\\-?[0-9\\.\\,]*[0-9]) - function: take_first - name: maj64 filter: - function: regex regex_pattern: The answer is (\\-?[0-9\\.\\,]*[0-9]) - function: majority_vote - function: take_first - name: maj8 filter: - function: take_first_k k: 8 - function: regex regex_pattern: The answer is (\\-?[0-9\\.\\,]*[0-9]) - function: majority_vote - function: take_firstSelf-Consistency 的完整链路如下采样阶段do_sample: true、temperature: 0.2开启随机采样repeats: 64让每个题目独立生成 64 条回答until增加\n\n作为额外停止符避免单条回答内出现多次推理块。三条并行打分管线score-first只取第 1 条回答作为单样本基线指标maj64对全部 64 条回答的抽取结果做majority_vote再take_first得到完整多数投票指标maj8先用take_first_kk8截取前 8 条回答再投票近似计算 Maj8YAML 注释也说明使用更优的估计器会更理想。上述 filter 的底层实现可以在本仓库源码中直接验证take_first / take_first_k / majority_vote 实现TakeFirstFilter.apply对每条 doc 的回答列表丢弃除第一个外的所有回答TakeKFilter会断言len(resps[0]) k否则报错提示增大TaskConfig.repeats并切片取前 k 条MajorityVoteFilter用Counter(resp).most_common(1)[0][0]选出出现次数最多的回答。regex 抽取实现RegexFilter用re.findall对每条回答匹配group_select指定取第几组匹配-1 取最后一组无匹配时返回默认 fallback[invalid]随后由take_first收敛为单个答案字符串。正是这套先抽取答案、再按答案字符串投票的管线让 Self-Consistency 在无需额外奖励模型的前提下显著提升 GSM8K 上的准确率——这是该评测变体在测试时扩展test-time scaling类工作中被广泛采用的原因。六、Llama 对齐变体复现 Meta 官方评测设置gsm8k-cot-llama.yaml 专门用于复现 Meta 在其 Llama-3.1-8B-Instruct-evals 数据集中报告的 GSM8K 成绩与gsm8k_cot的区别在于系统提示模板doc_to_text变为Given the following problem, reason and give a final answer to the problem.\nProblem: {{question}}\nYour response should end with \The final answer is [answer]\ where [answer] is the response to the problem.\n要求输出以The final answer is [answer]结尾示例目标格式fewshot 示例的target均以The final answer is 6这种句式收尾与抽取正则The final answer is ((-?[$0-9.,]{2,})|(-?[0-9]))完全对应停止符until加入 Llama 3 的对话标记|eot_id|与|start_header_id|user|end_header_id|确保生成在对话边界正确截断。使用前提如 README 所述运行该任务必须同时传入--fewshot_as_multiturn将 fewshot 示例按多轮对话组织和--apply_chat_template应用模型的 chat template否则提示格式与 Meta 官方设置不一致无法复现其报告的数字。七、运行方式与验证7.1 命令行运行示例在 lm-evaluation-harness 目录下以本地模型为例# 运行基础 5-shot GSM8K python -m lm_eval \ --model hf \ --model_args pretrainedyour-model \ --tasks gsm8k # 运行 CoT 变体 python -m lm_eval \ --model hf \ --model_args pretrainedyour-model \ --tasks gsm8k_cot # 运行 Self-Consistency64 次采样 Maj64耗时较长 python -m lm_eval \ --model hf \ --model_args pretrainedyour-model \ --tasks gsm8k_cot_self_consistency # 复现 Meta Llama-3.1 官方设置必须带两个额外参数 python -m lm_eval \ --model hf \ --model_args pretrainedyour-model,trust_remote_codeTrue \ --tasks gsm8k_cot_llama \ --fewshot_as_multiturn \ --apply_chat_template需要说明的适用前提以上命令以本仓库配套的 lm-evaluation-harnesslm_eval 主入口为准--fewshot_as_multiturn与--apply_chat_template为 v1.0 起支持的参数运行结果输出中gsm8k_cot_self_consistency会分别报告 score-first、maj64、maj8 三条指标。7.2 任务在仓库中的落位任务定义tasks/gsm8k/5 个 YAML过滤器实现filters/selection.pytake_first / take_first_k / majority_vote、filters/extraction.pyregex组Group元信息README 中列出了math_word_problems、chain_of_thought、self_consistency三个 Group同一 Group 机制也复用于 aime 任务族 等推理类任务。八、维护状态与变体 WishlistREADME 末尾的 Checklist 显示gsm8k任务族已纳入 Eval-harness v1.0但从 v1.0 回归检查与原论文方法等价性检查和主选变体标注三项尚未完成引用或复现时需留意。此外README 列出了三个尚未实现的变体方向Variant Wishlist可作为后续扩展参考带计算器Calculator的变体利用数据集的 calculator annotations官方 grade-school-math 的calculator.py提供了示例实现Verifier验证器变体对应论文标题Training Verifiers to Solve Math Word Problems的训练-验证范式无 CoT 的 Majority voting不借助思维链直接对答案做多数投票。这些方向在gsm8k_cot_self_consistency的 maj8/maj64 管线上已有雏形抽答案 投票只是尚未接入计算器与验证器。结语在 s1 仓库中gsm8k任务族是评测语言模型数学推理能力的标准入口gsm8k提供干净的 5-shot 基线gsm8k_cot与gsm8k_cot_zeroshot覆盖有/无示例的思维链评测gsm8k_cot_self_consistency通过 repeats64 与 majority_vote 过滤器实现测试时扩展而gsm8k_cot_llama则精确复现 Meta 官方口径。理解这 5 个 YAML 的字段语义与过滤器链路即可自行定制采样次数、温度与抽取正则将 GSM8K 评测无缝嵌入自己的推理能力对比实验中。赞分享大模型推理模型微调模型推理服务【免费下载链接】s1s1: Simple test-time scaling项目地址https://gitcode.com/gh_mirrors/s1/s1点击查看免费下载相关推荐OpenCompass 思维链Chain of Thought评测指南从零样本 CoT 到 Tree-of-Thoughts 的完整实战配置OpenCompass 思维链Chain of Thought评测指南从零样本 CoT 到 Tree of Thoughts 的完整实战配置 思维链Ch模型评测人工智能大模型AI 评测N_m3u8DL-RE一条命令搞定 MPD/M3U8/ISM 流媒体下载加密流、直播流都支持N_m3u8DL RE一条命令搞定 MPD/M3U8/ISM 流媒体下载加密流、直播流都支持 N_m3u8DL RE 是一款跨平台的流媒体下载工具MPD、CLI音视频s1 仓库 C-Eval 中文评测实现指南基于 lm-evaluation-harness 的 ceval-valid 任务组深度解析s1 仓库 C Eval 中文评测实现指南基于 lm evaluation harness 的 ceval valid 任务组深度解析 导读 本文以当前仓库中大模型推理模型微调模型推理服务上一篇零宕机指南Dgraph多区域部署的健康检查实践下一篇3步打造专属编辑界面wangEditor 5工具栏自定义完全指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考