DPOMetric

DPOMetric 在 DPO 训练过程中跟踪偏好优化相关的统计数据。

from twinkle.metric import DPOMetric

metric = DPOMetric(device_mesh=..., process_group=...)

# 每次前向传播后累积
metric.accumulate(inputs, outputs, ref_outputs=ref_outputs)

# 计算聚合指标
result = metric.calculate()

跟踪的指标:

  • chosen_logps: chosen 响应的平均对数概率

  • rejected_logps: rejected 响应的平均对数概率

  • ref_chosen_logps: 参考模型对 chosen 响应的对数概率

  • ref_rejected_logps: 参考模型对 rejected 响应的对数概率

  • rewards/chosen: chosen 响应的隐式奖励

  • rewards/rejected: rejected 响应的隐式奖励

  • accuracy: chosen 优于 rejected 的样本对比例

  • margin: chosen 和 rejected 之间的平均奖励差距

DPOMetric 在所有数据并行 rank 上执行 DP 感知的聚合。支持交替排列和分开排列的 chosen/rejected 批次格式。