深度学习训练从设备到调参一文速通:GPU、CPU、显存、batchsize、占有率

面向想真正搞懂「为什么训练有快有慢」的读者。尽量用人话讲清楚;专业名词第一次出现都会附上一句解释。

@

目录


一、开篇:为什么同一段代码,速度能差几十倍?

你可能遇到过这种事:

  • 同一份 PyTorch / TensorFlow 训练脚本
  • 换一台机器,一个 epoch(把训练集完整过一遍)从 40 分钟变成 3 分钟
  • 或者:显卡看着「很忙」,但训练就是不快;曲线抖来抖去,也不知道算不算正常

这篇文章会按这个顺序讲清楚:

  1. CPUGPU 本质差在哪
  2. 常见硬件大概处在什么「档位」,适合干什么
  3. batch size、学习率、num_workers、显存等,和「每个 epoch 要多久」到底什么关系
  4. 真实训练里怎么调:例如「显存没满但 GPU 满了」还有没有必要继续拧
  5. 为什么有的任务 GPU 利用率钉在 100%,有的却在 80%~100% 之间横跳——即便超参已经调到极限

先记住一句总原则:

训练速度是系统工程,不是单看显卡型号。
GPU 负责「算」,CPU、磁盘、数据管道、多卡通信、日志频率都会抢时间。


二、CPU 和 GPU 到底差在哪?(通俗版)

2.1 一个比喻

把深度学习训练想成「流水线做题」:

角色 像什么 擅长什么
CPU(中央处理器) 少数很强的全能员工 复杂判断、分支逻辑、调度、读文件、解码图片
GPU(图形处理器,深度学习里主要当并行计算器) 很多专做同一件事的工人 同时做大量相似计算:矩阵乘法、卷积、注意力

深度学习训练里,最吃时间的通常是「海量重复的数值计算」。这类活 GPU 往往远快于 CPU。
但若后勤跟不上(数据读得慢、预处理太重),GPU 再强也会 空等

2.2 关键差异对照

维度 CPU GPU
核心数量 少(通常几核到几十核),单核很强 多(成千上万个轻量核心)
工作方式 擅长串行、复杂控制流 擅长大规模并行、规则计算
内存 系统内存(容量大,带宽相对低) 显存 / VRAM(显卡自带的高速内存;容量通常更小,但读写更快)
在训练中的角色 数据准备、调度、部分无法并行的活 前向、反向、大部分张量运算

显存(VRAM):可以理解为「GPU 桌上的工作台」。模型参数、中间结果、梯度等大多要放在这张桌上。桌子不够大,就放不下更大的 batch,甚至直接报 OOM(Out Of Memory,显存不足)。

2.3 三个常见误区

  1. 「有 GPU 就一定比 CPU 快」
    模型很小、batch 很小,或数据加载极慢时,GPU 优势会被拖没,有时差距很小。

  2. 「显存大 = 算力强」
    显存决定「能塞多大」,算力决定「算得多快」。两者相关,但不是一回事。

  3. 「核心数量多就一定快」
    还要看显存带宽、是否支持高效精度(如 Tensor Core)、框架和驱动是否用得上。


三、算力怎么理解:别只看宣传数字

3.1 纸面算力 vs 真实训练速度

FLOPS(Floating Point Operations Per Second):每秒能做多少次浮点运算。厂商常写 TFLOPS(每秒万亿次)。

宣传页上的峰值 TFLOPS,像「百米冲刺理论成绩」;真实训练更像「全马拉松配速」,会受这些因素影响:

  • 用的数值精度(算得精细还是粗糙一点)
  • 算子是否高效、有没有融合
  • 数据能不能及时喂上
  • 多卡时通信是否拖后腿

所以:不要只拿峰值算力横向比「谁训练一定更快」。

3.2 精度:为什么 FP16 / BF16 常更快

常见精度(简化理解):

名称 一句话理解 对训练的常见影响
FP32 单精度,更「精细」 稳,但更慢、更吃显存
FP16 半精度,更「省」 通常更快、更省显存;少数情况数值不稳
BF16 另一种半精度风格,动态范围更友好 很多大模型训练更爱用,速度也常不错
TF32 部分 NVIDIA 架构上的折中格式 接近 FP32 体验,吞吐更高(视硬件而定)

混合精度训练(AMP):关键计算用更快的低精度,关键累加/敏感部分保留更高精度。常见效果是:更快、更省显存,多数任务可用。


四、常见 CPU / GPU 型号与应用场景

4.1 CPU:训练里真正管什么?

在深度学习训练中,CPU 很少是「主计算器」,更像 后勤司令

  • 从磁盘读数据
  • 解码图片 / 音频
  • 做数据增强(随机裁剪、颜色抖动等)
  • 多进程把 batch 准备好,送给 GPU

因此:

  • CPU 太弱、核太少、磁盘太慢 → GPU 利用率容易上不去
  • num_workers(数据加载进程数)能开多少,也受 CPU 与内存制约

桌面 / 工作站常见 CPU(举例)

定位 常见系列 训练时你更该关心什么
个人学习机 Intel Core i5/i7/i9、AMD Ryzen 5/7/9 核数够不够喂 DataLoader;内存建议 32GB 起,更舒服是 64GB
创作/小工作室主机 更高端的 Core / Ryzen,或 Threadripper 多核 + 多通道内存,适合多卡机器当「宿主」
云服务器 / 训练节点 Intel Xeon、AMD EPYC 大内存(128GB~1TB+)、长时间稳定、PCIe 通道够给多张 GPU

人话版选型
GPU 决定「算得快不快、模型塞不塞得下」;CPU 决定「数据能不能及时端上桌」。做 CV、重增强、视频时,CPU/磁盘差会非常明显。


4.2 先看懂型号怎么读:例如「4060-12GB」是什么意思?

云平台、机房报价、同学口中的配置,经常写成这种短标签:

RTX 4060-12GB4090-24GA100-80GBH100-80GB

可以拆成两段理解:

片段 含义 例子
前面的型号名 哪一代、哪一档显卡 4060 ≈ GeForce RTX 4060;4090 ≈ RTX 4090;A100/H100 是数据中心卡
后面的容量 显存(VRAM)多大 12GB / 24GB / 80GB = 这张卡自己的高速内存有多大

所以:

  • 4060-12GB ≈「RTX 4060 这一档,并且显存是 12GB」

  • 4090-24GB ≈ 消费级旗舰档,24GB 显存,单卡训练很常见的「顶配桌面卡」

  • A100-80GB ≈ 数据中心 A100,80GB 显存,适合更大模型 / 更大 batch / 多卡训练

再补三个容易混的点:

  1. 型号世代 ≠ 显存
    新一代不一定显存更大;同一代里也常有「同名不同显存」。
  2. 带 Ti / SUPER 通常比不带的更强一档
    如 4060 Ti 通常强于 4060;但最终仍要看显存和你的模型是否 OOM。
  3. 消费级 vs 数据中心
    • 消费级(GeForce RTX 40/50 系):买得到、性价比高,单机常用
    • 数据中心(A100/H100/H200、L40S 等):更贵、更稳、更好多卡扩展,云上常见

4.3 GPU:按定位看具体型号(2024~2026 常见口径)

下面用「代表型号」帮助建立坐标。具体哪张卡还能买到、云上叫什么实例名,以你当时平台为准;选型逻辑不变:先看显存够不够,再看算力与预算。

A. 学习 / 入门(先求跑通)

常见写法 大概定位 更适合 不太适合
RTX 4050 / 4060(常见 8GB) 入门消费级 小 CNN、课程作业、很轻的微调 稍大的 LLM 全量微调
RTX 4060 Ti(常见 8GB / 16GB) 入门偏主流 16GB 版做小模型/部分 LoRA 更从容 显存仍可能卡住 7B 以上「舒服训练」
云上 T4-16GB、L4-24GB 入门云卡 练手、小任务、推理试验 追求极致训练吞吐

B. 主流单卡训练(性价比甜蜜区)

常见写法 显存直觉 更适合
RTX 4070 / 4070 SUPER(常 12GB) 中等 中等 CV、中小 NLP
RTX 4070 Ti / Ti SUPER(常见 16GB) 更舒服 CV + 一部分 7B 级 LoRA
RTX 4080 / 4080 SUPER(常见 16GB) 主流偏强 更大 batch、更顺的单卡训练
RTX 5070 / 5070 Ti 等同级新卡 看具体 GB 同理:先确认显存,再比世代

C. 高端单卡(大显存 + 高带宽)

常见写法 显存直觉 更适合
RTX 4090-24GB 消费级旗舰常见顶配 较大模型微调、更长序列、更大 batch
RTX 5090(若平台提供,注意其标称显存) 新一代旗舰 同定位,通常更强;仍以显存与框架支持为准
RTX 6000 Ada / 专业视觉卡(常见 48GB 档) 专业卡大显存 单卡塞更大模型,工作站常见

D. 数据中心 / 云上训练卡

常见写法 显存直觉 更适合
A100-40GB / A100-80GB 大模型训练/微调、多卡起步款常客
H100-80GB 更大算力 大模型训练主流之一
H200(更高显存带宽/容量规格,视平台) 更大更猛 更大模型、更长上下文
L40S-48GB 偏推理也能训 一部分训练 + 推理混合负载
AMD MI300X 等 需确认 ROCm/框架 生态匹配时可用,兼容性要先验证

E. 生态差异(知道即可)

  • NVIDIA + CUDA:深度学习工具链最成熟,坑最少
  • AMD + ROCm:在进步,但框架版本与算子支持要自己核实
  • Apple Silicon(M 系列):本机开发友好;大规模训练生态与 CUDA 仍不同

4.4 服务器上常见「搭配」长什么样?怎么选?

真实机房/云实例,很少只写一张 GPU,而常是一整套:

CPU × N 核 + 内存 XXX GB + GPU 型号-显存 × 卡数 + 系统盘/数据盘

常见搭配示例(帮助建立直觉)

场景 常见搭配直觉 为什么这样搭
个人学习 / 小实验 6~12 核 CPU + 32~64GB 内存 + 1× RTX 4060/4070(8~16GB) CPU 够喂数据即可;显存优先别太寒酸
单卡认真训 CV / 中等模型 12~24 核 + 64~128GB + 1× 4090-24GB1× 4080-16GB 24GB 少很多 OOM;内存给 DataLoader 和缓存留余量
单机多卡微调 较高核数 CPU + 256GB 内存 + 2/4× 4090-24GB2/4/8× A100/H100 CPU/内存要随卡数涨,否则多卡也会「喂不饱」
大模型多卡训练 Xeon/EPYC + 512GB~1TB+ + 8× A100-80GB / H100-80GB(或同级) 显存池与互联更关键;消费级多卡集群通常不是最优解
偏推理服务 可选用 L4/L40S/H100 等 + 足够 CPU 做请求调度 目标变成立延迟/吞吐/成本,不一定死磕训练卡

选配时按这个顺序想(实用)

  1. 先定模型与精度:显存够不够?
    • 8GB:小模型、练手
    • 12~16GB:中等训练更常见的「能干活」区间
    • 24GB:很多单卡认真训练的舒适区
    • 40/80GB:大模型与更大 batch / 更长上下文
  2. 再看是 1 卡还是多卡
    • 单卡跑得下,就先单卡(简单)
    • 单卡死活 OOM,再考虑更大显存卡或多卡并行
  3. 然后配 CPU 与内存
    • 经验直觉:GPU 越多、数据增强越重,越要更多 CPU 核与内存
    • 内存过小会出现:workers 开不高、系统开始换页(变极慢)
  4. 最后看磁盘
    • 训练集很大时,慢盘会让 GPU 利用率上不去
    • 「GPU 很贵但盘很烂」是常见亏法

五、一个 epoch 要多久?先把账算清楚

5.1 把时间拆开(流水线视角)

一个 epoch 的时间,大致可以想成:

一个 epoch 的时间 ≈ 步数 ×(准备数据时间 + GPU 计算时间 + 同步/通信时间 + 杂项时间)

其中:

  • 步数 ≈ 样本总数 ÷ batch size(每步喂给模型多少条样本)
    若用了 梯度累积(gradient accumulation:多小步攒成一次真正更新),逻辑 batch 和物理 batch 还要分开看。
  • 准备数据:CPU 读盘、解码、增强、组 batch
  • GPU 计算:前向 + 反向 + 优化器更新
  • 同步/通信:多卡时要把梯度对齐,会等人
  • 杂项:打印日志、验证集评估、存 checkpoint、往监控平台传数据

所以:

  • batch 变大 → 每步通常更慢一点,但步数变少;GPU 往往更「吃得饱」
  • 数据太慢 → 步数怎么减都救不了,GPU 会空等

5.2 该看哪些速度指标?

指标 含义 什么时候有用
steps/s 每秒多少训练步 看 step 是否变快
samples/simages/s 每秒处理多少样本 跨不同 batch 比吞吐更公平
tokens/s 每秒处理多少 token(文本常用) 语言模型训练/微调
每个 epoch 分钟数 墙钟时间 最终体感;但改 batch 后要结合吞吐一起看

只盯 epoch 时间容易误判:batch 从 8 改到 32,epoch 变快了,不等于「同样更新质量下更高效」,还要看收敛是否变了。


六、关键旋钮和训练速度的关系

下面每个旋钮都按同一结构讲:是什么 → 怎么影响速度 → 调大/调小会怎样 → 副作用

6.1 Batch Size(批大小)

是什么:每一步拿多少样本一起算。

对速度

  • 太小:GPU 吃不饱,利用率低,samples/s 差
  • 合适:通常更能打满 GPU,整体吞吐上升
  • 太大:显存不够(OOM),或收益递减(已经算力打满后再加大,加速有限)

对效果

  • 影响梯度噪声和泛化,不是「只改速度」的纯工程旋钮
  • 常需配合学习率调整

直觉:batch 是「每次炒多少菜」。锅(GPU)太大、菜太少,火候浪费;一次太多,灶台(显存)放不下。

6.2 Learning Rate(学习率)

是什么:每步参数更新的步长。

对速度(墙钟)

  • 几乎不直接决定 GPU 算得快不快
  • 但决定「同样时间内 loss 有没有降下去」——这是 有效训练效率

常见关系

  • batch 显著变大后,原学习率可能偏小/偏大,需要重新找
  • warmup(先用较小学习率热身再升上去):减少前期不稳定

一句话:学习率管的是「走得稳不稳、路对不对」,不是「引擎转速表」。

6.3 num_workers / max workers(数据加载进程数)

是什么:多少个后台进程帮你准备 batch(PyTorch DataLoader 里常见)。

对速度

  • 太少:GPU 经常等数据,利用率低或锯齿明显
  • 合适:数据预取跟上计算
  • 太多:进程争抢 CPU/内存,反而变慢,甚至把机器拖死

相关开关(知道即可)

  • pin_memory:让主机到显卡的拷贝更顺一些(常见可开)
  • persistent_workers:减少每个 epoch 反复创建进程的开销

6.4 显存(VRAM)

显存主要花在:

占用项 一句话
参数 模型本身的权重
激活 前向中间结果(反向时常还要用)
梯度 反向传播算出来的「怎么改参数」
优化器状态 如 Adam 会额外存一些动量统计,往往很吃显存
临时缓冲 框架和工作区零碎开销

显存决定你能不能开更大的 batch、更长的序列、更大的模型。
省显存的常用手段(对速度的影响可正可负):

  • 混合精度:常又省又快
  • 梯度检查点(gradient checkpointing):省激活显存,但通常更慢(用时间换空间)
  • 梯度累积:用多次小 batch 模拟大 batch,墙钟通常更慢或差不多,但能「逻辑上更大」
  • 离载 / ZeRO 等:多卡或 CPU 卸载,复杂,可能换来可运行性,吞吐不一定升

6.5 其它同样重要的旋钮

旋钮 对速度的典型影响
序列长度 / 图像分辨率 往往比「多几层」更伤时间;注意力类还可能随长度明显变慢
模型宽度/深度 更大通常更慢、更吃显存
优化器 AdamW 等比简单 SGD 更吃显存和计算
多卡 DDP/FSDP 算力叠加,但有通信成本;卡越多越不等于线性加速
验证与日志频率 过于频繁会显著拉长「看起来一个 epoch」的时间
磁盘与数据格式 网络盘、小文件海、实时重解码,都可能让 GPU 饿死
编译优化(如 torch.compile 有时明显加速,有时收益有限或编译期很痛

6.6 一张总表:旋钮主要影响什么

旋钮 主要影响速度? 主要影响显存? 主要影响收敛?
batch size 中~强
learning rate 弱(墙钟) 几乎无
num_workers 强(数据瓶颈时) 间接(主机内存) 基本无
混合精度 通常小,偶尔不稳
梯度累积 中(常变慢或持平) 可降低峰值 影响逻辑 batch
序列长度/分辨率 看任务
验证/日志频率 中~强 无(但影响你看到的曲线)
多卡通信 强(扩展效率) 视策略 间接

七、实战调参:训练时最常见的几种情况

7.1 显存没跑满,但 GPU 利用率已经接近 100%

现象
nvidia-smi 里显存还空着一块,但 GPU-Util 长期很高(例如 95%~100%)。
在这里插入图片描述

原因(人话)
计算侧已经比较满了。瓶颈更可能是「算力/内核效率」,而不是「还能再塞更多样本进显存」。

怎么调

动作 预期
继续猛加 batch 常常 收益有限;可能轻微提升吞吐,也可能几乎不变,还更靠近 OOM
开混合精度 往往 有用:同样时间内算得更多,有时显存占用结构也变化
检查是否有多余同步(频繁 .item()、过多打印) 有时有用
换更高效实现 / 编译 任务相关,可能有用
只为了「显存占用好看」去加 batch 通常没用,甚至有副作用

结论
不一定能继续提高效率。 显存空 ≠ 你必须把它填满。先看 samples/s 有没有随 batch 上升;若几乎不动,就别为填显存而填。


7.2 显存爆了(OOM),GPU 利用率并不高

现象
一开训或一加大配置就 OOM;偶尔能跑时,GPU-Util 也不高。

原因
桌子(显存)先满了,还没轮到「算力被打满」。常见:batch 过大、序列过长、激活太大、优化器状态太肥。

怎么调(常见优先级)

  1. 降 batch size
  2. 用梯度累积维持逻辑 batch
  3. 开混合精度
  4. 开 gradient checkpointing(更慢但更省)
  5. 缩短序列 / 降低分辨率
  6. 换更省显存的微调方式(如 LoRA)或并行策略

结论
这类调参 非常有用:先让任务稳定跑起来,再谈加速。很多时候「能用更大有效 batch 稳定训练」后,利用率反而升上去。


7.3 GPU 利用率长期只有 20%~50%

现象
GPU 像在摸鱼;CPU 可能很忙,或磁盘灯狂闪。

原因
多半是 数据喂不上,或模型/batch 太小吃不饱 GPU。

怎么调

排查 动作
数据管道 适当增大 num_workers,打开 prefetch / persistent_workers
增强太重 减轻 CPU 端 augmentation,或缓存处理后的数据
存储慢 换本地高速盘、减少海量小文件随机读
模型太小 增大 batch,让 GPU 有足够计算量

结论
若确认是数据瓶颈,调 workers/存储/预处理 通常很有用;若已经是小模型小任务,利用率低可能「正常」,硬追 100% 意义不大。


7.4 显存和 GPU「看起来都挺满」,epoch 还是慢

现象
监控数字都好看,但一个 epoch 耗时离谱。

可能原因

  • 验证太勤、checkpoint 太勤
  • 日志/可视化同步太重
  • 多卡在等通信
  • 代码里有隐藏的 CPU↔GPU 来回拷贝

怎么调
先临时关掉或大幅降低验证与日志频率,看 epoch 时间是否立刻下降——这是最快的对照实验。

结论
可能有用。 很多「训练慢」其实是「训练以外的事太多」。


7.5 速度还行,但 loss 不降 / 一训练就散

现象
吞吐不错,模型学不会或 NaN。

原因
这是 有效训练 出问题,不是算力没打满。常见:学习率过大/过小、batch 大改后 LR 没跟上、混合精度不稳定、数据有问题。

怎么调
回退到更稳的 LR、加 warmup、先关 AMP 对照、检查标签与预处理。

结论
只优化 GPU 利用率 没用;这时应优先修收敛。


八、情况解惑:GPU 利用率为什么有时稳、有时横跳?

这是很多人调到「极限」后仍然困惑的点:

  • 任务甲:GPU 曲线几乎一直贴在 100%
  • 任务乙:同样把 batch、workers 等拧到极限,却在 82% → 100% → 91% → 100% 之间横跳

先说结论:

两种都可能完全正常。
GPU-Util 不是「成绩单满分才算调好」,它是采样出来的忙碌比例;不同任务的「一步」结构不同,曲线形态本就可以不同。

8.1 你在看的 GPU-Util 到底是什么?

nvidia-smi 为例,GPU-Util 大致表示:在采样窗口里,GPU 有多少比例的时间被认为在忙。

不是

  • 「Tensor Core 用到了百分之几」的精确度量
  • 「已经达到理论算力上限」的证明

所以:

  • Util 100%:很忙,但不等于无法再优化吞吐
  • Util 在 80%~100% 抖:可能只是「忙一阵、空一瞬」的交替被采样放大了

更可靠的搭档指标是:samples/s 或 tokens/s 是否稳定

8.2 情况 A:长时间几乎钉死在 ~100%

常见含义
计算阶段持续很满,数据准备和杂项占比相对小。

常见任务特征

  • 计算很重:大矩阵、较长序列的 Transformer 主体计算
  • batch / 序列足够大
  • 预处理相对轻
  • 单卡或通信开销可控

注意
即便钉在 100%,混合精度、更好的内核、减少额外同步,仍可能提升 tokens/s;只是 Util 数字未必再往上「涨」,因为它已经顶格了。

8.3 情况 B:在 80%~100% 之间横跳

核心解释(人话)
训练的一步很少是「纯计算永不间断」,更像:

算一阵 → 等数据 / 做同步 / 写日志 / 换kernel → 再算一阵

监控工具按时间抽样,就会看到这种锯齿。

常见触发因素(不必同时存在)

因素 为什么会让曲线抖
数据管道间歇性跟不上 偶发读盘慢、解码慢、增强忽然变重
变长序列 / 动态 shape 有的 step 很重,有的 step 较轻
重数据增强 CPU 端耗时波动大
周期性验证、保存、日志 规律性「掉一截」或抖动
多卡集合通信 在等最慢的那张卡
很多短 kernel 切换 采样分辨率下更容易看起来乱跳
功耗/温度导致频率波动 Util 仍高,但实际吞吐在变(曲线与速度都可能不稳)

重要提醒
把超参调到极限后仍然横跳,非常常见,尤其在 CV 重增强、视频、复杂 CPU 管道、多卡任务里。
这不等于你没调好。

8.4 横跳时还要不要继续调?

用这个口诀:

曲线丑但吞吐稳 → 多半没事;曲线抖且速度也抖 → 再查瓶颈。

观察 建议
在 80%~100% 轻抖,samples/s 很稳 可接受,别为了曲线好看过度调参
经常掉到很低(如突然 10%~30%),吞吐大起大落 按第七章查数据、日志、验证、通信
想确认是不是数据导致 临时用缓存数据 / 关掉重增强,看抖动是否明显收敛
想确认是不是日志/验证 大幅降低频率做对照

8.6 两个小实验(建立直觉)

  1. 同一模型,关掉重增强,改用预缓存
    • 若横跳明显变顺:说明之前主要是数据管道波动
  2. 对比「很大计算量的 step」vs「很小模型 + 很小 batch」
    • 后者即使 workers 拉满,也更容易抖,因为一步太短、空隙占比更高

九、多卡训练:是什么、什么时候用、怎么用、有没有必要

前面大多默认「一张 GPU」。实际工作里你很快会听到:多卡、DDP、八卡机器、模型并行


9.1 多卡是什么?

多卡:一台机器(或多台机器)上同时用 两张及以上 GPU 一起完成同一次训练。

可以把它想成:

  • 单卡:一个厨师做完整桌菜
  • 多卡:几个厨师分工,争取更快上菜

但多卡不是「卡数 × 速度」这么简单,因为还要:

  • 分工:每张卡各自算一部分
  • 对齐:大家算完的结果要汇总、同步,不然模型会各学各的
  • 等待:最慢的那张卡会拖慢整组(木桶短板)

所以多卡的本质是:

用更多算力/显存换墙钟时间,同时付出通信、工程复杂度和调度成本。


9.2 多卡常见两种「分工方式」

(1)数据并行(最常见,优先理解)

数据并行(Data Parallel):每张卡都有一份(或逻辑上等价的)模型副本,但吃的数据不同。

  • 卡 0 吃 batch 的一部分
  • 卡 1 吃另一部分
  • 各自算梯度后,再 同步/平均,一起更新

PyTorch 里现在最常用的落地方式是 DDP(Distributed Data Parallel,分布式数据并行):比老式的 DataParallel 更高效、更标准。

(2)模型并行 / 显存并行(模型单卡塞不下时)

当模型大到 一张卡的显存都放不下,就不能只靠「多卡各吃一点数据」,而要把模型本身拆开:

名称 一句话 什么时候会听到
张量并行(Tensor Parallel) 同一层计算拆到多卡 超大 Transformer
流水线并行(Pipeline Parallel) 不同层放不同卡,像流水线 很深很大的模型
FSDP / ZeRO 等 参数、梯度、优化器状态分片存,省显存 大模型微调/训练常见

对大多数 CV、中小 NLP、LoRA 微调:精通 数据并行(DDP) 就够用。
只有单卡怎么挤都 OOM,才认真上模型并行/FSDP 这类方案。


9.3 什么时候会用到多卡?

按优先级想,通常是这些信号:

情况 A:单卡太慢,要缩短墙钟时间

情况 B:单卡显存不够(OOM)

情况 C:任务天然需要更大全局 batch 或更大吞吐


十、实战:选择服务器

在这里插入图片描述

租 GPU 云主机时,页面上密密麻麻的「A100-80GB」「3090-24G」「NVLink」「CUDA 13.0」,第一次很容易懵。
这一节用一张典型的 按量付费选机页面(类似 AutoDL 这类平台)做实战拆解:先讲界面术语,再按型号介绍怎么选。

10.1 这页在让你选什么?

云平台把一台「能训练的机器」拆成几件事:

  1. 怎么付钱(按量 / 包日周月)
  2. 机器在哪(地区)
  3. 要什么特性(大显存、多卡、SSD……)
  4. 哪张显卡、几张卡
  5. 这台实例具体配了多少 CPU / 内存 / 磁盘
  6. 系统里预装什么环境(镜像:PyTorch、CUDA、Python 版本等)

你最终买到的不是「一张显卡」,而是一整台 实例(Instance):GPU + CPU + 内存 + 磁盘 + 网络 + 软件环境。


10.2 界面术语对照(从上到下)

(1)计费模式

选项 意思 适合谁
按量付费 用多少小时付多少钱,可随时释放 短期实验、课程作业、调参试错(截图所选)
按日/周/月/年 包时段,通常有折扣 明确要连续跑很久、机器不太换

(2)系统

截图里是 Linux。深度学习训练服务器几乎都用 Linux(驱动、CUDA、容器生态最成熟)。

(3)地区

  • 一般选 有货、便宜、延迟可接受 的即可
  • 若你要从本地频繁传大数据集,可优先离你更近、上行带宽更好的地区
  • 「有库存」往往比「名义上最近」更重要

(4)活动标签

限时特价、活动价格、优惠券、夜间特惠等,属于价格过滤,不影响性能本身。

(5)机器特性(很实用的筛选器)

标签 一句话解释 什么时候勾
高可用率 机器更不容易抢不到/更稳一些(平台定义) 长时间任务
大硬盘 / 大数据盘 数据盘更大 数据集很大
大内存 主机内存(RAM)更大 num_workers 高、缓存数据、多卡
多核 CPU 核数更多 重数据增强、解码压力大
1 卡 GPU 只要单卡 入门、调试
大显存 过滤显存更大的卡 LLM、高分辨率、易 OOM
NVLink GPU 之间的高速互联(比普通 PCIe 更快) 多卡大模型,通信敏感时
2 卡 / 8 卡 / 10 卡 GPU 直接筛多卡机器 明确要做多卡训练
NVMe / SSD 更快的磁盘 大数据集、随机读小文件
CUDA10 偏老环境兼容 老项目锁死旧 CUDA 时才需要
高速公网 / 独立带宽 / 静态IP 等 网络相关 要对外服务、稳定远程访问时

注意:勾选越多,可选机器越少。先按「显卡型号 + 卡数」定位,再按需加「大显存 / SSD / 多核」。

(6)显卡类型:型号-显存 怎么读?

例如:

  • 3090-24G = GeForce RTX 3090,显存 24GB
  • A100-80GB = 数据中心卡 A100,显存 80GB
  • 4090D-24G = RTX 4090 的特定版本(常见于国内市场供应规格),显存仍是 24GB

后缀 GB/G 才是显存容量;前面是卡的档位与代数。同名前缀也可能有不同显存版,以下缀为准。

(7)GPU 数量

截图可选 1~24 张。
当前选的是 1:单卡实例,最适合先跑通、先调参。

卡数变多 ≠ 线性变快。详见前文「多卡」一节。


10.3 读懂「已选中的那一行规格」(以 3090-24G 为例)

截图下方这张表,是你真正下单前最该看的东西:

字段 截图中的值 什么意思
GPU 类型 3090-24G 用的哪张卡
地区 华北 机房位置
数量 1 几张 GPU
显存 24 GB GPU 自己的内存(不是主机内存)
驱动版本 580.173.02 NVIDIA 驱动版本
最大 CUDA 版本 13.0 这台机器驱动支持到的 CUDA 上限
CPU Xeon E5-2699 v4 服务器 CPU 型号
CPU 配置 11 核 分给你的 CPU 核数(后勤能力)
内存 31.5 GB 主机内存 RAM(给系统、DataLoader、缓存用)
实例硬盘 系统盘 20GB + 数据盘 50GB(可扩) 系统与数据分开;数据集请放数据盘
网络带宽 上传 400Mbps / 下载 800Mbps 传数据集、拉镜像时会用到
价格 ¥0.75 / 小时 按量单价

三个最容易混的「内存」

  1. 显存 24GB:模型、激活、梯度主要住这里,OOM 通常指它不够
  2. 内存 31.5GB:CPU 侧用,workers 太多、数据缓存太大时先爆它
  3. 硬盘 50GB 数据盘:只是存放空间;不快的话,GPU 会饿死

关于驱动和 CUDA

  • 驱动:操作系统里的 NVIDIA 驱动
  • CUDA:GPU 通用计算工具链;深度学习框架(PyTorch 等)要与之匹配
  • 「最大 CUDA 13.0」意思是:驱动够新,能支持较高 CUDA;你实际用哪一版,还看 镜像里装的 PyTorch/CUDA 组合

10.4 实例镜像是什么?为什么也很重要

页面底部的 实例镜像,决定开机后环境长什么样:

类型 作用
官方镜像 平台预装好的 PyTorch / TensorFlow / CUDA / Python 组合,开箱最快
备份镜像 你以前保存过的环境,适合复现实验
镜像市场 社区/第三方做好的环境

选镜像时重点看三件事是否匹配你的代码:

  1. 框架版本(如 PyTorch 2.x)
  2. CUDA 版本
  3. Python 版本

机器再好,镜像选错(CUDA 与框架不匹配),也会装到崩溃。


10.5 显卡型号地图:截图里这些卡各自干什么?

下面按截图中的类型分组介绍。价格会变,这里讲 定位与适用场景

A. 数据中心大显存卡(大模型、多卡、长时间任务)

型号(页面写法) 一句话定位 更适合 不太适合
A100-80GB / A100-40GB 经典大模型训练卡,生态成熟 大模型训练/微调、多卡 小作业(性能浪费、更贵)
A800-80GB 面向特定市场供应的 A100 同系规格 与 A100 类似的大模型场景 同上
L40S-48GB 偏新的数据中心卡,训练/推理都能做 中大型模型、推理+训练混合 只想最低价练手
V100-32G / V100-16G 上一代数据中心卡 老项目复现、预算受限的中等训练 追新架构峰值性能
P40-24G / T4-16G / P4-8G 更老或偏推理/入门数据中心卡 轻量任务、推理试验、兼容老环境 现代大模型训练主力

B. 专业高显存卡(单卡硬塞大模型时很香)

型号 一句话定位 更适合
PRO 6000-96G 超大显存专业卡 极大显存需求、单卡塞大模型
6000D-84G 大显存专业卡规格之一 同上,看平台供应与价格
5880Ada-48G Ada 架构专业卡 大显存工作站向负载
A6000-48GB / A6000-24G 专业绘图像卡,显存大 单卡大显存训练、可视化相关负载

C. 消费级旗舰 / 主流训练卡(个人与小团队最常见)

型号 显存 一句话定位 怎么选
5090-32G 32G 新一代消费级旗舰(更高算力/更大显存) 预算够、要强单卡性能
5080-16G 16G 新一代高端 要新架构,但显存不是最大
5070-12G 12G 新一代中上 中等模型;LLM 容易偏紧
5060 Ti-16G 16G 新一代中端大显存版 性价比练手/中等训练
4090-24G 24G 上一代消费级王者,训练非常常见 单卡认真训练的首选之一
4090D-24G 24G 4090 的国内常见供应版本 与 4090 同定位,看价格库存
4080-16G 16G 高端但显存少于 4090 CV/中等 NLP 很好;大模型更易撞墙
4070 Ti-16G 16G 主流偏强 性价比单卡训练
4070-12G 12G 主流 中小模型;大显存需求不够从容
4060 Ti-16G 16G 中端里显存很能打 预算有限又想少 OOM,很常见
3090 Ti-24G / 3090-24G 24G 老旗舰,显存仍香,单价常更友好 截图所选;很多研究生的甜品坑
3080-20G / 3080 Ti-12G / 3080-10G 10~20G 上一代高端 能跑很多 CV;大模型看显存版本
3070-8G / 3060 Ti-8G 8G 入门偏上 学习小模型;大 batch 易 OOM
3060-12G 12G 老中端,12G 仍能救急 入门训练、轻量微调

D. 更老的消费级(能跑,但优先当备用)

型号 说明
2080 Ti-22G / 2080 Ti-11G 较老架构;22G 多为特殊改版/特定供应,先确认框架与驱动支持
1080 Ti / TITAN X-12G 很老,仅适合极轻任务或怀旧复现,不建议作为现代训练主力


十一、附录:名词小词典与速查表

11.1 名词小词典

名词 一句话解释
CPU 中央处理器,擅长通用与复杂控制
GPU 图形/并行处理器,擅长大规模相似计算
VRAM / 显存 GPU 自带的高速内存
FLOPS / TFLOPS 每秒浮点运算次数(理论算力常用单位)
Batch size 每步训练使用的样本数
Epoch 完整遍历一遍训练集
Learning rate 参数更新步长
num_workers 数据加载的并行进程数
AMP / 混合精度 用更低精度加速并省显存的训练方式
Gradient accumulation 多步小 batch 累积后再更新,模拟更大 batch
Gradient checkpointing 省激活显存、通常换更慢计算的技术
OOM 显存不足导致的报错
DDP 常见的多卡数据并行训练方式
samples/s、tokens/s 训练吞吐指标
GPU-Util 采样得到的 GPU 忙碌比例,不是精确算力利用率成绩单

10.2 现象速查表

现象 优先怀疑 优先动作 通常有没有用
Util 低,CPU/磁盘忙 数据瓶颈 调 workers、减增强、换快存储 常有用
Util 高,显存仍空 算力已较满 别盲目加 batch;试 AMP/实现优化 加 batch 常有限
OOM,Util 不高 显存墙 降 batch、AMP、checkpoint、减序列 很有用
Util 80~100 横跳,吞吐稳 任务结构使然 可观察,不必过度调 硬追 100% 常没用
Util 与吞吐一起大抖 真瓶颈/周期性杂项 查数据抖动、验证、通信、温度墙 有用
很快但不收敛 优化/数据问题 调 LR、warmup、查数据与精度稳定性 只压硬件没用

全文完。若你后续想把某一章扩成「带具体命令与监控截图说明」的实操手册,可以指定章节继续写。

posted @ 2026-08-16 19:11  TTGF  阅读(28)  评论(0)    收藏  举报