#2841 [multi-lora v2 2/7] Per-batch loss selection and Tinker losses
原始 PR · 作者 yueming-yuan · 合并时间 2026-09-16 16:25
新增 Tinker 每批损失选择、5 种目标函数与 per-datum 输出
建议精读。最值得关注的三处设计决策:(1) `tinker_losses.py` 的「服务端只做 raw sum、归一化交给客户端」模型,以及 `loss_normalizer` 与执行 batch size 解耦的理由;(2) `_sum_loss_and_outputs` 在“无监督 token 的 microbatch”上用 `logits.sum(dtype=torch.float32) * 0` 保持计算图连通的 NaN 防御写法,以及 per-datum 输出 detach 到 CPU 以规避 recompute 重复追加的设计;(3) `forward_only` 复用同一条 loss pass 而不是另起实现,这是消除双实现漂移的关键取舍。阅读时建议同时对照 review 中“零掩码测试无法验证目标函数”与“per_datum 命名空间污染”两条评论,它们分别解释了最终测试矩阵与 `loss.py` 守卫的由来;并把 nanjiangwill 关于 O(KN) 全池同步的评论作为独立待办跟踪。