- 大 Batch 放不进显存怎么办?梯度累积的精确归一化与 DDP no_sync
从梯度平均的分母出发,手算不等长 micro-batch 的累积误差,实现 token 精确归一化、AMP 与 DDP no_sync,并覆盖尾批、裁剪、调度和等价性调试。
14 分钟 中文 - 激活占满显存时该丢掉什么?Activation Checkpointing 的重算、边界与随机数状态
从反向传播为何需要中间激活出发,手算显存—计算交换,拆解 PyTorch 2.14 非重入 checkpoint 的重算数据流,并给出边界选择、随机层、调试与性能验证方法。
14 分钟 中文 - 半精度为何会让梯度变成 0 或 NaN?Autocast、FP16/BF16 与 GradScaler
从浮点数指数与尾数预算出发,手算梯度下溢和 loss scaling,拆解 PyTorch 2.14 autocast 与 GradScaler 数据流,并给出裁剪、累积、调试和失败边界。
14 分钟 中文 - 训练步数相同为何学习进度不同?Token 学习率时钟、Warmup 与 Cosine Decay
从可变长度 batch 让每步 token 数漂移出发,手算 token 进度下的 warmup 与余弦衰减,实现可恢复的 PyTorch 学习率控制器,并解释预算、调用顺序与调试方法。
12 分钟 中文 - 同一批短句为何被最长句拖慢?动态 Padding、长度分桶与 Token-based Batching
从变长样本的二次注意力浪费出发,手算长度分桶收益,实现当前 PyTorch 动态 padding 与 token 预算批处理,并解释 loss 归一化、分布式与编译形状陷阱。
15 分钟 中文
返回