Databricks 分享把 Qwen 3.8 27B 微调提速 6 倍的调优全过程
Databricks 分享在自家 AI Runtime 上微调 Qwen 3.8 27B 的调优过程,SFT 训练时间从 7 小时 44 分降到 1 小时 17 分,提速 6 倍。torch profiler 显示瓶颈在 CPU 调度而非 GPU,单步 CPU 发起约 171 万次调用;接入 flash-linear-attention 与 causal-conv1d 融合内核后降到 2h05m,再用 1D 序列打包去 padding 降到 1h17m。作者提醒不要依赖 HF Kernel Hub 动态加载内核,版本不匹配会静默回退,且部分内核只实现 forward,训练不可用。
ule、flash attention 3 前反向和 causal-conv1d 内核。 两个值得记住的工程细节: · 不要依赖 HF Kernel Hub 动态加载内核:torch/CUDA 版本不匹配时它会静默回退到未优化路径,你以为什么都没变,其实优化已经失效。推荐直接安装,最好在 Docker 镜像构建时固化。 · 部分内核只实现了 forward,推理可用但训练不可用:选型时必须核对。 优化二:1D 序列打包去 padding → 再 1.6 倍 剩余瓶颈是数据侧的浪费:输入张量必须是矩形,导致每个 batch 内短序列被 padding 到最长序列,2D 矩形里大量格子是无效计算。 理想方案 NestedTensor 只兼容标准注意力;而 flash-linear-attention 要求 1D 打包(concat + position ids) 格式。作者的做法是把 batch 内多个样本拼接成一维,并为每个样本传入正确的 position ids,使注意力 mask 严格限制在样本内部,不发生跨样本泄漏(示例代码在 ai-runtime-cookbook 仓库)。 2h
匹配字段正文