AI Infra、GPU 与大模型工程笔记

VSCode 无法读取代理环境变量的解决方案

在 macOS 上开发时,常见的做法是把代理配置写在 ~/.zshrc 里: export https_proxy=http://127.0.0.1:7897 export http_proxy=http://127.0.0.1:7897 export all_proxy=socks5://127.0.0.1:7897 在终端里运行 curl 或其他工具时一切正常,但在 VSCode 的插件中,代理失效,比如codex cli/claude code 这种 影响很大, 根本原因 ~/.zshrc 只在交互式 shell 启动时才会被 source。 当你从 Dock 或 Finder 点击打开 VSCode 时,macOS 启动的是一个非交互式进程,不会走 ~/.zshrc...

阅读更多

ZeRO:从优化器状态到残差状态的显存优化

关联阅读:ZeRO 作为数据并行 训练中的显存优化 1. 训练显存的组成 训练一个参数量为 $\Psi$ 的模型,全精度 Adam 优化器(FP16 混合精度)下,显存占用主要来自: 组件 精度 大小(bytes/参数) 参数(Master Weights) FP32 4 梯度 FP16 2 一阶矩 m FP32 4 二阶矩 v FP32 4 ...

阅读更多

虚拟流水线并行(VPP):更低气泡,更高吞吐

前置阅读:流水线并行(1F1B) 1. 回顾:1F1B 的气泡极限 1F1B 的气泡比率为: \[\text{bubble ratio}_{\text{1F1B}} = \frac{p - 1}{m}\] 想降低气泡,有两条路: 增大 $m$(micro-batch 数):但显存需求也随之增大(更多 in-flight 激活),且每个 micro-batch 变小会降低 GPU 的矩阵乘效率; 减小 $p$(stage 数):但这意味着要么缩减模型规模,要么每个 stage 承载更多层——两者都不是我们想要的。 VPP(Virtual Pipeline Parallelism,也叫 Interleaved PP)提供了第三条路:在不增加物理 GPU 数的前提...

阅读更多

长上下文训练中的 SP 与 CP:从 Megatron 到分布式 Attention

前置阅读:张量并行与通信 分布式训练并行基础 模型已经开启张量并行,为什么把上下文拉长以后,显存还是不够? TP 把权重和部分中间计算分到了多张卡上,但没有消除所有激活副本。以常规 Megatron TP 为例,LayerNorm、Dropout 等区域仍然可能在每张卡上保存同一份完整序列激活。上下文越长,这些副本越贵。即使用了 FlashAttention,避免把完整的 $L\times L$ 注意力分数矩阵写入显存,QKV、MLP 中间结果等随序列长度增长的激活仍然存在。[1][6] 沿序列维切分看起来很自然:一张卡放不下,就让每张卡只负责一段 token。不过,LayerNorm 可以逐 token 独立计算,Attentio...

阅读更多

流水线并行(Pipeline Parallelism):1F1B 调度与气泡分析

本文是分布式训练并行系列的一篇。前置背景可参考: 分布式模型并行(含 PP 朴素方案 + GPipe 概览) NCCL 通信原语 1. 为什么需要流水线并行 单机模型并行(Naïve Model Parallel)把模型不同层放在不同 GPU,同一时刻只有一张卡在算,其余全部空等——GPU 利用率极低。 GPipe [1] 提出用 micro-batch 填充流水线空隙:把一个 mini-batch 切成 $m$ 份 micro-batch,各阶段可以流水线化执行。但 GPipe 的 “全 F 全 B” 策略导致: 显存峰值高:设备 0 要把所有 $m$ 个 micro-batch 的激活值全存到反向传播结束; 气泡(Bubble)时间...

阅读更多

梯度检查点(Gradient Checkpointing):用计算换显存

关联阅读:训练中的显存优化 ZeRO 优化 1. 问题:反向传播需要存激活 标准反向传播(Backpropagation Through Time / Chain Rule)需要在反向时访问每层前向传播的中间激活(intermediate activations)。 以一个 $n$ 层的模型为例: 前向:x₀ → [Layer 1] → x₁ → [Layer 2] → ... → xₙ₋₁ → [Layer n] → xₙ = loss 反向需要: dL/dx_{n-1} 需要 x_{n-1}(Layer n 的输入) dL/dx_{n-2} 需要 x_{n-2}(Layer n-1 的输入) ... dL...

阅读更多

FlashAttention:IO 感知的精确 Attention 计算

关联阅读:Transformer 加速技巧 混合精度训练(AMP) Sequence Parallel 与 Context Parallel 1. 标准 Attention 的内存瓶颈 把 Attention 写成代码,最直接的实现就是三步:先算 Q @ K.T,再做 softmax,最后乘 V。公式很短,中间结果却可能比输入大得多。 固定一个 head,设序列长度为 $N$,head 维度为 $d$,并令 $Q,K,V\in\mathbb R^{N\times d}$: \[S=\frac{QK^{\mathsf T}}{\sqrt d},\qquad P=\operatorname{softmax}(S),\q...

阅读更多