From 6c128ad6f57e4bf7f5f3d0d5b2fc99d68014713e Mon Sep 17 00:00:00 2001 From: iomgaa Date: Sat, 18 Jul 2026 04:21:30 -0400 Subject: [PATCH] =?UTF-8?q?docs/02=EF=BC=9AFSDP=20=E5=86=B3=E7=AD=96?= =?UTF-8?q?=E5=AE=9A=E6=A1=88=E2=80=94=E2=80=94DDP=20=E5=88=B0=201.7B?= =?UTF-8?q?=EF=BC=8C=E8=A7=A6=E5=8F=91=E7=82=B9=E5=86=99=E6=AD=BB=EF=BC=88?= =?UTF-8?q?4B=20=E6=88=96=20seq>8K=EF=BC=89=EF=BC=8Cenv=20=E5=9D=91?= =?UTF-8?q?=E4=BB=8A=E6=97=A5=E6=B6=88=E9=99=A4=EF=BC=88=E8=84=9A=E6=9C=AC?= =?UTF-8?q?=E5=A4=B4=E9=83=A8=E5=89=8D=E7=BD=AE=E5=9D=97=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Fable 5 --- docs/02-sft-baseline.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/02-sft-baseline.md b/docs/02-sft-baseline.md index 7e0890a..b83946e 100644 --- a/docs/02-sft-baseline.md +++ b/docs/02-sft-baseline.md @@ -56,7 +56,9 @@ F.cross_entropy(..., ignore_index=-100) ### 2.6 基础设施笔记(0.6B 用不上但要知道) -参考实现用 torchrun + FSDP,有个著名 trick:`FSDP_ACTIVATION_CHECKPOINTING` 环境变量必须在 import accelerate/transformers **之前**设置(train_dist:15-21),且 `TrainingArguments.gradient_checkpointing` 在 FSDP 下是 no-op(train_dist:390-393)。**0.6B 学生 4×A800 用 DDP 即可**(每卡放得下整模型),FSDP 这套留到未来换大学生时再启用——知识入档,代码不搬。 +参考实现用 torchrun + FSDP,有个著名 trick:`FSDP_ACTIVATION_CHECKPOINTING` 环境变量必须在 import accelerate/transformers **之前**设置(train_dist:15-21),且 `TrainingArguments.gradient_checkpointing` 在 FSDP 下是 no-op(train_dist:390-393)。 + +**我们的决策(2026-07-18 讨论定)**:0.6B 乃至 1.7B 学生 4×A800 都用 **DDP**(显存账:1.7B 全套 ~27G/卡,80G 舒适);FSDP 触发点 = **换 4B 学生或序列 >8K**。但"import 前设环境变量"这个坑**今天就消除**:T5 训练脚本头部从第一天起内置 `os.environ.setdefault("FSDP_ACTIVATION_CHECKPOINTING", ...)` 前置块——DDP 下无害 no-op,未来启用 FSDP 时只改 TrainingArguments 字段,核心模块零改动。启用后必须 `nvidia-smi` 实测显存验证生效(分布式配置"设置了但静默无效"是常态,不可信配置)。另:层 2-5 坚持 DDP 还有调试纯度考量——on-policy 生成/ref model 搬运与 FSDP 的交界是参考实现最毛的地方,先保证"出错必是算法错"。 ## 3. 保留 / 替代 / 删除清单(CLAUDE.md §6.2 规定动作)