"租个4090跑三天要多少钱?"——这个问题几乎每个准备训练模型的人都问过。答案取决于参数量、数据量、GPU型号和利用率。拍脑袋估成本的结局往往是:训练跑到一半发现预算只够60%。本文教你写一个属于自己的GPU价格计算器,训练前3分钟算清账。
训练成本不是一个数,是一个乘法:GPU单价 × 小时数 × 卡数。难点在"小时数"怎么估,它由三个变量决定:
全参训练(Adam优化器)显存需求 ≈ 参数量 × 16字节(参数+梯度+优化器状态混合精度)。7B模型约需 112GB,单卡放不下,必须多卡或改用LoRA。
训练步数 ≈ (样本数 / batch_size) × epoch数。吞吐量(tokens/秒)乘以步数得出总时长。实际吞吐受利用率影响,理论值打6折才是现实。
以下是2026年10月国内主流云GPU租赁市场价参考(按时计费,随行情浮动):
| GPU型号 | 显存 | 市场参考价 | 适用场景 |
|---|---|---|---|
| T4 | 16GB | ¥0.6-1.0/时 | 小模型推理、学习实验 |
| RTX 4090 | 24GB | ¥1.8-2.5/时 | 7B-13B微调(LoRA)、推理 |
| V100 (32GB) | 32GB | ¥2.5-3.5/时 | 生产推理、中小模型 |
| A100 (40GB) | 40GB | ¥5-8/时 | 全参微调、训练主力 |
| H100 (80GB) | 80GB | ¥15-25/时 | 大模型训练、吞吐敏感 |
单价低的卡不一定总成本低——H100速度快3倍但单价高5倍,小任务反而更贵。这就是为什么需要计算器而不是感觉。
把上面的逻辑固化成代码,训练前跑一遍:
class GPUCostCalculator:
# 显存需求(GB):全参训练 = 参数量(B) x 16
# LoRA训练 = 参数量 x 2 + 适配器开销
def vram_needed(self, params_b: float, mode: str = "full") -> float:
if mode == "lora":
return params_b * 2 + 2
return params_b * 16
# 训练时长(小时)
def hours(self, samples: int, epochs: int, batch: int,
seq_len: int, params_b: float, gpu: str) -> float:
THROUGHPUT = { # tokens/秒,混合精度实测中位数
"T4": 120, "4090": 900, "V100": 500,
"A100": 1800, "H100": 4500,
}
UTILIZATION = 0.6 # 利用率折算
total_tokens = samples * epochs * seq_len
eff = THROUGHPUT[gpu] * UTILIZATION
return total_tokens / eff / 3600
# 总成本(元)
def cost(self, params_b, samples, epochs, batch, seq_len,
gpu, price_per_hour, mode="full"):
vram = self.vram_needed(params_b, mode)
h = self.hours(samples, epochs, batch, seq_len, params_b, gpu)
return {"显存需求GB": round(vram, 1), "预计时长h": round(h, 1),
"预计成本": round(h * price_per_hour, 2)}
calc = GPUCostCalculator()
# 案例:7B模型LoRA微调,5万样本,2轮,4090(2.2元/时)
print(calc.cost(7, 50000, 2, 8, 2048, "4090", 2.2, mode="lora"))
# 输出示例: {'显存需求GB': 16.0, '预计时长h': 12.7, '预计成本': 27.9}
以"7B模型、5万样本、2048 tokens、2 epoch"为基准,算三种方案:
| 方案 | 配置 | 预计时长 | 预计成本 | 备注 |
|---|---|---|---|---|
| LoRA微调 | 1×4090 | 约13小时 | 约¥29 | 16GB显存即可 |
| 全参微调 | 4×A100 | 约22小时 | 约¥530 | 112GB显存需求 |
| 全参微调 | 2×H100 | 约10小时 | 约¥400 | 快但单价高 |
计算器写好只是第一步,关键是把"先算账再训练"固化成流程:
nvidia-smi 看实际利用率,用训练日志里的 it/s 实测吞吐回填计算器,修正真实成本;推理按 24小时 × 30天 × 单价 常驻估算。7B模型推理一张4090即可,月成本约¥1300-1800;流量低的话可考虑按需启动或用API网关按量付费。
主要偏差来源:① 利用率假设过高(新任务建议先跑10分钟实测吞吐再回填);② 多卡训练通信开销随卡数非线性增长;③ 计费按小时取整,短任务按小时计。
简单判断:预计年使用超过1500小时且型号迭代风险可接受,再考虑买卡;否则租卡更划算。参考我们此前的RTX4090租vs买分析。
三步走:① 先用免费API体验验证方案可行性;② 用T4/4090跑LoRA小规模实验;③ 数据集做采样瘦身——很多场景1万精选样本效果不输5万全量。
如果目标只是"用模型"而非"改模型",直接调API更省:无需运维、按量付费、无闲置浪费。微调需求再考虑租卡。