学习资料
InfiniTensor 冬季训练营训练系统第四课《训练框架编程基础》
发表于:

2026 年 1 月 29 日,2025 冬季 InfiniTensor 大模型与人工智能系统训练营训练系统系列第四课《训练框架编程基础》开讲。

本节课侧重于深度学习训练相关的概念,以及实际使用 PyTorch 执行训练循环的整个流程。

PyTorch 概述

PyTorch简介:

PyTorch 环境搭建与基础操作

1. 安装建议:

  • 推荐使用 Conda 或 venv 创建虚拟环境,避免版本冲突。
  • 国内用户安装包时切换清华源。
  • Google Colab 平台:提供免费 T4 GPU 算力,内置库安装完备。

2. Tensor 构造:

Autograd 自动求导机制

核心原理:

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

屏蔽 Autograd:

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

  1. 使用 .detach() 方法获取不带梯度追踪的新 Tensor。

nn.Module 神经网络模块构建

模块定义:

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

模型管理接口:

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

nn.functional 无状态操作与损失函数

无状态操作:

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

损失函数:

  • 定义方式:通过 nn.Modulenn.functional 定义。
  • 常见损失函数:交叉熵、均方误差、负对数似然等。
  • 损失计算:通常输出为标量 Tensor。

优化器与训练流程

优化器(Optimizer):

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

学习率调度器:

  • 作用:动态调整学习率,初期加速收敛,后期防止震荡。
  • 常见类型:StepLR、动态调整策略等。

梯度裁剪与累积:

  • 梯度裁剪:限制梯度最大范数,增强训练稳定性。

  • 梯度累积:模拟大 batch 训练,缓解显存压力。

完整训练循环示例

训练准备:

  • 定义模型
  • 准备数据集与 DataLoader
  • 设置损失函数与优化器

训练流程:

  • 模型设置为训练模式(.train())。
  • 枚举每个 batch,执行前向传播、损失计算、反向传播、梯度裁剪(可选)、参数更新。
  • 验证阶段:模型设置为推理模式(.eval()),在no_grad上下文中计算验证损失与准确率。

高级主题与扩展

模型 checkpointing:

混合精度训练:

  • 使用 AutocastGradScaler 提升计算效率与减少显存占用。

Torchvision 与 Huggingface 应用:

Megatron-LM 框架介绍:

  • 背景:应对大模型训练挑战,如显存限制、计算瓶颈等。

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

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

总结

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

2025冬季训练营课程表

💡 学习贴士

更多细节及完整课程内容,请观看直播或查看课程回放。

链接:https://www.infinitensor.com/camp/winter2025

📚 训练营报名持续进行中

扫码报名与加入群聊,或点击 「阅读原文」 直达官网报名