- 注意力公式没变,为何还能快几倍?FlashAttention 的分块、在线 Softmax 与 IO
从显存读写瓶颈出发,手算分块在线 Softmax,解释 FlashAttention 如何不物化 L×L 矩阵、保持精确结果,并用 PyTorch 2.14 SDPA 验证后端与性能。
13 分钟 中文 - 模型按层切开后 GPU 为何仍在等待?GPipe、1F1B 与 Micro-batch 调度
从流水线气泡出发,手算 GPipe 与 1F1B 的时间线、激活驻留和梯度累积,解释 stage 边界契约、PyTorch PipelineStage/Schedule1F1B 用法与调试方法。
16 分钟 中文 - 一层 MLP 太宽而放不下时怎样切?列并行、行并行与块尾归约
从 FSDP2 仍需临时聚齐单层参数出发,手算 Transformer MLP 的列并行与行并行,解释局部张量形状、通信位置、反向传播与 PyTorch DTensor 落地。
13 分钟 中文 - 每张卡为何还要保留完整模型?FSDP2 的参数全聚合、梯度归约分片与显存峰值
从普通 DDP 的复制成本出发,手算 FSDP2 如何分片参数、梯度和优化器状态,拆解 all-gather、reduce-scatter、reshard、分组边界与分布式 checkpoint。
16 分钟 中文 - 模型放不下一张卡时究竟该切什么?数据并行、张量并行与流水线并行的边界
从显存瓶颈和通信位置出发,用四卡手算比较数据并行、张量并行与流水线并行,解释三种切分的数据流、张量形状、性能代价与组合原则。
16 分钟 中文 - 大 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 分钟 中文
返回