开启辅助访问
 找回密码
 立即注册

都说英伟达CUDA生态好,那么国内的GPU生态如何样?

lwls 回答数5 浏览数461
那个公司生态好点,有技术党吗?
使用道具 举报
| 未知
bbshao | 未知
GPU平台生态:英伟达CUDA和AMD ROCm对比分析 - 知乎 (zhihu.com)
国内的就不用谈了,先看看2大厂商的对比

中美之间关于人工智能方面的竞争已经白热化,目前新的芯片禁令已经升级到消费级别的4090显卡,不敢想象!


目前,美国对的AI芯片禁令越来越严,这些产品也不对中国大陆供货。

针对2023年10月17日最新的禁令,NVIDIA的A800\H800等卡势必涨价,市场将进入新一轮的混
乱和缺货状态,早期订单供货的产品也会水涨船高,国内的需求将会付出更高的价格



thepaper.cn/newsDetail_ 深夜突发!澎湃新闻

zhuanlan.zhihu.com/p/66 英伟达A800和H800销售受阻

昨晚收到消息,对我们从事高性能计算科研服务器硬件的企业影响很大,目前所有A800\H800\L40S新订单暂停,正在做评估和下一步方案,未来DC GPU卡的国内市场会加剧缺货。



一文看懂英伟达A100、A800、H100、H800各个版本有什么区别? - 知乎 (zhihu.com)
回复
使用道具 举报
tianshi2 | 来自北京
就目前看,国产GPU/GPGPU生态还处于基本可以忽略的状态。


对于国内GPGPU生态发展的看法

1)占有率低

目前世界上排前三位的GPGPU生态是CUDA(NV)、ROCm(AMD)、oneAPI(Intel)。国内GPGPU主力在用的imagination生态(国内某些GPU厂家号称的自研生态,或许做了些修改),20多家国产GPU企业加在一起连前三都排不上。
2)发展速度慢
从景嘉微2006年创立,到去年年底,历时16年,国产GPU厂家在GPU市场占有率仅为约0.5%。所以其实并不是每种GPGPU都具备GPGPU的通用生态能力。目前看也只有NV的GPU生态具有“GP”的影响力。其他家的生态对开发者来说基本上是以“障碍”的形态存在的,可能还需要面对长期的生态积累瓶颈。
甚至有业内人士戏称,国内某些GPU就是AI芯片换了个名字,实际上生态影响力较弱。


3)没充分考虑GPU生态发展的时间成本

从GPU的发展历史上看,GPU也是从专用(仅显示)到通用,生态的成长是一个非常烧钱且花时间的事情,生态的成长大概以10年为基本单位,例如CUDA、RISC-V都是10-20年的建设才具备了初步影响力。建设生态的成本大概是芯片的10-20倍。


4)多数成长方式与产业发展规律逆向而行

目前国内大部分GPU企业急于建立自己的生态,但是在性能上还未超过前三的巨头,有可能是被资本的认知所胁迫,花大钱做边际效益较低的事情。
根据半导体领域的牧本周期曲线,一般应该是在专用领域以更高的性能,或者更好的产品性价比超越现有市场的其他竞争者或竞争技术,扩大市场规模后再逐渐通用化。而目前国内绝大部分GPU创企未能在某些专用领域占据优势,却要着急扩大生态影响力,必然会面临创企的阶段发展困境。
5)同质化竞争与碎片化

一方面,多数国内GPU厂家选择imagination生态作为基础,这事实上会导致产品定义的过于雷同,例如产品算力多数是1.5TOPS-20TOPS,多数只支持特定的directX版本。当然好处是国产GPU的互相替代也会比较方便。另一方面,各家出于竞争的考虑,多少会对imagination的生态进行修改,这又会导致imagination生态的碎片化,事实上并没有形成合力。


据说有领导最近强调,以后要杜绝套壳情况。
6)没有借助巨头和国际开源的力量

从目前看,国内各家主要依附于imagination的生态进行补漏。但实际上,一个生态的进步一般来自三两方面的要素:国际巨头的推动,国际社区特别是开源社区力量的推动,自己性能做的可以。但由于大的国际开源力量一般也是有巨头在后面推动的,所以GPU的生态建设,事实上需要有巨头需求牵引,以及国内GPU厂商的通力合作,否则是难以突破CUDA生态的壁垒的。从GPU生态发展规律看,未来也必然会有一个开源GPU生态会成为主流,就看哪家能提前跟对。
另外纯国内的自建生态,一般来说不太容易成为世界主流生态。从国内企业发展角度看,自建生态可能是费力不讨好的事情,不如合力去推动1-2个国际开源的GPU生态,逐渐扩大非NV生态的影响力。当然,imagination全盘开源其生态,或许也是一个建设非NV生态的好方法。

参考阅读

陈巍:最强DSA TPU v5e架构分析(收录于《AI芯片设计:原理与实践》)陈巍:2(上)GPGPU编程模型之CUDA——《GPGPU 芯片设计:原理与实践》节选陈巍:3(上) GPGPU流式多处理器架构之取指译码发射——《GPGPU 芯片设计:原理与实践》节选陈巍:8.1(上)NVDLA硬件架构之卷积核心——《GPGPU 芯片设计:原理与实践》节选陈巍:被列入禁运的英伟达最先进H100 GPU架构深入解读
回复
使用道具 举报
sky_527 | 来自北京
如果AMD的生态都觉得差,那国产就是比AMD都远远不如。
国内就没啥正经的GPU和GPGPU生态,好多专用加速器去蹭GPU不知道为啥,难道是吹专用加速器骗不到钱了嘛,一个个图形都跑不了还想蹭GPU。
回复
使用道具 举报
zeroten | 来自上海
我对国内公司构建一个 CUDA 这样的私有 GPU 生态不太有信心,但是一个开放的 GPU 生态是有可能帮我们一臂之力的,就像RISC-V。
对国内的 AI 芯片公司、GPGPU公司来说,兼容 CUDA 容易被老黄牵着鼻子走,而自建私有生态真的能成长为 CUDA 吗?我觉得不现实。即使像 MIPS 以前一直都在 GCC 的官方列表里,生态也一坨……
CUDA 是英伟达投入几百亿培养的结果,也是用户选择的结果。但是在我看来,用户的选择是大于技术护城河的。实际上现在70-95%的 AI 用户选择的其实不是 CUDA,而是 Torch。数据来自AssemblyAI。


个人认为(其实看过很多人也是类似观点),想抢 NV 一块肉的公司应该联合起来搞一个像 RISC-V 这样的开放生态,或许是 Triton,或许是别的。然后大家一起跪舔 PyTorch ,把这个生态推进 Torch 获得官方支持,才是反抗 NV 的出路。
等到 PyTorch 的这个地方出现一个类似于 Triton 的东西,我觉得可能70%的问题就解决了。
回复
使用道具 举报
中国三好学生 | 来自黑龙江
有一种说法是“CUDA 是 Nvidia 最深的护城河”。我个人很赞同这种说法,了解越多越赞同。
硬件公司在设计产品的时候需要有一定前瞻性的,需要预测市场的走向,需求的走向,产品的定位等等。这个预测可能是3~5年前出来的。没错,就像你们想的,有的时候预测对了,就是你们看见的大卖的产品;也有很多时候预测错了,就是各种失败的典型,甚至悲惨到“失败”本身都没人知道。就像当年 Intel 的 Skylake 架构准确把握了云计算兴起的脉动,为数据中心业务,也就是以 Xeon 为代表的服务器 CPU (他还有个好听的中文名字,叫“至强”,和我小时候喜欢看的一部动画片 《蓝宝石之谜》里面的男主重名),带来了差不多十年的躺赢时段。还有 Nvidia 从 Pascal 开始准确契合了 AI 的发展进程, 还有目前以 ChatGPT 为代表的 LLM (Large Language Model) 蓬勃发展,简直把 A100 当成了算力的单位。这种“预测”的成功或者失败带来的可能是整个行业翻天覆地的变化。
对于 CPU 和 GPU 在 AI 领域的竞争,可以说 Nvidia 一开始就走在了前面,不过最开始 Intel 落后并不算多。在 Kepler 时代,我还是能依靠出色软件优化能力,拿出全面优于 GPU 的方案;Maxwell 时代实际上就有点力不从心了。那个时间点 Skylake 实际上是有性能优势的,无奈当时我司在 AI 方向的产品策略:默认在部署(Inference)端,认为 CPU 是稳赢的;然后在训练(Training)端,通过 Xeon Phi (这是个类似于 GPU 的通用计算卡,长得和 GPU 差不多,但是复用 CPU 的软件生态) 来和 GPU 抗衡。至今我还对 VP 当时展示的那页 AI 路线图记忆犹新,其实在 Xeon Skylake 和 Xeon Phi 之间还有两款产品,就是上面说的“失败”得都没人知道你的失败的产品。
我这些年见过的最烂的两款产品:一个是 Xeon Phi 的第二代(codename: KNL),另一个是他的第三代 (codename: KNM),当然 KNM 还没量产就被取消了。KNL 多少还是有点市场,这东西比较适合超算,但 KNM 实在扶不起来:它的设计思路是通过一个 4fma 的指令实现 float32 算力的加倍。但实际中,这条指令对矩阵的尺寸有很多限制条件,导致实际的场景中能被加速的情况寥寥无几,也就是标称有差不多 12Tflops,但实际中效率普遍低于 10%。这款产品还给我当时的团队带来了严重的管理危机,因为它“标称”很高,所以老板“认为”它就应该能够干掉当时的 GPU,那个时间点的竞品是 M40。“无奈臣妾做不到”,给我换 Skylake 可以做到,但 KNM 就是怎么优化都不行。最终直接或者间接导致和我一起做 torch 优化工作的另外 4 名工程师全部离职,这几个人还都挺厉害的,他们现在都为各自的公司做出了杰出贡献!不过神奇的是,当时 KNM 在国内是有少量订单的,不得不说 sales 的同事真是厉害!
后来 Nvidia 祭出 P100,这是个 Intel 被甩开的时间点,在这之后差距被越来越大,P100, T100, V100, A100。算力上的差距以肉眼可见的速度被逐渐放大。大模型出来之后简直要砸键盘了,感觉加点又 TM 加错了。
比起硬件算力的差距,软件生态上的差距更让人绝望。当 CUDA 几乎与 AI 画等号的时候,会有大量的社区力量为其助力。这就是一种良性循环:好的性能带来好的生态,好的生态会有助于更好的性能。比如目前 PyTorch 一个季度 release 一次,还有小版本的 release。一次大版本更新可能进 三四千个 Pull Request,这里面 Facebook 固然是主导,当然也有很多专业公司的贡献,但社区开发者的贡献同样不容小觑,而这些改动多数都是 CUDA 为主的。我个人的话,一年大概也能进就百十来个 Pull Request,这里面还不全都是优化,也有一些是在修 BUG。有时候一些比较麻烦的优化,一个就要写个把月,一两百个 commit 的改动。这就是生态的力量,也就是为什么说 CUDA 是 Nvidia 最深的护城河。如果你不加入,感觉就是一个人对抗一个集团。而现实世界中是没有像 Jane 那样的独成一档的5级变种人的。
有一点必须承认的是 Nvidia 在 GPGPU 上的工作不是一蹴而就的,这是个长达十余年的漫长积累。我念硕士的时候也是写 GLSL,CUDA 这些东西。Nvidia 的教育项目做得很好,导致现在的工程师都会写 CUDA。我的导师做过一个比喻:他念书的时候三星做了很多 MCU 的教育推广项目,然后这些学生上班之后都很自然地忘记了它的竞品的名字。类比之下,我司的教育项目简直就是“稀烂”,至今没有一个像样的教程。我早期的学习资料是看 TensorFlow 的对等代码,因为那时候很多抱怨是 PyTorch 在某某模型上不如 TensorFlow,所以我需要去扒对应的代码。当然现在没有这种抱怨了。现在很多时候要学一下 CUDA 的算法,然后搬到 CPU 上面,主要是指数据的并行切分方式,就是 blocking 或者叫 tiling。比如如果性能差距在3~5倍,可以认为是算力差距,但如果差了100倍,那肯定是什么地方没搞好,多数情况是 blocking 的问题。
目前针对 AI 方向的加速器或者 GPU 产品其实很多很多,国内尤其热衷这个感念,多到两只手数不过来,能叫上名字的公司几乎都在搞。至于各家生态如何,个人不太好做过多评论,避免引战。相对于纯纯的硬件算力上的区别(以 A100为单位,有的能做到 2 x A100 甚至更高),生态其实是一个更难弥补的差距。
如果想被社区接受的话,一般大家会有两种策略:

  • CUDA 和 "原生" 两套生态同时做。就是维护两套编译器,一套适配 CUDA,另外一套是原生的。这么做的优点和缺点都很明显:可以复用 CUDA 的成熟的生态,随之而来的好处是 upstream (就是把你的工作 merge 到社区) 的工作会很轻松,也就是很容易被社区接受,因为对框架本身的改动会很小。代价是两套编译器就是两个团队。这么玩的比如 AMD。
  • 利用自身流量说服社区。这么玩的就是苹果的 mps,其相关的 upstream 工作对框架改动是很大的,但是社区会开绿灯,因为苹果有流量。貌似除了苹果没人有这么玩的实力。本质上这种行为就是耍流氓,是需要资本的。
总结一下,要么有流量,即硬件本身已经被广泛使用,要么改动尽量小,即能以比较“优雅”的姿态被社区接受,而不是重写一个 PyTorch或者重建整个生态。
也有很多玩家上面两条路都不选的,自己维护一个新的框架,或者是做一个PyTorch的插件。这种方式比较适合初创公司打板,就是跑 benchmark,比如 MLPerf。算是兼顾性能、生态和工作量的折中方案。但其实这个工作量也很大(比如目前 PyTorch 大概有 600 个算子,都要实现一遍,这还没算同一个算子下不同的实现: 比如就一个 add,也有不同的 memory format, mixed data type,broadcast 等等)。而且,整个生态的问题规模是个倒三角,越往上面问题规模越大,各种各样的 model zoo:比如 HuggingFace,Detectron,TorchVision,DeepSpeed,等等。维护量一套体系的成本是会被逐渐放大的。如果只需要 python 还好,如果是那种有 C++ 实现的 model zoo,几乎没有办法以一种低成本的方式完美地处理掉。
还有一个潜在的问题是,自建生态在没有经过大规模使用的时候,是难以保障 code quality 的。也就是只能跑 benchmark,跑一下客户的模型就各种 runtime error,而且是那种一眼看上去不知道是什么原因的 bug。在你打了5个patch解决了3个问题之后拿到客户那边试,又出现了新的 bug。在你 online debug 或者屁颠屁颠跑过去 on site bebug 三天三夜,终于能以英雄的姿态凯旋之后,过了三个月客户说 accuracy 达不到 SOTA,或者说有memory leak,或者找茬说为什么 CUDA 的方案用的内存比你小(拿出竞品目的是压价),and so on ...
当然有人会争论说,只要性能足够好,就会有人从 CUDA 的生态上面迁移过来。这个是正确的,但这个足够好一般是要跨数量级的,至少也要是3倍4倍的提升,如果只是20%的提升,没人愿意费这个劲的。因为对客户来讲,尝试不成熟的方案是要担风险的,只有获利足够大,才会有人愿意赌这一把。
不过呢,凡事都有例外。在“天下苦CUDA久已”的趋势下,一种新的方案出现了,就是 Introducing Triton: Open-source GPU programming for neural networks。这个对一众硬件厂商来说是个重大利好。原则上需要两步:1. 完成现有生态与 triton 的对接;2. 给自己的硬件写个后端支持。第1步会有人帮你做好,目前的方案虽然并不是十全十美,但至少不用自己出钱出力。所以重点放在第2步即可,而且更好的地方在于这种项目是典型的个人主义项目,VP会很开心,因为不需要拉个一百人的团队,人多了也没用。
回复
使用道具 举报
快速回复
您需要登录后才可以回帖 登录 | 立即注册

当贝投影