我们假设在卡成本上 1 张 A100 和 6 张 3090 是差不多的,目前市场行情也大致如此。
先给结论,如果是一个项目组或者小型公司,我肯定会选择 3090。无他,可以支撑团队内更多的并发训练需求。如果是个人,搭建 6 卡的工作站少说也得 10 个 W 了吧,真的很豪!我倒觉得 4 张 3090 的性价比足以吊打 PCIe A100。
参数对比
为什么不选 A100?我们看下 3090 和 A100 的账面数据[1]。
算力上,半精浮点基本打平;单精度浮点吞吐 3090 vs A100 有 1.75 倍性能提升,这个在模型训练上非常重要。双精度浮点 A100 碾压 3090 有 8.8 倍性能提升,但如果你不搞 HPC 数值计算,基本没用,深度学习场景下形同鸡肋。单张 3090 的性价比完胜 A100。
算力对比
访存及 IO 来看,A100 采用工艺更复杂的 HBM2[2],显存位宽和访存带宽都领先 3090 一个身位。我们知道并行计算中一般都是 Memory Bound,访存速度的提升很大程度上可以带来计算性能的收益。容量上 A100 40 GB 是 3090 的近 1.7 倍,更大的显存为模型架构和训练提供了更大的空间。这项比拼 3090 略有劣势,但这个劣势有多少可以被开发者感知到,我们接着往下看。
显存和 IO 对比
实测性能
实测性能我们以 ResNet-50 为例,先看国外网友的测试数据。[3]
可以看到,无论 FP32 还是 FP16,A100 都要优于单卡的 3090。多卡情况下 A100 的优势会进一步拉大,A100 多卡能做到近线性,为啥 A100 扩展性这么好,这里先不展开讨论。
可以得出明确的结论是: 3090 的 4 卡分布式训练效果绝对要优于单张 A100。这也就是为什么我开头说 4 卡 3090 的性价比足以吊打单卡 A100。
ResNet-50 实测性能
后记
既然 3090 这么好,为啥大厂不用呢?这里有三个主要原因:
1. NVIDIA 很早就明确指出,禁止在数据中心使用消费级显卡(如 GeForce 系列)[4][5] 。
2. 数据中心更多的会使用 SMX 封装的 A100,支持 NVLink 高速互联功能,双向独立 PCIe DMA 引擎,ECC 显存容错,这在大规模训练场景中是非常关键的。在生产环境中,模型半天训完还是 6 小时训完,训练是否稳定,很多时候不是 50% 与 100 % 的区别,而是 0 与 1 的区别。
3. 刚才我们只核算了单卡成本,在数据中心中,任何设备都是要核算 TCO 成本的,这里除了设备,还有机架位、网络等一系列的配套成本。这样核算下来,消费卡的性价比就没那么高了。
当然,这些对于个人用户都不需要考虑。是我,闭眼也会选 3090。