PyTorch入门引导
欢迎来到啾啾的博客🐱。
记录学习点滴。分享工作思考和实用技巧,偶尔也分享一些杂谈💬。
有很多很多不足的地方,欢迎评论交流,感谢您的阅读和评论😄。
目录
- 引言
- 1 入门介绍
- 1.1 学习资料
- 1.2 一些基本概念关联
- 1.3 前置准备
- 2 术语表
- 2.1 🧠 PyTorch 核心术语表
- 2.2 📦 常用模块速查
引言
为什么要学习PyTorch?
微调、部署、研究都需要。
- 现代AI研究的通用语言基础就是PyTorch。
- 几乎所有的微调工具和库,包括Hugging Face的transformers, peft, trl,其底层都是基于PyTorch构建的。
- 当你需要排查部署中的性能瓶颈、显存溢出(OOM)等问题时,理解模型在PyTorch中是如何加载和计算的,将是解决问题的关键。
1 入门介绍
尝试让读者通过本篇快速认识PyTorch,开始学习PyTorch。
1.1 学习资料
PyTorch官网
《深入浅出PyTorch》教程的资源汇总
《动手学深度学习》
Let’s build GPT: from scratch, in code, spelled out.
1.2 一些基本概念关联
1.3 前置准备
需要对Python有了解。
- 环境准备
经过验证的无冲突版本。
pip install transformers==4.45.2 tokenizers==0.20.3 chromadb==0.5.23
确认是否安装PyTorch
python -c "import torch, sys; print('PyTorch', torch.__version__); print('Python', sys.version)"
2 术语表
让我们一起过一遍PyTorch术语表,以建立基本的认知,方便回顾、查找。
2.1 🧠 PyTorch 核心术语表
术语 | 英文 | 解释 |
---|---|---|
张量 | Tensor | PyTorch 的基本数据结构,类似于 NumPy 的ndarray ,但支持 GPU 加速和自动求导。所有数据(图像、文本、标签等)最终都转换为张量进行处理。 |
自动求导 | Autograd | 自动计算梯度的功能。当你对张量进行运算并调用.backward() 时,PyTorch 会自动构建计算图并计算梯度,用于反向传播。 |
计算图 | Computational Graph | 动态构建的图结构,记录所有张量操作,用于自动求导。PyTorch 是“动态图”框架(每次前向都重新构建)。 |
模型 | Model | 指神经网络结构,通常继承自nn.Module ,包含网络层和前向传播逻辑。 |
层 / 模块 | Layer / Module | 神经网络的基本组成单元,如全连接层、卷积层等。在 PyTorch 中,每个层都是一个nn.Module 的子类。 |
前向传播 | Forward Pass | 输入数据通过模型逐层计算,得到输出结果的过程。由forward() 方法定义。 |
损失函数 | Loss Function | 衡量模型输出与真实标签之间差距的函数,如交叉熵、均方误差等。训练目标是最小化损失。 |
优化器 | Optimizer | 根据梯度更新模型参数的算法,如 SGD、Adam。负责执行parameter -= learning_rate * gradient 。 |
反向传播 | Backward Pass | 利用损失函数对模型参数求导(梯度),为优化器提供更新方向。调用loss.backward() 触发。 |
梯度清零 | Zero Grad | 在每次训练迭代前,需要调用optimizer.zero_grad() 清除上一轮的梯度,防止累积。 |
数据集 | Dataset | 表示数据集合的抽象类,需实现__len__ 和__getitem__ 方法。用于封装样本和标签。 |
数据加载器 | DataLoader | 包装Dataset ,提供批量加载、打乱顺序、多进程加载等功能。训练时从它获取 batch 数据。 |
批大小 | Batch Size | 一次前向/反向传播处理的样本数量。影响内存使用和训练稳定性。 |
训练循环 | Training Loop | 控制整个训练过程的循环结构:遍历数据、前向、计算损失、反向传播、更新参数。 |
验证/测试循环 | Validation/Test Loop | 在训练过程中评估模型性能的循环,不进行反向传播(torch.no_grad() )。 |
设备 | Device | 指定模型和张量运行在 CPU 还是 GPU 上,如'cpu' 或'cuda' 。 |
GPU 加速 | CUDA | 使用 NVIDIA GPU 加速计算。PyTorch 支持通过.to('cuda') 将张量和模型移到 GPU。 |
保存模型 | Save Model | 将训练好的模型权重保存到文件(.pth 或.pt ),常用torch.save() 。 |
加载模型 | Load Model | 从文件恢复模型权重,需先创建相同结构的模型,再调用load_state_dict() 。 |
状态字典 | State Dict | 包含模型所有可学习参数(权重、偏置)的字典,通过model.state_dict() 获取。 |
迁移学习 | Transfer Learning | 使用预训练模型(如 ResNet)作为起点,在新任务上微调。节省训练时间和资源。 |
2.2 📦 常用模块速查
模块 | 用途 |
---|---|
torch | 核心库,包含张量、数学运算、自动求导 |
torch.nn | 构建神经网络的类和函数(如层、损失函数) |
torch.optim | 优化器(SGD、Adam 等) |
torch.utils.data | 数据处理工具(Dataset、DataLoader) |
torchvision | 计算机视觉专用库,含数据集、模型、图像变换 |
torchvision.transforms | 图像预处理(归一化、裁剪、转张量等) |