Skip to content
Discussion options

You must be logged in to vote

这里的多样性主要不是靠 dropout 或 MoE,而是靠 token sampling。

在 Torch rollout 中,同一个 prompt 先通过 repeat_interleave(num_generations) 复制成多行,然后调用 generate(do_sample=True, temperature=0.8)。每一行都会从 token 概率分布中独立采样,所以即使输入和 logits 一样,随机采样也可能走出不同序列。对应代码在 rollout_engine.py#L71-L84。SGLang 路径也是复制输入,再把 temperature 放进 sampling_paramsL107-L123)。

不过当前实现不保证组内答案不重复。代码里没有 dedup 或重复后重新生成的逻辑;num_generations 只是规定每个 prompt 采多少条。模型分布很尖、temperature 较低,或者答案空间本来就小时,重复完全可能发生。

GRPO 本身也允许重复样本。这里会直接把组内 reward 算均值和标准差,再归一化 advantage(train_grpo.py#L121-L124)。如果一组生成结果和 reward 都相同,组内标准差就是 0,最后 advantage 基本为 0,这组对策略更新几乎没有有效信号。

如果只是希望多样性更高,可以调高 temperature,或给两个 rollout engine 补上 top-p/top-k 等采样参数。如果业务上要求严格不重复,就需要按 prompt 做去重并对重复项重采样;但这会改变原始策…

Replies: 1 comment 3 replies

Comment options

You must be logged in to vote
3 replies
@bingxia
Comment options

@lizuju
Comment options

@bingxia
Comment options

Answer selected by bingxia
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Category
Q&A
Labels
None yet
2 participants