跳转到内容

NVIDIA Volta V100 — 第一代 Tensor Core 把 AI 训练算力一夜抬 6 倍

待复核

Volta 是 NVIDIA 2017 年发布的 GPU 架构(pascal-architecture-2016 之后一代),数据中心代表芯片是 GV100(Tesla V100)。它在一代之内做了三件改写底层假设的事:第一代 Tensor Core + 独立线程调度(ITS)+ NVLink 2.0——前者把 AI 训练算力相对 P100 的 FP16 packed 路径抬约 (营销峰值可达约 12×),中者推翻 GPU 编程”warp 步调一致”的最底层假设,后者把 Pascal 的 8 卡 DGX-1 升到 16 卡 DGX-2。

日常类比:Pascal 给工厂修了高速公路(HBM2)和厂间专线(NVLink);Volta 是在车间加一台专门拼乐高 4×4 块的机器(Tensor Core)+ 让流水线每个工人不再被强制一起抬手(ITS)+ 把厂间专线扩到 6 条(NVLink 2)——既加新硬件,又改旧规矩。

落到硅片:GV100 约 211 亿晶体管、TSMC 12nm FFN、815 mm²、300W TDP。算力侧是 80 个 SM(可当成 80 个并行工位)× 64 FP32 = 5120 FP32 + 2560 FP64,外加 640 个 Tensor Core(专门做小矩阵乘加的单元);显存 16GB / 32GB HBM2、约 900 GB/s。代表卡:Tesla V100 SXM2 / PCIeDGX-2(16× V100 + NVSwitch)

不理解 V100,下面这些事都没法解释:

  • 为什么 2018 年 BERT / GPT-2 / T5 训练几乎全在 V100 上——Tensor Core 让 FP16 GEMM 从 P100 约 21 TFLOPS 跳到约 125 TFLOPS(≈6×)
  • 为什么 CUDA 9 起代码要加 __syncwarp()——Volta ITS 让 warp 内线程不再天然同步,老代码默认假设崩了
  • 为什么 DGX-2 卖约 39.9 万美元也供不应求——16 卡全互联(NVSwitch)+ 约 2.4 TB/s 级内部带宽,是当时能装下大模型的整机标杆
  • 为什么 混合精度训练(AMP) 在 2018-2019 才真正普及——Tensor Core 给”FP16 输入 / FP32 累加”提供专用硬件
  • 为什么 V100 32GB 直到 2024 年还在跑 LLaMA-7B 微调——sm_70 兼容 + 32GB 显存让它活了约 7 年

V100 在 pascal-architecture-2016 之上做了 四件事

  1. Tensor Core 第一代:每个 SM 内 8 个 Tensor Core,每个一拍算 D = A×B + C(A、B 为 4×4 FP16,C、D 为 4×4 FP32)——一拍 64 次 FMA。640 × 1.53 GHz × 64 FMA × 2 ≈ 125 TFLOPS。类比:通用工人改成专拼 4×4 乐高的机器。意义:训练算力代际换挡。

  2. Independent Thread Scheduling(ITS):Pascal 前一个 warp 32 线程共享一个 PC,if/else 必须步调一致。Volta 给每个线程独立 PC + call stack,分歧可并发。类比:工人不再强制齐步走。意义:可写细粒度同步,但依赖 lockstep 的老代码会坏。

  3. NVLink 2.0:单链路约 50 GB/s,每卡 6 条合计约 300 GB/s(Pascal 约 160)。新增 cache coherence。配合 NVSwitch(DGX-2 上 12 颗),16 卡两两约 50 GB/s 全连接。类比:厂间专线加宽并换成全交换机。

  4. L1 + shared memory 合体:Pascal L1 24KB / shared 64KB 分离;Volta 合成 128KB 可配置(shared 0–96 KB,余下当 L1)。类比:两个仓库打通,空闲货架给另一方用。

  • Tensor Core,AI 训练算力跳变发生不了
  • ITS,warp 内 producer-consumer 等细粒度算法难写
  • NVLink 2 + NVSwitch,DGX-2 16 卡训练就是带宽地狱
  • L1 / shared 合体,喂 Tensor Core 时 shared 更容易先打满
// CUDA 9+:FP16 输入 + FP32 累加,走 Tensor Core
cublasGemmEx(handle, CUBLAS_OP_N, CUBLAS_OP_N, m, n, k,
&alpha, A, CUDA_R_16F, lda, B, CUDA_R_16F, ldb,
&beta, C, CUDA_R_32F, ldc, CUDA_R_32F,
CUBLAS_GEMM_DEFAULT_TENSOR_OP);

逐部分解释

  1. CUDA_R_16F:A/B 用半精度喂 Tensor Core
  2. CUDA_R_32F 累加:结果用 FP32 累加,训练更稳(AMP 默认路径)
  3. _TENSOR_OP:显式选 Tensor Core;M/N/K 宜为 8 的倍数,否则可能静默回退 SIMT

案例 2:ITS 让老 reduction 必须显式同步

Section titled “案例 2:ITS 让老 reduction 必须显式同步”
// Pascal 假设:warp 内 32 线程 lockstep,下面常"能跑"
if (threadIdx.x < 16) sdata[threadIdx.x] += sdata[threadIdx.x + 16];
// Volta ITS:两半线程可并发 → 可能读到未写完的值
if (threadIdx.x < 16) sdata[threadIdx.x] += sdata[threadIdx.x + 16];
__syncwarp(); // CUDA 9 起:显式 warp barrier(最小示意)

逐部分解释

  1. 错在哪:旧代码依赖”同 warp 天然同步”,省掉 barrier
  2. 为何竞态:ITS 下分歧分支可并发,读可能早于另一半写完
  3. 怎么修:共享读写之间加 __syncwarp();真实 port 按 CUDA 9 ITS 指南系统改
DGX-2 (2018-03): 16× V100 32GB + 12× NVSwitch + 2× Xeon Platinum 8168
任意两卡 ≈50 GB/s;峰值约 2 PFLOPS Tensor、512GB HBM2;标价约 399000 USD

逐部分解释:16 卡 = 训练状态装得下;NVSwitch 全连接 = all-reduce 不再走 hybrid cube mesh;512GB 总显存 = 当时单机大模型标配。后续 DGX A100 / H100 仍是 N 卡 + NVSwitch + 整柜

Devlin et al. BERT (2018-10): 论文主报 16× Cloud TPU
社区复现常见: 8× V100 32GB + Tensor Core + AMP
后续 RoBERTa / T5 / GPT-2 训练集群也大量用 V100

逐部分解释:32GB 扛住长序列/大 batch;Tensor Core 提供 FP16 GEMM;AMP 把混合精度落到硬件。没有这三者,2018-2020 NLP 训练门槛会高很多。

  1. Tensor Core 维度对齐:M/N/K 非 8 倍数时 cuBLAS 可能静默回退 SIMT——用 nsys 看 kernel 名确认。
  2. ITS 让旧 reduction 偶发错:本地几百次没事、上线随机 NaN——warp 共享读写加 __syncwarp()
  3. PCIe V100 只有 2 条 NVLink:SXM2 才 6 条;多卡前先确认形态。
  4. 16GB vs 32GB:2017 首发 16GB,2018-Q4 才 32GB;BERT-Large / GPT-2 通常要 32GB。
  5. FP16 累加追速:大模型易掉精度;AMP 默认 FP32 累加更稳。
  6. NVSwitch 仅 DGX-2 / HGX-2:自建 8 卡常是 hybrid cube mesh,不是全连接。

适用

  • 2018-2020 大模型训练 —— BERT / GPT-2 / T5;单卡 16/32GB,多卡常见 8(DGX-1V)或 16(DGX-2)
  • 混合精度训练(AMP) —— Tensor Core 是硬件支点
  • HPC + AI 双负载 —— FP64 约 1/2 FP32 保留 + Tensor 加新

不适用

  • GPT-3 175B 级大规模训练 —— 需 A100 80GB / H100 + 更大互联
  • BF16 / TF32 —— Ampere 起才有;V100 仅 FP16 + FP32
  • Transformer Engine / FP8 —— Hopper 起才有
  • 桌面入门 —— 无消费版,单卡当时约 8000+ 美元
  • 2:4 结构化稀疏 —— A100 起才有
  • 2017-05 GTC:发布 V100 + Tensor Core,营销称 AI 算力可达约 12×
  • 2017-12:V100 量产,FAIR / OpenAI / Google Brain 抢首批
  • 2018-03:DGX-2 + NVSwitch,16 卡全连接整机品类诞生
  • 2018-10 / Q4:BERT 发表;V100 32GB 上市
  • 2019-2020:GPT-2 / RoBERTa / T5 大量用 V100;2020-05 A100 接棒(V100 仍长尾)
  1. 专用单元 vs 通用算力:Tensor Core 是 GPU 史上首次为矩阵乘造专用硬件,开启后续 Transformer Engine / FP4 路线
  2. 抽象层穿透代价:ITS 改 warp 假设 → 祖传 CUDA 必须重写
  3. 整机思维放大:DGX-1V → DGX-2 → SuperPOD,卡数与互联同代升级
  4. 兼容性是长尾根:sm_70 二进制兼容让 V100 用了约 7 年
  • ampere-architecture-2020 —— NVIDIA Ampere — 第三代 Tensor Core 加 TF32 / BF16 / FP64,结构化稀疏 + MIG 重写大模型时代硬件假设
  • blackwell-architecture-2024 —— NVIDIA Blackwell — 双 die NV-HBI + 第二代 Transformer Engine + FP4 让万亿参数训练日常化
  • burgess-2020-turing-rt —— Burgess 2020 RTX ON — Turing 把光线追踪做进硅片
  • cutlass-2020 —— CUTLASS — 把 SOTA GEMM 拆成可组合的 C++ 模板层级
  • gpudirect-rdma-2014 —— GPUDirect RDMA — 让网卡直接读写 GPU 显存
  • hopper-architecture-2022 —— NVIDIA Hopper — Transformer Engine + FP8 + TMA + Thread Block Cluster 把硅片为 LLM 量身定制
  • lindholm-2008-tesla —— Lindholm 2008 Tesla — SM、warp、SIMT 这套词汇的官方出生证明
  • nvlink-nvswitch-2018 —— NVLink 2.0 + NVSwitch — 把 16 块 GPU 拼成一台机器
  • turing-architecture-2018 —— NVIDIA Turing — RT Core 把光追装进消费卡,Tensor Core 第二代下放 INT8
  • unified-memory-2014 —— CUDA Unified Memory — 让 CPU 和 GPU 共享一张内存地图