PyTorch
PyTorch 是一个开源的深度学习框架,由 Facebook AI Research 开发,广泛应用于学术研究和工业界。安装
自动安装
访问官网选择配置: https://pytorch.org/get-started/locally/手动安装 GPU 版本
下载地址: https://download.pytorch.org/whl/torch/ 需要下载三个包(注意 Python 版本和 CUDA 版本):torch-2.4.1+cu124-cp312-cp312-win_amd64.whltorchvision-0.19.1+cu124-cp312-cp312-win_amd64.whltorchaudio-2.4.1+cu124-cp312-cp312-win_amd64.whl
验证安装
基础概念
Tensor 张量
自动求导
构建神经网络
简单模型
卷积神经网络
训练模型
先测量,再优化训练
GPU 利用率高,不代表训练高效。NVIDIA 的 GPU 利用率衡量的是采样时间里有 kernel 执行的比例,不是达到峰值算力的比例。Databricks 的一个 Qwen 微调案例在基线平均利用率已达 98% 时,仍把训练时间缩短到约六分之一。这是特定任务的案例,不是你的模型也能提速六倍的承诺。采集短窗口 CPU/GPU trace
用torch.profiler 查看算子数量、CPU 调度、设备执行和 kernel 之间的空隙。下面是一个独立的小例子,需要已安装 PyTorch;有 CUDA 时记录 GPU,否则只记录 CPU。它不下载模型或数据,会在当前目录写出一份 trace。
按瓶颈选优化手段
Modal 的 GPU 术语手册把工作分为计算、内存搬运和其他开销。先把它们当作假设,再通过时间线或设备 profiler 验证:
Databricks 案例中,已有的
flash-linear-attention 和 causal-conv1d 内核消除了大量小算子,减少 padding 又带来额外收益。这不代表这些包适合所有模型,也不代表编译和 CUDA Graphs 普遍不适合分布式训练。
启用快路径前,核对模型/后端支持、GPU 架构、PyTorch/CUDA 兼容性,以及前向和反向是否都已实现。固定可用的环境,并在 trace 中确认目标 kernel 真的出现:安装成功不等于正在使用。用适当的数值容差,与参考路径对照 loss 和梯度。
打包序列时保留训练语义
序列打包能减少 padding,但直接拼接样本可能改变训练语义。只重置position_ids 不是通用的样本隔离机制。 模型和注意力后端必须支持相应的边界元数据或 mask;混合循环层还需要在样本边界隔离状态。
固定版本的 Databricks 实现同时使用了重置后的 position_ids、供完整注意力使用的累计序列长度、供 gated-delta 层使用的分段 ID,以及防止移位后的目标跨样本计算 loss 的掩码;response-only SFT 还会屏蔽 prompt token。这些都是后端相关输入,不能原样照搬到任意模型。
测速度之前,先对照打包与未打包样本,覆盖边界和截断情况。记录非 padding tokens/s、padding 占比、有效 batch size、序列长度分布与验证集质量。打包改变每次优化器更新的 token 数时,还要考虑 batch 与优化调度的变化。比较等量训练工作,并把冷启动/编译耗时与稳态吞吐分开报告。
数据加载
Dataset 和 DataLoader
图像数据增强
保存和加载模型
Jupyter Notebook 配置
创建 PyTorch 专用内核:常用技巧
设置随机种子
查看模型结构
冻结部分层
参考资料
- meng shao:Qwen 训练优化案例 — 2026-10-15 的 Folo 线索
- Databricks:Reducing Qwen training time by 6x on AI Runtime — 特定任务中的性能分析、融合内核与 padding 优化
- Databricks:固定版本训练实现 — 打包元数据与 loss 边界
- PyTorch:Profiler recipe — 采样活动、分步 trace 与开销
- NVIDIA:nvidia-smi 文档 — 利用率指标的定义
- meng shao:推荐 Modal GPU 术语手册 — 2026-10-15 的 Folo 线索;保留术语手册,不收录融资新闻
- Modal:GPU 术语手册——性能瓶颈 — 计算、内存和其他开销
