detach model_output 修复多引擎逐 micro-batch 显存泄漏
值得精读。建议关注四点: 1. 根因定位方法:`_record_memory_history` 栈归因锁定 `p2p_communication.py::create_tensor_recv_prev`,并用 `forward_only`(0.76 MiB/micro-batch)与 PP=1(0.31 MiB/micro-batch)两组对照实验把“图保留”机制钉死,是排查训练显存泄漏的范本。 2. `detach_tree` 设计:惰性 detach(已 detached 张量原样返回)避免逐 key 创建 `TensorImpl`;递归支持 dict / list / tuple,从而覆盖 jagged nested tensors 这类新型输出结构。 3. 回归测试设计:CPU-only 下用最小 checkpoint 模型 + weakref 复现“图被钉住”机制,再配合 AST 静态检查 4 个引擎调用点,绕开“必须 PP>=2 才可复现”与“无法在 CI 断言绝对显存”的双重困境。 4. 工程陷阱提醒:“detach 位置错误导致梯度静默归零且 loss 曲线正常”说明此类内存修复必须用梯度可达性断言(`requires_grad` 契约)双保险,而不能只靠数值曲线。