
2026 年 1 月 29 日,2025 冬季 InfiniTensor 大模型与人工智能系统训练营训练系统系列第四课《训练框架编程基础》开讲。
本节课侧重于深度学习训练相关的概念,以及实际使用 PyTorch 执行训练循环的整个流程。
PyTorch 概述
PyTorch简介:

PyTorch 环境搭建与基础操作
1. 安装建议:
- 推荐使用 Conda 或 venv 创建虚拟环境,避免版本冲突。
- 国内用户安装包时切换清华源。
- Google Colab 平台:提供免费 T4 GPU 算力,内置库安装完备。
2. Tensor 构造:

Autograd 自动求导机制
核心原理:
- 通过记录计算图实现自动求导,构建反向传播逻辑。
- 关键属性:
requires_grad=True的 Tensor 会记录所有计算操作。 - 中间节点(非叶子节点):由叶子节点计算得到,保留反向求导算法于
grad_fn属性。


屏蔽 Autograd:
- 使用
with torch.no_grad()上下文管理器屏蔽梯度追踪。

- 使用
.detach()方法获取不带梯度追踪的新 Tensor。
nn.Module 神经网络模块构建
模块定义:

- 继承
nn.Module类,声明子模块,定义forward方法 - 快速实现顺序结构:使用
nn.sequential
模型管理接口:

parameters():返回需梯度更新的参数迭代器,用于传递给优化器。.to(device):将模型参数转移至指定设备。- 行为模式转换:
.train()与.eval(),分别对应训练与推理模式。
nn.functional 无状态操作与损失函数
无状态操作:

- 与
nn.Module区别:无状态,不自动注册参数,需手动传入参数。 - 典型应用:自定义前向传播逻辑,实现特殊网络结构。
损失函数:

- 定义方式:通过
nn.Module或nn.functional定义。 - 常见损失函数:交叉熵、均方误差、负对数似然等。
- 损失计算:通常输出为标量 Tensor。
优化器与训练流程
优化器(Optimizer):

- 作用:读取模型参数梯度,根据优化策略(如 SGD、Adam)更新参数。
- 关键参数:学习率、动量、梯度衰减等。
- 使用步骤:清零旧梯度(
zero_grad())、反向传播(loss.backward())、参数更新(optimizer.step())。

学习率调度器:
- 作用:动态调整学习率,初期加速收敛,后期防止震荡。
- 常见类型:StepLR、动态调整策略等。
梯度裁剪与累积:
- 梯度裁剪:限制梯度最大范数,增强训练稳定性。

- 梯度累积:模拟大 batch 训练,缓解显存压力。
完整训练循环示例
训练准备:
- 定义模型
- 准备数据集与 DataLoader
- 设置损失函数与优化器
训练流程:
- 模型设置为训练模式(
.train())。 - 枚举每个 batch,执行前向传播、损失计算、反向传播、梯度裁剪(可选)、参数更新。
- 验证阶段:模型设置为推理模式(
.eval()),在no_grad上下文中计算验证损失与准确率。

高级主题与扩展
模型 checkpointing:

混合精度训练:

- 使用
Autocast与GradScaler提升计算效率与减少显存占用。
Torchvision 与 Huggingface 应用:

Megatron-LM 框架介绍:
- 背景:应对大模型训练挑战,如显存限制、计算瓶颈等。

- 核心特性:多种并行策略(张量并行、流水线并行等)、混合精度策略、分布式特性等。

- 使用流程:基于 NGC Docker 环境;使用官方示例脚本(如 BERT、GPT)进行预训练;关键训练参数配置。

总结
本节课通过理论讲解与代码示例相结合,掌握从零开始构建和训练 PyTorch 模型的完整技能栈,并为应对大尺度模型训练的挑战奠定了基础。

💡 学习贴士
更多细节及完整课程内容,请观看直播或查看课程回放。
链接:https://www.infinitensor.com/camp/winter2025
📚 训练营报名持续进行中
扫码报名与加入群聊,或点击 「阅读原文」 直达官网报名

