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...
RLHF 到 GRPO:大模型强化学习训练方法梳理
梳理大模型强化学习中 PPO、GRPO 与 RLOO 的模型角色和优势估计方法,介绍可验证奖励的作用,并讨论 rollout、生成与训练分离、权重同步等工程问题,以及相关开源框架。
流水线并行(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...
共计 214 篇文章,27 页。