棋局终了,裁判宣布徒弟获胜。可师父却在复盘时皱起眉头,指着中盘的一手棋说:“这里太过冒进,只是对手没抓住机会,赢得很侥幸。” 徒弟这才明白——只盯着最终胜负,根本看不清真实水平。AI的训练也面临同样的问题。过去,很多推理模型训练时只看“最终答案对不对”,答对了就给奖励,答错了就惩罚。但答案正确,中间某一步的逻辑却可能完全是错的,模型只是靠“运气”得分。为了让AI像被师父复盘一样,每一步都被认真检查,OpenAI构建了PRM800K:一个包含约80万条推理步骤级标注的大规模数据集。它让人类老师像复盘棋局一样,把模型的每一步解题过程都标记为“对”或“错”,再用这些数据训练出能评价推理过程质量的过程奖励模型。本篇文章将带你详细了解这份数据集的构成、标注流程、训练方式与深远意义——它是理解o1系列推理模型训练思路的重要参考。

岗位关联

掌握PRM800K,你将明白为什么“逐步验证”比“只看答案”更能提升推理可靠性,也能为构建自己的奖励信号与推理时搜索打下基础。

目录
  1. 可视化演示
  2. 背景价值:为什么不能只看答案
  3. 数据构成:一座名局档案馆
  4. 采集流程:师徒间的复盘循环
  5. 标注标准:明确错误与隐藏错误
  6. 评分训练:训练一位新教练
  7. 评测应用:带新教练上棋会
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

通过步骤级三类标注、推理链过程评分和Best-of-N选择三个模式,展示OpenAI PRM800K数据集的标注方法与奖励模型应用。

本节配有交互动效(进入视口后自动加载,约 3KB)。

步骤级三类标注体系 好:推理步骤正确且有效推进解题 坏:推理步骤错误或偏离正确方向 中:步骤中性,既非明显正确也非明显错误 三类标签覆盖80万条推理步骤标注

背景价值:为什么不能只看答案

中国围棋大师常说,赢棋不一定每一步都对。复盘时,师父会指着某一步说:“这手棋虽然没被对手抓住,但它留下了一个漏洞,对手若下对,你就会输。” 正是这种不盯着最终胜负、只盯中间过程的复盘,才能让棋手真正进步。AI推理模型的训练,也面临着同样的课题。

早期的大模型常用“结果奖励模型”ORM,只看最终答案:答对就给高分,答错就给低分。但数学证明和推理是链条式的,链条中间任何一环断掉,结论都可能是“侥幸”。过程奖励模型PRM的目标,是把裁判的目光从“只看得分”转移到“检查每一个步骤”。PRM800K正是用于训练PRM的大规模监督数据。

从概率的角度看,整个推理链条的正确性可以展开为各步骤条件概率的乘积。一个步骤出错,即使后面步骤都对,整体推断也会崩塌。这也是过程奖励比结果奖励更可靠的根本原因。

师父复盘时不看输赢,只看每手棋是否留有隐患。PRM800K做的正是这件事:它让AI在“赢棋”时也能看到“昏招”,及早修正。这样训练出的模型,才是踏踏实实一步步推理、而不是靠运气答题的“及格棋手”。

P(全部正确)=P(a1)×P(a2∣a1)×⋯×P(an∣a1,a2,…,an−1)P(\text{全部正确}) = P(a_1) \times P(a_2 \mid a_1) \times \cdots \times P(a_n \mid a_1, a_2, \dots, a_{n-1})
公式含义:整个解题链条正确的概率,等于“第一步正确”乘以“在第一步正确的前提下第二步也正确”,以此类推连乘。任何一个低概率的坏步骤,都会拉低全局可靠性。
  1. 步骤定义 \(a_i\)把完整推理拆成有序步骤 \(a_1, a_2, \dots, a_n\),每一步是一次有意义的状态推进。
    a1,a2,…,ana_1, a_2, \ldots, a_n
  2. 条件概率相乘后面的步骤必须以“前面所有步骤都成立”为前提,因此用条件概率连乘,体现链条式依赖。
    P(a1)×P(a2∣a1)×⋯P(a_1) \times P(a_2 \mid a_1) \times \cdots
  3. 反推设计动机若只给最终答案打分,模型无法感知中间某个 \(P(a_i)\) 的崩塌;要感知它,就需要步骤级的奖励数据。
    P(an∣a1,a2,…,an−1)P(a_n \mid a_1, a_2, \ldots, a_{n-1})

数据构成:一座名局档案馆

要把师父的复盘智慧传承下去,先要有足够多的对局记录。PRM800K就是一座棋盘上的“名局档案馆”:它从MATH题库中挑选了一万两千道数学竞赛题,让模型先解答,再由人类标注者把每道题的解题过程逐条标记。

PRM800K的“800K”不是80万道题,而是约80万条步骤级标签。每条标签对应解题过程中的一个步骤,标注员给这个步骤打上“没问题”(正标签)或“有问题”(负标签)。平均每道题被拆分约66.7个步骤,这也是它能支撑“过程奖励”训练的原因。

MATH数据集里的题目覆盖代数、几何、概率统计等竞赛难度,保证标注样本有足够的难题分布,也让PRM学会在真正有挑战的推理链上判断对错。因此PRM800K天然是研究推理能力的优质材料。

档案馆里存的不是“我会做这道题”的答案索引,而是每一道题“棋手走过哪些弯路、哪一手该被指出”的复盘明细。数据决定了教练的见识:题目越难、标注越细,AI教练的水平上限就越高。

kˉ=NlabelsNproblems=800,00012,000≈66.7\bar{k} = \frac{N_{\text{labels}}}{N_{\text{problems}}} = \frac{800{,}000}{12{,}000} \approx 66.7
公式含义:把数据集的总标签数除以总题数,得到平均每道题约有66.7个步骤。步骤拆分足够细,过程监督才有意义。
  1. 分子 \(N_{\text{labels}}\)整个数据集的步骤级标签总数,约80万条。
    Nlabels=800,000N_{\text{labels}} = 800{,}000
  2. 分母 \(N_{\text{problems}}\)题目数量来自MATH数据集,共1.2万道题。
    Nproblems=12,000N_{\text{problems}} = 12{,}000
  3. 平均步骤数 \(\bar{k}\)相除后得到平均每道题约66.7个步骤,说明标注粒度是“步骤”而不是“句子”或“整题”。
    800,00012,000≈66.7\frac{800{,}000}{12{,}000} \approx 66.7

采集流程:师徒间的复盘循环

师父复盘时,不会让学生重新讲一遍完整棋局,而是盯着棋谱走到一半喊“停”——“这手不对,改一手看看。” 采集PRM800K也有类似的“喊停”机制。

整个流程由模型和人类交替完成。首先是生成模型对题目输出完整解答草稿。人类标注员按步骤阅读,一旦发现第一个错误就停止;如果这条解答全对就直接结束,否则标注出错误步骤并修正,再把修正后的解答交给生成模型继续生成新步骤,如此循环直到解题完成。

一个解答从初始草稿到最终可接受的过程,可以写成迭代形式:第 \(t\) 轮的解答,经过人类对错误集合的修正,得到第 \(t+1\) 轮的解答。这个循环既控制了人类的劳动量——不需要从零重写,也保留了“哪些步骤曾经出错”的标注信号。

这条人机循环不像“你写题我评分”那种割裂分工,更像师父在棋盘旁实时指点:“走到这步不对劲,咱们退回来重走。” 每一条修正记录都被保留下来,成为AI未来自我纠错的学习素材。

x(t+1)=R(x(t),  e1(t),e2(t),…,em(t))x^{(t+1)} = R\big(x^{(t)},\; e_1^{(t)}, e_2^{(t)}, \ldots, e_m^{(t)}\big)
公式含义:新一版解题草稿由旧草稿和人类标注出的错误集合共同决定,\(R\) 代表“人工修正 + 模型续写”这一协作操作。
  1. 输入 \(x^{(t)}\)表示第 \(t\) 轮迭代的解题草稿。
    x(t)x^{(t)}
  2. 错误集合 \(\{e_i^{(t)}\}\)人类标注员在第 \(t\) 轮找到的一个或多个错误步骤。
    e1(t),e2(t),…,em(t)e_1^{(t)}, e_2^{(t)}, \ldots, e_m^{(t)}
  3. 修正函数 \(R\)人类根据错误位置编辑步骤,再让生成模型续写,得到新草稿 \(x^{(t+1)}\)。
    x(t+1)=R(x(t),  {ei(t)})x^{(t+1)} = R\big(x^{(t)},\; \{e_i^{(t)}\}\big)

标注标准:明确错误与隐藏错误

棋谱上的“好手”和“昏招”,不能凭心情认定。师父会先分清:这一手是看错了气数(明确错误),还是战术背后藏着一个更隐蔽的陷阱(隐藏错误)?PRM800K也有一套标注标准,用来保证80万条标签的口径统一。

标注标准规定,每个步骤只有在“没有在当前状态中引入错误”时才标注为正;一旦引入任何错误,就是负。错误分为“明确错误”和“隐藏错误”:前者是直接的运算错误、自相矛盾;后者是推理链条上有逻辑瑕疵,要仔细回看才能发现。两者只要出现,该步骤都记为负。

标注员还被要求独立判断——不看最终答案,只看当前步骤的状态变换是否正确。这样能避免“答案对了就顺手放过中间错误”的确认偏差。一条标签 \(y_i\) 的定义如下:

有了标准,师父的评语才不是“感觉不对”,而是一句技术判断:“这里漏看了对方的棋筋。” 同理,PRM800K里的每条标签都附带了清晰语义,AI教练才能学到“什么算对、什么算错”的边界。

yi={+1,第 i 步未引入错误−1,第 i 步引入了错误y_i = \begin{cases}+1, & \text{第 } i \text{ 步未引入错误} \\-1, & \text{第 } i \text{ 步引入了错误}\end{cases}
公式含义:标签只关心“这一步有没有引入新错误”,与最终答案无关。正标签表示推进无误,负标签表示该步骤存在明确或隐藏错误。
  1. 正标签 \(+1\)该步骤从头到尾检查无误,也没有把错误带进下一个状态。
    yi=+1y_i = +1
  2. 负标签 \(-1\)该步骤内含明确错误或隐藏错误,必须被扣分。
    yi=−1y_i = -1
  3. 标注粒度同一题的多个步骤可能出现正负交替,标注员需要逐个状态独立判断。
    yi∈{+1,−1}y_i \in \{+1, -1\}

评分训练:训练一位新教练

师父不可能永远在旁边。要培养一个能独立“看棋评棋”的AI教练,就需要让模型在大量复盘记录中学会打分——这就是训练PRM的过程。

PRM的输入是解题过程中的一个状态(已经生成的部分解答),输出是该状态最终能得到正确答案的概率。通过PRM800K上的二分类训练,模型从“只会做答案选择题”变成“会给每一步写评语”。这与结果奖励模型形成鲜明对比:结果奖励只输出整道题的得分,而PRM能输出逐步质量。

训练时,把步骤标签当作监督信号,使用二值交叉熵损失。对每一步 \(s_i\),模型输出一个logit \(f_\theta(s_i)\),经过sigmoid函数压缩成概率。如果该步是正的,我们希望预测值接近1;如果为负,则接近0。

如果把PRM800K比作师父留下的复盘笔记,那训练就是让新人教练反复对照笔记判断“这手该不该骂”。练得多了,新人也能一眼看出棋局里的隐患,不再依赖师父在场。

L=−1N∑i=1N[yilog⁡σ(fθ(si))+(1−yi)log⁡(1−σ(fθ(si)))]\mathcal{L} = -\frac{1}{N}\sum_{i=1}^{N} \Big[ y_i \log \sigma\big(f_\theta(s_i)\big) + (1-y_i)\log\big(1-\sigma\big(f_\theta(s_i)\big)\big) \Big]
公式含义:这是标准的二分类交叉熵损失。正样本让模型提升“正确概率”,负样本让模型压低“正确概率”,从而学会区分好步骤与坏步骤。
  1. 模型输出 \(\sigma(f_\theta(s_i))\)sigmoid函数把模型的原始分数压缩到0到1之间,表示“该步骤正确”的概率。
    σ(fθ(si))\sigma\big(f_\theta(s_i)\big)
  2. 正样本项 \(y_i \log(\cdot)\)当 \(y_i=1\) 时,只有前半项起作用,正确步骤的概率越接近1,损失越小。
    yilog⁡σ(fθ(si))y_i \log \sigma\big(f_\theta(s_i)\big)
  3. 负样本项 \((1-y_i)\log(1-\cdot)\)当 \(y_i=0\) 时,只有后半项起作用,错误步骤的概率越接近0,损失越小。
    (1−yi)log⁡(1−σ(fθ(si)))(1-y_i)\log\big(1-\sigma\big(f_\theta(s_i)\big)\big)

评测应用:带新教练上棋会

新教练出师,总要带去真正的棋会试一试。PRM800K训练出的PRM要在MATH、AIME等新题目集上接受检验,看看它评棋是否真的准。

评测常用BoN(best-of-N)方法:先让生成模型对每道题采样64条完整解答,再用奖励模型为每条解答打分,选出最高分的那条。PRM的评分方式是对每条解答内所有步骤评分,再取“最差步骤”的值作为该解答的过程分。

实验显示,在MATH和AIME等数学竞赛题上,PRM的BoN搜索正确率普遍超过只看最终答案的ORM。这说明过程奖励确实能定位中间错误,从而在候选生成时保留更多高质量步骤。这种“推理时搜索”不需要重训生成模型,成本低、可复用。由于PRM800K数据开源,社区也能复现并将该方法扩展到更多领域。

这位教练带队打比赛,不再只看“谁赢了”——它先复盘每一条解题路径里有没有烂手棋,再挑出最没雷的那条路。这正是过程奖励的价值:让AI像个谨慎的棋手一样,不给运气留机会。

sj=min⁡i=1njrθ(si(j)),j∗=arg⁡max⁡j=1Nsjs_j = \min_{i=1}^{n_j} r_\theta\big(s_i^{(j)}\big), \qquad j^* = \arg\max_{j=1}^{N} s_j
公式含义:每条候选解答先取步骤分数的最小值作为整条分数,再从N条候选中选出分数最高的那一条。最差的一步决定整条解答的命运。
  1. 步骤打分 \(r_\theta(s_i^{(j)})\)PRM对第 \(j\) 条候选解答的第 \(i\) 个步骤输出质量分。
    rθ(si(j))r_\theta\big(s_i^{(j)}\big)
  2. 最小值聚合 \(s_j\)一条解答的分数由它最差的一步决定,防止“多数好步骤掩盖单个坏步骤”。
    sj=min⁡i=1njrθ(si(j))s_j = \min_{i=1}^{n_j} r_\theta\big(s_i^{(j)}\big)
  3. 最优选择 \(j^*\)在 \(N\) 条候选中,选择最差步骤分最高的那条作为最终答案。
    j∗=arg⁡max⁡j=1Nsjj^* = \arg\max_{j=1}^{N} s_j

AI 应用场景

竞赛级数学AI助教

阶段:推理时搜索

解决的问题:传统方式只会用ORM“按最终答案挑”,一旦某个候选解答打着“最终答案正确”的旗号,中间步骤却混乱,就会选到不稳定的推理结果。使用PRM后,每条解答按“最差步骤”排序,像复盘棋局一样把隐藏的烂招提前挑出来。

具体案例:一位中学数学AI助教工程师,为每道联赛题采样64条解题路径,使用PRM逐步评分后做BoN选择。结果错误率下降,而且当学生追问“这一步为什么成立”时,AI也能给出更清晰的步骤解释。

推理模型的强化学习奖励信号

阶段:奖励建模与强化学习

解决的问题:在RL训练中,统一的结果奖励常被模型“猜对答案”钻空子,产生reward hacking。PRM给RL提供更细粒度的过程信号,鼓励模型走上每一步都正确的推理路径。

具体案例:团队在自研代码生成模型中,用PRM分数结合结果奖励,对每一步进行打分,把“能跑过测试用例但中间逻辑是拼凑”的生成结果淘汰,让RL更新的梯度更干净。

企业级数据标注SOP设计

阶段:数据采集与标注

解决的问题:过去标注员只给“整体答案”打标签,无法定位模型推理中的隐藏错误。参照PRM800K的“停止-修正-续写”循环,可以让标注员快速产出步骤级标签。

具体案例:某标注平台负责人把指引从“给完整回答打1-5分”改成“读到错误步骤就停止,然后修正并续写”,单次标注任务时长节省了约30%,同时每个步骤都带正/负标签,直接用于训练内部奖励模型。

Python 演示

python54 行
# -*- coding: utf-8 -*-"""用规则模拟"过程奖励模型"的逐步打分, 并用 best-of-N 挑选最稳推理链."""  class ProcessRewardModel:    def __init__(self, bad_words):        self._bad_words = bad_words     def _score_step(self, step_text):        if any(w in step_text for w in self._bad_words):            return 0.0        return 1.0     def score_solution(self, steps):        return min(self._score_step(s) for s in steps)  def collect_labels(problems, human_marks):    """把人工标注转换为 (题号, 步号, 文本, 标签) 样本."""    rows = []    for pid, (steps, marks) in enumerate(zip(problems, human_marks)):        for idx, (step, mark) in enumerate(zip(steps, marks)):            rows.append((pid, idx, step, int(mark)))    return rows  def best_of_n(solutions, prm, n=3):    """按过程奖励取最小值排序, 返回分数最高的前 n 条."""    ordered = sorted(solutions, key=prm.score_solution, reverse=True)    return ordered[:n]  if __name__ == "__main__":    prm = ProcessRewardModel(["乱", "矛盾"])     solutions = [        ["移项得x=2", "代回原式成立", "所以x=2"],        ["移项得x=2", "代入时出现矛盾推导", "修正后x=2"],        ["两边平方", "开方丢弃正负号", "得x=2但不完整"],    ]    marks = [        [1, 1, 1],        [1, 0, 1],        [1, 0, 0],    ]     dataset = collect_labels(solutions, marks)    print("逐句标注样本数:", len(dataset))    for row in dataset[:3]:        print(row)     print("best-of-3 选中的解答:", best_of_n(solutions, prm, 3)[0])
目的:演示如何把人工步骤标签整理成训练样本,并用“最差步骤分”做best-of-N选择,模拟PRM的核心用法。
  1. return min(self._score_step(s) for s in steps)最差步骤的分数就是整条解答的过程分。
  2. rows.append((pid, idx, step, int(mark)))把题号、步号、文本和标签组成一条监督样本。
  3. ordered = sorted(solutions, key=prm.score_solution, reverse=True)按过程奖励从高到低排序候选解答。
  4. prm = ProcessRewardModel(["乱", "矛盾"])用规则词模拟“一眼看出错误”的标注老师。
  5. marks = [[1, 1, 1], ...]模拟人工对每一步打出的正负标签。

常见误区

误区以为“800K”指的是80万道数学题目,于是惊叹数据集“包含80万个问题”,还经常拿来和其他数据集比较规模。

正解其实800K指的是约80万条步骤级标签,题目只有来自MATH的一万两千道,平均每道题拆成约66.7个步骤。80万道题靠人工逐条标注不现实,也不符合“逐步复盘”的精细目标。

为何常见:数据集名里的“800K”直观让人联想到样本总量,忽略了它的单位是“标签”而不是“问题”。

误区认为PRM给某条解答打了高分,就代表最终答案必然正确,甚至想拿它当唯一校验器。

正解过程奖励评估的是“每一步有没有引入新错误”,不等于“后续步骤一定能正确收敛”。它擅长淘汰某一步有错的解答,但“无错过程”和“结论正确”之间仍有距离,所以PRM常与BoN搜索配合使用。

为何常见:初学者把“步骤质量”和“结论正确性”混为一谈,忽略了推理还可能因为未完成、题意遗漏等原因失败。

误区以为每道题都要人工从头一步步写出解法,工作量大到不可执行。

正解PRM800K采用人机协作循环:模型先生成草稿,人工读到错误处就停止并修正该步,再让模型续写。人工只做局部修改与判断,标注成本显著降低,也更容易标注长链条推理。

为何常见:“过程奖励”容易被理解成“人类全面代写过程”,没有关注批量生成加局部修正的工业级流水线设计。

误区认为先看最终答案是否正确,再回头逐条给步骤打标,这样“更准”。

正解PRM800K的标注标准要求“独立判断”:不看最终答案,只看当前步骤的变换有没有引入新错误。因为最终答案会带来强烈的确认偏差,让人放过隐蔽错误,先看答案再评步骤会污染标签质量。

为何常见:人天生习惯用结果锚定过程的评价,但这恰恰违背了过程奖励“评估每一步状态”的初衷。

面试题

Q1. PRM800K中的“PRM”指的是什么?

单选题 · easy

  • A.过程奖励模型← 正确答案
  • B.概率回归模型
  • C.参数正则模型
  • D.提示重构模型

答案:A。PRM是Process Reward Model,即过程奖励模型,它给推理的每一步打分,而不是只看最终答案。B、C、D都是其他领域的术语,与逐步评分的机制无关。

Q2. PRM800K的题目主要来自哪个数据集?

单选题 · easy

  • A.GSM8K小学数学
  • B.MATH竞赛题库← 正确答案
  • C.MMLU考试题库
  • D.HumanEval代码集

答案:B。PRM800K使用MATH数据集的1.2万道数学竞赛题作为题目来源,偏向多步推理。GSM8K是小学数学,MMLU偏知识问答,HumanEval是代码生成,均不符合题意。

Q3. 关于PRM800K的步骤标签,下列说法正确的有?

多选题 · mid

  • A.每条标签粒度是解题步骤而非整题← 正确答案
  • B.标签只有正和负两种取值← 正确答案
  • C.正标签表示该步骤没有引入错误← 正确答案
  • D.每道题只能有一条正标签

答案:ABC。标签粒度是“步骤级”,取值为+1或-1,正标签表示该步骤没有引入新错误。一道题往往有多个正确步骤,所以D错误。

Q4. 用PRM做BoN选择时,通常怎么把各步骤分聚合成一条解答的得分?

单选题 · mid

  • A.取最差步骤的分数← 正确答案
  • B.取所有步骤的均值
  • C.直接求和最大分
  • D.只取第一步的分数

答案:A。PRM通常用最小值聚合,即“一条解答的分数等于它最差一步的分数”。求和或均值容易被大量好步骤掩盖单个坏步骤,与过程校验的目的相悖。

Q5. 采集PRM800K时,标注员在什么情况下停止阅读模型草稿?

单选题 · mid

  • A.发现第一个错误步骤← 正确答案
  • B.读完整个解答才停
  • C.从开始就没有停止
  • D.等模型自己结束生成

答案:A。标注员逐句阅读,在发现第一个错误步骤时停止,对该步打标签并修正,然后继续循环。B只在草稿全对时成立,C和D与标注流程不符。

Q6. 标注标准中的“隐藏错误”最接近以下哪种情况?

单选题 · hard

  • A.逻辑有瑕疵但短期看不出来← 正确答案
  • B.算错了数字一眼就能看出
  • C.用了未定义符号导致失败
  • D.推导工整但最终答案错了

答案:A。隐藏错误不是一眼能发现的运算错误,而是藏在逻辑链中、需要回看步骤与步骤的因果关系才能发现的瑕疵。B和C属于明确错误,D更接近结论与过程不一致。

Q7. PRM训练时,模型对单个步骤输出的目标是什么?

单选题 · hard

  • A.判断该步骤是否引入新错误← 正确答案
  • B.预测该步骤文本的长度
  • C.判断最终答案是否为数字
  • D.预测下一步词表的生成概率

答案:A。PRM把已生成的前缀看作一个状态,输出“该状态是否通往正确答案”的概率,本质上是在判断该步骤有没有引入错误。其余选项都不是过程奖励的训练目标。

Q8. 下列哪些属于PRM800K的采集流程?

多选题 · mid

  • A.生成模型先给出完整草稿← 正确答案
  • B.人工从零开始重写每道题
  • C.人工发现错误步骤后停止← 正确答案
  • D.修正错误后模型继续生成← 正确答案

答案:ACD。采集流程是“模型生成草稿→人工发现错误→停止标注→修正→继续生成”的循环。B中的人工从零重写既低效,也不符合实际流水线设计。

Q9. 相比只看最终答案的结果奖励ORM,过程奖励PRM带来哪些改进?

多选题 · hard

  • A.能定位错误出现在哪一步← 正确答案
  • B.减少因侥幸答对带来的虚高奖励← 正确答案
  • C.一定能比ORM训练更便宜
  • D.支持在推理时按步骤搜索修正← 正确答案

答案:ABD。PRM提供步骤级信号,既能定位全局错误,又能缓解“最终答案正确但过程有错”的侥幸情况,同时可用于推理时搜索。C与训练成本无关,步骤级标注通常更贵。

Q10. PRM800K的步骤标签总数级大约是多少?

单选题 · easy

  • A.大约八万条
  • B.大约八十万条← 正确答案
  • C.大约八百万条
  • D.大约八千万条

答案:B。PRM800K中的“800K”代表约80万条步骤级标签,由1.2万道题平均拆成约66.7步得到。A、C、D的数量级都不正确。