# PR #3219 完整报告

- 仓库：`radixark/miles`
- 标题：fix: align MTP loss masks with input tokens before context-parallel slicing
- 合并时间：2026-09-15 04:20
- 原文链接：http://prhub.com.cn/radixark/miles/pull/3219

---

# 执行摘要

- 一句话：修复 MTP 掩码错位，统一 input-aligned 契约
- 推荐动作：

# 功能与动机

PR body 明确指出：Miles builds `full_loss_masks` in next-token/prediction alignment, but calls Megatron with `labels=None`。Megatron 的 MTP 路径从 `input_ids` 推导 labels 并“shifts the supplied mask along with them before applying the additional MTP-depth shift”，因此“Passing an already prediction-aligned mask ... advances the mask one token too far relative to the MTP targets”。例如目标监督区间 4–8 会实际选中 3–7，辅助损失作用于错误边界位置。

# 实现拆解

该变更按以下 4 步落地：

1. **新增掩码构造函数**：在 `miles/backends/training_utils/data.py` 中新增 `_prepare_loss_masks()`，把 response 掩码先做 `prompt_length` 的左补零（去掉了原先 prediction-aligned 的 `prompt_length - 1` 左补 + 1 右补），得到 `mask[i] == 1 iff tokens[i] 是受监督 response token` 的 input-aligned 掩码，随后用与 tokens 完全相同的 packing/CP 切片逻辑处理（`slice_with_cp`、`F.pad`、`chunk(cp_size)`），保证在 CP 分片后仍与 `tokens` 形状一致。

2. **替换批处理键**：`get_batch()` 中调用 `_prepare_loss_masks()` 产出 `batch[

关键文件：
- `miles/backends/training_utils/data.py`（模块 miles/backends；类别 source；类型 core-logic；符号 _prepare_loss_masks）: 源码主路径；涉及符号 _prepare_loss_masks；包含 控制流调整、配置键调整、符号定义调整；+59/-34
- `tests/fast/backends/megatron_utils/test_mtp_loss_mask_alignment.py`（模块 mtp/loss/mask/alignment；类别 test；类型 test-coverage；符号 test_actual_mtp_loss_selects_intended_targets, output_layer）: 测试配套；涉及符号 test_actual_mtp_loss_selects_intended_targets, output_layer；包含 测试覆盖调整、导入关系调整、控制流调整；+115/-0
- `tests/fast/backends/training_utils/test_input_loss_masks.py`（模块 input/loss/masks；类别 test；类型 test-coverage；符号 _parallel_state, test_mask_alignment_survives_packing_and_cp）: 测试配套；涉及符号 _parallel_state, test_mask_alignment_survives_packing_and_cp；包含 测试覆盖调整、导入关系调整、控制流调整；+86/-0
- `miles/backends/megatron_utils/model.py`（模块 miles/backends；类别 source；类型 data-contract）: 源码主路径；包含 配置键调整；+5/-3

关键符号：_prepare_loss_masks, test_actual_mtp_loss_selects_intended_targets, output_layer, _parallel_state, test_mask_alignment_survives_packing_and_cp


# 评论区精华



- 暂无高价值评论线程

# 风险与影响

- 风险：
- 影响：
 - 风险标记：暂无

# 关联脉络

- 暂无明显关联 PR