近日看到这么一个帖子:

https://www.zhihu.com/question/612568623/answer/3131709693

=================================================

类似的问题之前就写过,不该今天看到这个问题就又想再写一下,毕竟前段时间某东北沿海城市要建区级的计算中心以提供算力给周边诸个大学科研使用,而自己的师弟刚好入职就被院长安排到设备采购的活上了,也因此师弟也问了我同样的问题,这样也更加要我有兴致在这里写一下了。

其实国内的搞AI的(基本都是近几年搞深度的),好多人都是成了工程师而不是科学家,但是不论是工程师还是科学家对于一些基本原理也都知之甚少,对此我的感慨就是现在的人都是目标导向,对于很多旁支问题都不会去理睬了,而我这种”不求甚解”的人往往愿意去研究一下这里旁支问题。

这里要说的显卡分别为A100,H100,rtx4090三款显卡,首先说下单卡性能,也就是对这个三个卡进行单卡性能比较而不是多卡计算模式下进行比较:

单卡计算模式,半精度和单精度对比:

单卡计算模式,在单卡单精度方面:

准确的来说,rtx4090<A100<H100,但是rtx4090与A100之间差距不大,甚至可以近似的认为rtx4090=A100性能,而H100由于一直没有量产并且对我国禁止出口,因此对于H100的单精度性能性能只能从NVIDIA官方的公开数据中看到。根据NVIDIA官方的数据来看,在当精度方面H100的性能大致为A100的6倍,所以按照这个标准来看那就是在单精度计算方面RTX4090性能约等于A100,而H100约等于6倍的A100(不过对于H100的性能现在只能从官方宣传给出的参数来获得,这个实际性能是否能达到还需要看量产后的测评),当然这里的性能比较都是在显存充足的情况下,毕竟rtx4090的显存只有24GB。

rtx4090,24GB显存,大概1.5W人民币;

A100,40GB显存,大概5.5W人民币;

A100,80GB显存,大概7.5W人民币;

H100,80GB显存,大概24W人民币;

单卡计算模式,在单卡双精度方面:

rtx4090几乎可以被看做没有双精度计算能力,从数据上来看在双精度方面H100的性能大致为A100的3倍。

可以看到,在单卡性能比较上,H100虽然取得了对A100在单精度上6倍性能提升,双精度上3倍性能提升,但是H100的价格也达到了A100的3倍多(由于H100禁止对我国出口,因此从第三方获得H100估计要有一定的价格溢出,这样的话H100在国内的售价估计要有一定幅度的高于24W人民币),这样看在性价比上A100和H100差不多,但是考虑到新显卡的制程上的提升因此在能耗比上H100必然优于A100。

-------------------------------------------------------------

在多卡运算上还可以分为单机和多机情况:

现在最高标准的多卡主机为NVIDIA DGX A100,单机最多搭载8块A100显卡;

就如同H100还没有面世一样,下一代最高性能标准的多卡主机DGX GH200还没有面世,不过根据NVIDIA给出的数据是DGX GH200主机可以搭载256块H100显卡芯片,网上的宣传是今年年底之前会面世,虽然感觉DGX GH200是否今年年内会面向市场销售,但是也是最近几年必然会面世的。这里需要注意的是NVIDIA DGX A100单机多卡服务器依旧和我们日常用的电脑一样属于微型计算机,只不过就是性能高些而已,而DGX GH200主机则是大型机,也就是说DGX GH200主机和银河超算一样都是大型机,而大型机基本就是一台主机就要占一个房间(20到30平米的物理大小)。

单机多卡:

对于单机多卡的加速比没有一个准确的数据,因此这里只能按照个人的经验给出了。这种情况还分为PCIE通信还是nvlink通信两种,rtx4090只能进行PCIE多卡通信,A100和H100可以通过nvlink通信。PCIE通信的情况下(rtx4090显卡情况),单卡性能为基准100%,那么双卡的性能可能是(100%+90%),三卡可能是(100%+90%+80%),以此类推,8卡可能是(100%+90%+80%+70%+60%+50%+40%+30%),也就是说使用PCIE通信的情况下单机多卡的加速比要远低于线性加速比。如果使用nvlink通信(A100和H100显卡情况),单卡性能为基准100%,那么双卡的性能可能是(100%+98%),三卡可能是(100%+98%+96%),以此类推,8卡可能是(100%+98%+96%+94%+92%+90%+88%+86%),所以说单机多卡的情况下nvlink通信也会较大幅度提供性能,因此这也是A100和H100的优势,当然NVLINK通信需要额外购买设备,这也是一笔开销。

多机多卡:

没有真实数据,这里给的是个人的经验数据:

单机的基准性能为100%,双机性能(100%+90%),三机性能(100%+90%+90%),四机性能(100%+90%+90%+90%),五机性能(100%+90%+90%+90%+80%)等。

=======================================

根据上面的分析给出自己的显卡服务器配置方案:

双精度,必选A100或H100;

单机,卡数小于等于4,单精度:RTX4090;

单机,卡数大于4小于等于8,单精度:RTX4090或A100或H100,综合考虑还是RTX4090;

多机情况,参考单机时的配置;

由于价格问题只考虑RTX4090显卡情况下,如果卡数较少的需求,如4个卡,那么单主机带4个卡配置最优;如果卡数多些,如8个卡,那么双主机配置,单主机4个卡性能最优(当然这里是没有把主机的价格考虑在内);

由于一些大型企业是不考虑显卡和主机价格问题的,而且需要上千甚至上万块卡,那么就只能多机多卡,单机插排8个卡或16个卡;对于小型的企业,可以考虑使用多机形式单机4卡RTX4090,而不用使用单机A100。

如果你的计划是搞20个卡,并且是单精度,那么就搞5个主机,每个主机搞4个RTX4090,因为这个配置要比单主机nvlink插20个A100要合适的多,不过要注意的是单机多卡的编程要容易一些,而多机情况需要使用mpi,因此编码上要复杂一些。

至于要用双精度的话,那就没有选择了,只能是A100和H100了,毕竟RTX型号不太支持双精度。

总结来说,如果你的使用场景是单精度,并且卡数要求不多,20块卡,30块卡,40块卡,那么多用几个主机每个主机带4个卡,这样的配置性价比最高;如果你依旧是单精度场景,但是你需要的卡较多,几百上千甚至过万,那么就单机8卡或16卡(选择A100或H100,用nvlink通信);也就是说卡数较少的场景并且还是单精度的情况,20块卡以内那种比如16个卡,你搞4个主机,每个主机4个RTX是最便宜的。当然如果经费充足的情况下我还是建议单机把卡插满,比如8卡/16卡,用nvlink+A100这种,毕竟mpi的编程还是要麻烦一些的,多机情况要比单机情况在编程上复杂很多。

由于单机多卡还是多机多卡都会导致加速比不是线性的,但是使用nvlink的单机方式是最优的,因此有着256块显卡H100的大型机DGX GH200会是加速比最高的主机了,不过这个DGX GH200价格估计不会便宜,比较这256个显卡就快要1个亿的价格了,再加上一个大型机,总售价估计要1.5个亿起售了,并且这个大型机是绝对不会对我国出口的,如果这个主机能在我国境内出现估计美国议会都要吵翻天,到那时候看新闻联播就可以了。

===============================================================

附录:

NVIDIA DGX A100 主机配置:

源自:https://www.foresine.com/news/37-cn.html

深度学习用什么卡比较给力?—— A100/H100真的么有RTX4090好吗?的更多相关文章

  1. 深度学习主机环境配置: Ubuntu16.04 + GeForce GTX 1070 + CUDA8.0 + cuDNN5.1 + TensorFlow

    深度学习主机环境配置: Ubuntu16.04 + GeForce GTX 1070 + CUDA8.0 + cuDNN5.1 + TensorFlow 最近在公司做深度学习相关的学习和实验,原来一直 ...

  2. Deep Learning(深度学习)相关网站

    Deep Learning(深度学习) ufldl的2个教程(这个没得说,入门绝对的好教程,Ng的,逻辑清晰有练习):一 ufldl的2个教程(这个没得说,入门绝对的好教程,Ng的,逻辑清晰有练习): ...

  3. Deep Learning(深度学习)网络资源

    Deep Learning(深度学习) ufldl的2个教程(这个没得说,入门绝对的好教程,Ng的,逻辑清晰有练习):一 ufldl的2个教程(这个没得说,入门绝对的好教程,Ng的,逻辑清晰有练习): ...

  4. 【OCR技术系列之四】基于深度学习的文字识别(3755个汉字)

    上一篇提到文字数据集的合成,现在我们手头上已经得到了3755个汉字(一级字库)的印刷体图像数据集,我们可以利用它们进行接下来的3755个汉字的识别系统的搭建.用深度学习做文字识别,用的网络当然是CNN ...

  5. 让AI简单且强大:深度学习引擎OneFlow技术实践

    本文内容节选自由msup主办的第七届TOP100summit,北京一流科技有限公司首席科学家袁进辉(老师木)分享的<让AI简单且强大:深度学习引擎OneFlow背后的技术实践>实录. 北京 ...

  6. 深度学习(十) GoogleNet

    GoogLeNet Incepetion V1 这是GoogLeNet的最早版本,出现在2014年的<Going deeper with convolutions>.之所以名为“GoogL ...

  7. 【OCR技术系列之四】基于深度学习的文字识别

    上一篇提到文字数据集的合成,现在我们手头上已经得到了3755个汉字(一级字库)的印刷体图像数据集,我们可以利用它们进行接下来的3755个汉字的识别系统的搭建.用深度学习做文字识别,用的网络当然是CNN ...

  8. NVIDIA数据中心深度学习产品性能

    NVIDIA数据中心深度学习产品性能 在现实世界的应用程序中部署AI,需要训练网络以指定的精度融合.这是测试AI系统的最佳方法-准备将其部署在现场,因为网络随后可以提供有意义的结果(例如,对视频流正确 ...

  9. NVIDIA TensorRT高性能深度学习推理

    NVIDIA TensorRT高性能深度学习推理 NVIDIA TensorRT 是用于高性能深度学习推理的 SDK.此 SDK 包含深度学习推理优化器和运行时环境,可为深度学习推理应用提供低延迟和高 ...

  10. [源码解析] 深度学习分布式训练框架 horovod (20) --- Elastic Training Operator

    [源码解析] 深度学习分布式训练框架 horovod (20) --- Elastic Training Operator 目录 [源码解析] 深度学习分布式训练框架 horovod (20) --- ...

随机推荐

  1. ElasticSearch基于安装包方式安装

    1.下载地址 https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.5.4.tar.gz2.解压 tar -zxvf ...

  2. HTML/CSS复习

    CSS复习 HTML语义化 有利于SEO(搜索引擎优化) 便于阅读,修改 对盲人等不方便浏览网页的人来说比较方便 盒模型 盒模型有border-box和content-box两种,默认是content ...

  3. flutter 创建第一个项目(二)

    新建flutter project 项目 这样就创建出了第一个项目

  4. 查看es结构,es _search查询基础语法

    查看es结构,es _search查询基础语法 http://xx.xx.xx.xx:9200/ ES地址 car_info/_search POST {} POST { "query&qu ...

  5. PHP 程序员转 Go 语言的经历分享

    大家好,我是码农先森. 之前有朋友让我分享从 PHP 转 Go 的经历,这次它来了.我主要从模仿.进阶.应用这三个方面来描述转 Go 的经历及心得.模仿是良好的开端,进阶是艰难的成长,应用是认知的提升 ...

  6. .NET使用CsvHelper快速读取和写入CSV文件

    前言 在日常开发中使用CSV文件进行数据导入和导出.数据交换是非常常见的需求,今天我们来讲讲在.NET中如何使用CsvHelper这个开源库快速实现CSV文件读取和写入. CsvHelper类库介绍 ...

  7. 10分钟掌握Python缓存

    全文速览 python的不同缓存组件的使用场景和使用样例 cachetools的使用 项目背景 代码检查项目,需要存储每一步检查的中间结果,最终把结果汇总并写入文件中 在中间结果的存储中 可以使用co ...

  8. 【论文阅读】ICRA2021: VDB-EDT An Efficient Euclidean Distance Transform Algorithm Based on VDB Data Struct

    参考与前言 Summary: 浩哥推荐的一篇 无人机下的建图 and planning实验 Type: ICRA Year: 2021 论文链接:https://arxiv.org/abs/2105. ...

  9. 基于SSD202D芯片的最小嵌入式Linux开发板来了 仅需99元 入门嵌入式Linux必选

  10. 怎样理解 Vue 的单向数据流?

    数据从父级组件传递给子组件,只能单向绑定. 子组件内部不能直接修改从父级传递过来的数据. 所有的 prop 都使得其父子 prop 之间形成了一个单向下行绑定:父级 prop 的更新会向下流动到子组件 ...