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 批次格式。