云 GPU 选型指南:显存、算力与价格怎么看

从显存容量、计算精度、GPU 利用率、CPU 与内存搭配和总成本出发,为目标检测、LoRA 微调、文生图等任务选择合适的云 GPU。

选择云 GPU 时,型号名称只能提供一部分信息。真正决定任务能否顺利运行的是显存容量,决定完成速度的是算力与数据吞吐,决定最终支出的是整个任务的完成时间和附加存储费用。

本文提供一套与平台无关的选型方法。云 GPU 的基本概念可参阅《什么是云实例与云 GPU》,创建实例与 SSH 操作可参阅《云实例使用指南》。

先看显存,再看速度

训练时,显存通常包含以下部分:

  • 模型参数;
  • 梯度;
  • 优化器状态;
  • 前向传播保存的中间激活;
  • 输入数据、标签和临时计算空间;
  • CUDA 上下文与框架缓存。

模型参数量可以帮助估算参数本身的体积:

参数显存约等于参数量 × 每个参数的字节数

FP32:每个参数约 4 字节
FP16/BF16:每个参数约 2 字节
INT8:每个参数约 1 字节
INT4:每个参数约 0.5 字节

例如,70 亿参数模型以 FP16 加载,仅参数权重就约占 70 亿 × 2 字节 ≈ 14 GB。推理还需要缓存和框架开销,训练还会加入梯度、优化器状态与激活,因此实际需求会继续上升。

视觉模型的激活显存与 batch size、输入分辨率和网络结构密切相关。输入图片边长翻倍后,像素数量约变为四倍,中间特征图也会显著增长。

给显存留出余量

建议在试跑峰值基础上预留约 10% 至 20% 的余量,用于框架缓存、验证阶段和偶发的大样本。选型时可以遵循:

目标显存 = 实测峰值显存 × 1.1 至 1.2

已有本地 GPU 时,可以先用少量数据运行几个 step,通过 nvidia-smi 或框架分析工具查看峰值。项目还未运行时,可从模型官方说明、同类实验和下文的任务分档开始估算,再用短时云实例验证。

常见显存优化手段

当任务接近显存上限时,可以按下列顺序调整:

  1. 减小 batch size、输入分辨率或序列长度;
  2. 使用 FP16 或 BF16 混合精度;
  3. 使用梯度累积维持有效 batch size;
  4. 开启梯度检查点,以更多计算换取更低激活显存;
  5. 使用 8-bit 优化器、LoRA 或 QLoRA;
  6. 将部分参数或优化器状态卸载到 CPU;
  7. 采用多卡并行或更大显存的 GPU。

这些方法会改变训练速度、数值稳定性或实现复杂度。每次调整一个因素,并记录吞吐、显存峰值和最终指标,最容易判断收益。

算力应该怎么看

显存决定任务容量,算力决定每一步计算速度。比较 GPU 时应关注任务实际使用的精度:

  • FP32:传统科学计算和部分对精度敏感的任务;
  • TF32:现代 NVIDIA GPU 上常见的矩阵计算路径;
  • FP16/BF16:深度学习训练与推理的常用精度;
  • INT8/INT4:量化推理和 QLoRA 等场景。

厂商标注的理论峰值代表特定条件下的上限。实际速度还会受到显存带宽、Tensor Core、功耗限制、散热、框架版本和数据供给影响。最可靠的比较方式,是在候选实例上运行同一段短任务并记录:

每秒样本数 / 每秒 token 数
单 step 时间
峰值显存
GPU 利用率
每小时价格

最终可计算单位工作成本:

训练成本 = 每小时价格 × 完成训练所需小时数

每百万样本成本 = 训练成本 ÷ 处理样本数 × 1,000,000

单价较高但速度提升更大的 GPU,可能拥有更低的任务总成本。

如何理解 GPU 利用率

nvidia-smi 中的 GPU-Util 表示采样窗口内 GPU 忙于执行计算的时间比例。训练任务中的利用率经常随数据加载、前向传播、反向传播和参数更新上下波动。

可以持续观察:

watch -n 1 nvidia-smi

常见现象与优化方向如下:

现象 可能原因 优化方向
GPU 利用率长期较低,CPU 接近满载 数据解码或增强成为瓶颈 增加 CPU、数据加载进程或缓存
GPU 利用率周期性掉到零 数据读取间歇或同步等待 提高磁盘吞吐、预取数据、合并小文件
显存占满,GPU 利用率仍较低 batch 太小或模型并行通信较多 调整 batch、计算图和通信策略
GPU 利用率高且训练稳定 计算资源得到充分使用 继续对比单位任务成本
多卡中部分 GPU 利用率低 数据分配或通信不均衡 检查分布式采样、负载与互联方式

利用率是诊断线索,吞吐和总训练时间更适合作为最终评价指标。部分小模型会在很短时间内完成计算,采样值可能低于真实峰值。

CPU、内存和磁盘怎样搭配

CPU

CPU 负责读取文件、解码图片、数据增强、分词、编译扩展和准备 batch。目标检测与图像增强通常需要较多 CPU 资源,大语言模型微调在预先分词后对 CPU 的压力相对平稳。

可以从每张 GPU 配置 4 至 8 个 CPU 核开始试跑。大量图片解码、视频处理或复杂增强任务可提高到 8 至 16 核,再根据 GPU 等待情况调整。

内存

内存需要容纳操作系统、Python 进程、数据加载队列和缓存。入门训练实例可以从 16 GB 或 32 GB 开始;大型数据集缓存、多进程加载、CPU offload 和多卡训练通常需要 64 GB 或更多。

内存需求可以通过运行监控确认:

free -h

系统频繁使用交换空间时,数据吞吐会明显下降,此时可以减少加载进程、降低缓存或增加内存。

磁盘

磁盘容量应覆盖:

数据集 + 解压后的副本 + Python 环境 + 预训练权重
+ 多个训练检查点 + 日志 + 临时缓存 + 预留空间

大量小图片和视频训练还依赖随机读取性能。将数据打包为适合流式读取的格式、使用本地高速盘或平台高速存储,通常能提高 GPU 利用率。

按任务选择显存档位

下表用于首次筛选,实际需求以模型实现、输入大小、batch size 和精度为准。

显存档位 典型用途 选型提示
8 GB 至 12 GB 小型分类模型、轻量目标检测、基础推理、低分辨率文生图 适合入门和代码验证,训练时采用较小 batch
16 GB 至 24 GB 主流视觉训练、中型目标检测、Stable Diffusion 微调、7B 模型量化推理与参数高效微调 个人项目和竞赛中较灵活的档位
32 GB 至 48 GB 高分辨率视觉、大 batch、较大模型 LoRA、多模型流水线 为激活、缓存和复杂工作流提供更多余量
80 GB 及以上 大模型训练或微调、长上下文、多卡研究任务 重点比较多卡互联、通信和单位 token 成本

目标检测如何选

目标检测的显存主要受到模型规模、输入分辨率、batch size 和数据增强影响。小型 YOLO 类模型使用 640 像素输入时,8 GB 至 12 GB 显存通常适合学习、推理和小 batch 训练。中大型检测模型、更高分辨率或更大 batch 常采用 16 GB 至 24 GB。

遥感、医学影像和工业检测经常使用高分辨率图片。此时可以选择更大显存,也可以通过切片训练、随机裁剪、混合精度和梯度累积控制需求。

推荐的选型流程:

  1. 用目标分辨率和 batch size 1 运行短测试;
  2. 逐步增加 batch,记录吞吐和显存峰值;
  3. 观察 CPU 数据增强是否让 GPU 等待;
  4. 在候选 GPU 上比较每个 epoch 的时间与价格。

LoRA 与 QLoRA 如何选

大语言模型微调的显存需求取决于参数量、权重精度、序列长度、LoRA rank、batch size、优化器和梯度检查点。

粗略估算权重体积时,7B 模型的 FP16 权重约 14 GB,4-bit 权重约 3.5 GB;运行时还会加入量化元数据、LoRA 参数、激活和框架缓存。因此,权重体积只是估算起点。

常见入门组合如下:

任务 建议起步显存 说明
7B 模型 4-bit 推理 8 GB 至 12 GB 上下文长度和推理框架会影响 KV Cache
7B 模型 QLoRA 16 GB 至 24 GB 小 batch、梯度检查点和较短序列更容易落入此范围
7B 模型 FP16 LoRA 24 GB 至 32 GB 权重本身约占 14 GB,还需激活与训练状态
13B/14B 模型 QLoRA 24 GB 至 48 GB 序列长度和 batch 对结果影响明显
更大模型或长上下文 48 GB、80 GB 或多卡 需要结合切分、卸载和互联方式评估

KV Cache 会随 batch、层数和上下文长度增长。面向长文本推理时,即使模型权重可以装入显存,也要为 KV Cache 预留空间。

文生图如何选

文生图任务包括推理、LoRA 训练、DreamBooth 和从零训练,显存跨度很大。

  • 基础推理:8 GB 至 12 GB 可覆盖许多常见工作流;
  • SD 1.x LoRA:12 GB 至 16 GB 是常见起点;
  • SDXL 推理与 LoRA:16 GB 至 24 GB 更从容;
  • 高分辨率、多 ControlNet、多模型同时加载:24 GB 至 48 GB 可提供更大工作空间;
  • 视频生成与大型扩散模型:通常从 24 GB、48 GB 或更高档位开始评估。

分辨率、批量生成数量、注意力实现、VAE 是否切片、是否启用 CPU offload 都会改变显存需求。先使用最终工作流生成少量样本,记录单张耗时和峰值显存,再决定长期租用配置。

价格应该怎样比较

创建一个候选表格,记录平台控制台的实时价格:

候选实例 GPU 与显存 CPU/内存 小测试速度 每小时价格 预计完成时间 预计总费用
A 待填写 待填写 待测试 待填写 待估算 单价 × 时间
B 待填写 待填写 待测试 待填写 待估算 单价 × 时间

总费用还应加入:

  • 环境安装与数据准备期间的开机费用;
  • 数据盘、文件存储和镜像费用;
  • 失败重跑和调参实验的预算;
  • 多卡任务的 GPU 数量与通信开销。

例如 GPU A 每小时 2 元、任务需要 10 小时,总计算费用为 20 元;GPU B 每小时 3.5 元、任务需要 5 小时,总计算费用为 17.5 元。GPU B 的小时单价更高,任务总成本更低。

一套实用选型流程

  1. 根据模型、精度、输入尺寸和 batch 估算显存;
  2. 选择显存高于估算峰值 10% 至 20% 的候选 GPU;
  3. 检查候选 GPU 支持的计算精度和框架版本;
  4. 为每张 GPU 搭配足够的 CPU、内存和高速磁盘;
  5. 在两个候选实例上运行相同的短测试;
  6. 记录吞吐、峰值显存、GPU 利用率和每小时价格;
  7. 计算完成整个任务的时间与总费用;
  8. 选择满足容量要求且单位任务成本更低的实例。

选型完成后,还需要确认驱动、CUDA 与 PyTorch 的版本关系。下一篇《深度学习环境版本关系》会介绍这条软件依赖链。

相关标签
云GPU显存深度学习模型训练LoRA目标检测文生图