一、实验开发中常见的几个词

概念 中文理解 最简单解释 主要作用
Checkpoint 检查点 / 存档 像游戏存档 保存模型当前状态,以后继续训练或重新加载
Toy Version 玩具版 / 极简版 把真实问题缩小 用很小的数据和简单场景先验证思路
Smoke Test 冒烟测试 先看看能不能跑 用极小数据快速检查程序有没有明显错误
WP Work Package 工作包 / 任务阶段 把一个大实验拆成 WP1、WP2、WP3 等
Freeze 冻结 确定以后不再变化 保证不同实验使用同一份数据
概念 中文 / 含义 主要功能 通俗理解
Host / Host Machine 宿主机 真正提供 CPU、内存、GPU、磁盘等资源的电脑或服务器 真正的那台电脑。沙箱、Conda 环境、Python 程序最终都运行在它上面
Sandbox 沙箱 给程序提供一个受限制、隔离的运行环境,限制它访问系统、GPU、文件、sudo 等资源 像把程序关在一个安全小房间里。房子里虽然有 GPU,但这个房间可能没有访问 GPU 的钥匙
/dev/nvidia* Linux 中 NVIDIA GPU 的设备节点 让程序通过操作系统访问 NVIDIA GPU 可以理解成程序访问 GPU 的入口/门。如果沙箱里没有这些入口,程序可能看不到 GPU
GPU Graphics Processing Unit,图形处理器 大规模并行计算,尤其擅长矩阵运算、深度学习训练 真正干计算活的硬件。RTX 4090 就是一种 GPU
RTX 4090 NVIDIA 的一款 GPU 型号 可以用于游戏、图形渲染以及深度学习训练 就像 CPU 有 i7、i9,不同 GPU 也有不同型号,RTX 4090 是具体型号
VRAM / GPU Memory 显存 GPU 工作时临时存放模型参数、数据、梯度和中间结果 GPU 自己的内存。RTX 4090 大约有 24GB 显存
CUDA OOM CUDA Out Of Memory 表示运行 GPU 程序时显存不够 就像桌子已经摆满东西了,再放东西就放不下。通常要减小 batch size
NVIDIA Driver NVIDIA 显卡驱动 让操作系统和软件能够正确识别、控制 NVIDIA GPU GPU 和软件之间的控制员 / 翻译员。有 GPU 但驱动有问题,也可能用不了
nvidia-smi NVIDIA GPU 状态查看命令 查看 GPU 型号、驱动版本、显存使用、GPU 利用率、使用 GPU 的进程等 相当于 GPU 的仪表盘。想知道显卡现在怎么样,首先经常运行它
GPU-Util GPU Utilization,GPU 利用率 表示 GPU 最近有多大比例的时间在进行计算 例如 95% 可以理解为 GPU 很忙;0% 表示当前基本没在计算,但不能仅靠它判断程序是否有问题
CUDA NVIDIA 的 GPU 通用计算平台 让程序可以利用 NVIDIA GPU 进行深度学习、矩阵计算等 让软件使用 NVIDIA GPU 计算的一套技术体系。GPU 是硬件,CUDA 不是硬件
PyTorch 深度学习框架 搭建 Transformer、神经网络,完成训练、反向传播、优化等 你写模型时真正经常直接使用的深度学习工具,例如 import torch
device 计算设备 指定模型和数据到底放 CPU 还是 GPU 上计算 device="cpu" = CPU 算;device="cuda" = NVIDIA GPU 算
torch.cuda.is_available() PyTorch 的 GPU 可用性检查 判断当前 PyTorch 是否能够正常使用 CUDA GPU 返回 True = 当前 PyTorch 能用 GPU;False = 当前不能用,但不一定代表显卡坏了
torch.cuda.get_device_name(0) 查看 PyTorch 识别到的 GPU 查看第 0 张 CUDA GPU 是什么型号 例如输出 NVIDIA GeForce RTX 4090,说明 PyTorch 已经真正识别到了这张显卡
torch.version.cuda PyTorch 对应的 CUDA 版本 查看当前安装的这份 PyTorch 是按照哪个 CUDA 版本构建的 主要用于检查 PyTorch 和 CUDA 的版本关系
CUDA Toolkit CUDA 开发工具包 提供 CUDA 编译器、开发库、头文件和各种开发工具 如果 CUDA 是一套 GPU 计算体系,那么 Toolkit 就是 NVIDIA 提供的开发工具箱
nvcc NVIDIA CUDA Compiler,CUDA 编译器 编译 CUDA 程序 类似 Java 有 javac,CUDA 代码也有自己的编译器 nvcc
nvcc --version 查看 CUDA 编译器版本的命令 查看本机 CUDA Toolkit / nvcc 的版本 主要检查 CUDA Toolkit 版本,和 nvidia-smi 看的东西不完全一样
Conda 环境管理 + 软件包管理工具 创建独立 Python 环境,并安装、管理各种软件依赖 相当于给不同项目准备独立的软件房间,防止 Python、PyTorch 等版本互相冲突
Conda Environment Conda 环境 给某个项目单独保存 Python 和各种依赖版本 例如项目 A 用 Python 3.9,项目 B 用 Python 3.11,可以分别放在两个 Conda 环境里
conda create 创建 Conda 环境 新建一个独立的软件环境 例如 conda create -n test python=3.9 = 创建叫 test 的 Python 3.9 环境
conda activate 激活 Conda 环境 切换到某个 Conda 环境 conda activate test = 现在开始使用 test 这个环境里的 Python 和软件包
conda deactivate 退出当前 Conda 环境 离开当前环境 相当于从这个软件房间里出来
environment.yml Conda 环境配置文件 记录实验需要哪些 Python 版本、软件包和版本 相当于实验环境的配方单。别人拿到它,可以按照配方重新搭建环境
conda env create -f environment.yml 根据配置文件创建环境 自动按照 environment.yml 安装整个实验环境 相当于告诉 Conda:照着这张配方单给我搭一个环境
pip Python 包管理工具 安装和管理 Python 软件包 例如 pip install numpy 就是安装 numpy。它主要负责安装 Python 包
Conda vs pip 两种常见的软件管理工具 Conda 擅长管理整个环境,也能装包;pip 主要安装 Python 包 可以简单记:Conda 管“房间”,pip 往房间里“装东西”
Conda vs Sandbox 两种完全不同的“隔离” Conda 解决软件版本冲突;Sandbox 解决权限和安全问题 Conda:你用什么软件;Sandbox:你有权访问什么东西

最核心的关系,你只需要记住这一条:

Python程序 → PyTorch → CUDA → NVIDIA Driver → GPU

而另外两个在旁边负责管理:

Conda:管理 Python、PyTorch 等软件环境。
Sandbox:管理程序有没有权限访问 GPU、系统文件、sudo 等资源。

比如你实际训练 Transformer 时,可以想成:

Conda 环境(Python 3.9、PyTorch、各种依赖)↓

Python训练代码↓

PyTorch↓

CUDA↓

NVIDIA Driver↓

RTX 4090 GPU↓

24GB 显存

Sandbox 像最外面的一层门禁:即使 RTX 4090、驱动、CUDA 都正常,如果沙箱不给访问 GPU 的权限,里面的程序仍然可能看不到 GPU。

最后给你一个超简版速查表

看到这个词 第一反应
GPU 做大量并行计算的硬件
RTX 4090 一种 NVIDIA GPU
VRAM / 显存 GPU 自己的内存
Driver 控制 GPU 的驱动
CUDA 让程序使用 NVIDIA GPU 计算
PyTorch 深度学习框架
nvidia-smi 查看 GPU 状态
nvcc CUDA 编译器
Conda 管理独立软件环境
pip 安装 Python 包
environment.yml 环境安装配方
Sandbox 权限受限的安全运行环境
Checkpoint 模型存档
Toy Version 极简小版本
Smoke Test 快速检查能不能跑
KG 知识图谱
Manifest 数据清单
MovieLens ID 数据集原始电影编号
Model ID 模型重新分配的连续编号
Padding 补空位
input_ids 输入模型的数据编号
attention_mask 标出哪些位置有效
lengths 真实数据长度
labels 正确答案
Transformer 根据序列学习和预测
Causal Transformer 只能看过去预测未来
Score 模型预测分数
Candidate 最终候选项
Top-K 取分数最高的前 K 个

这张最后的表其实最适合你保存下来,后面做实验遇到这些词直接查就行。

更多推荐