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):超长上下文训练的关键
前置阅读:张量并行与通信
分布式训练并行基础
1. 为什么需要序列并行
训练长上下文(如 128K、1M token)模型时,内存瓶颈主要来自:
激活值:self-attention 的 $Q$、$K$、$V$ 和中间结果,内存随序列长度 $L$ 线性增长;
KV Cache:每层的 $K$、$V$ 需要存储,$O(L \cdot d)$ 的显存;
TP 的 Embedding / LayerNorm 副本:张量并行(TP)要求每张卡持有相同的完整激活,$L$ 大时这个”完整副本”变得难以承受。
序列并行(Sequence Parallelism,SP) 和 上下文并行(Context Parallelism,...
RLHF 到 GRPO:大模型强化学习训练方法梳理
关联阅读:SFT 与 RL 在推理中的应用
1. 背景:从 SFT 到 RLHF
预训练 + SFT 给了模型通用能力,但对齐(helpfulness、harmlessness、honesty)和进一步提升推理能力,光靠有监督微调效果有限。RLHF(Reinforcement Learning from Human Feedback) 通过让模型在”好的回复得到奖励”的环境下训练,成为 InstructGPT/ChatGPT 等产品的核心技术。
近年来,以 DeepSeek-R1 为代表的推理模型则更进一步——直接用 可验证奖励(Verifiable Reward) 替代人类反馈,在数学和代码等任务上取得了远超 SFT 的推理能力提升。
本文梳理从 PPO 到 GRPO ...
流水线并行(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)
1. 标准 Attention 的内存瓶颈
标准 Attention 计算为:
\[\text{Attention}(Q, K, V) = \text{softmax}\!\left(\frac{QK^T}{\sqrt{d_k}}\right) V\]
朴素实现的显存复杂度为 $O(N^2)$(需要存储 $N \times N$ 的 attention score 矩阵),时间复杂度也是 $O(N^2 d)$。
瓶颈在哪里? 不是 FLOP 不够,而是 HBM(显存带宽) 太慢。
以 A100(80GB HBM2e,带宽 2TB/s,FP16 算力 312...
共计 182 篇文章,23 页。