华为开源CANN,要跨过英伟达又一条护城河?

华为开源CANN,要跨过英伟达又一条护城河?

文章图片

华为开源CANN,要跨过英伟达又一条护城河?

文章图片

华为开源CANN,要跨过英伟达又一条护城河?

英伟达曾经的壁垒 , 正在一个个消失?

“逢山开路 , 遇河搭桥” , 中国的硬科技公司这几年都生出了这番本事 。
8月5日 , 华为轮值董事长徐直军在会上宣布华为昇腾硬件使能CANN全面开源开放 , Mind系列应用使能套件及工具链全面开源 , 支持用户自主的深度挖潜和自定义开发 , 加速广大开发者的创新步伐 , 让昇腾更好用、更易用 。
同时 , 徐直军强调:华为AI战略的核心是算力 , 并坚持昇腾硬件变现 。

其中 , 最值得关注的是CANN开源的消息 。 CANN的全称是“神经网络异构计算架构”(Compute Architecture for Neural Networks) , 它的角色 , 是把上层AI训练框架(如PyTorch、TensorFlow、MindSpore等)和底层昇腾芯片连接起来的桥梁 , 让开发者不用关心芯片细节就能调用底层算力 。
与CANN作用类似的 , 还有英伟达的CUDA、AMD的ROCm、摩尔线程的MUSA以及寒武纪的Neuware等等 。 但最知名和影响力最大的还是CUDA , 它与英伟达的硬件产品构成了企业的核心护城河 。
华为在这个时间点 , 选择开源CANN , 旨在跨过英伟达已经修建了18年之久的护城河 —— CUDA 。 那么 , 英伟达的CUDA是如何发展起来的呢?华为作为挑战者 , 又将面临哪些机遇和困难?
1
CUDA带来的改变
【华为开源CANN,要跨过英伟达又一条护城河?】英伟达的CUDA(Compute Unified Device Architecture)是其统一计算设备架构的简称 。 它让开发者能够利用英伟达GPU的并行计算能力 , 来处理图形渲染之外更广泛的计算任务(即GPGPU , 通用图形处理器计算) 。
在CUDA出现之前 , 几乎所有计算任务都完全依赖CPU 。 科学家和工程师们早就发现了GPU的巨大计算潜力 , 相比于CPU擅长处理复杂任务 , GPU则擅长简单的批量工作 。
简单来说 , CPU就像一个顶级大厨 , 煎炒烹炸样样精通 , 能做佛跳墙(处理复杂任务) 。 但他一次只能专心做一道菜(串行处理 , 核心数量少但很强) 。 你让他同时做50道菜 , 他会一道一道地做 , 虽然每道都做得很快很好 , 但总时间会很长 。
而GPU就像是一群训练有素的帮厨小弟 , 每个小弟可能只会切菜 , 或者只会颠勺(处理简单、重复的任务) 。 但他们人极多(拥有成千上万个核心) 。 你让他们把50斤土豆全部切成丝 , 他们一人负责几个土豆 , 同时开切 , 一瞬间就完成了(并行处理) 。
现在 , 你想让那一群帮厨小弟(GPU) 去帮你做一道新菜 , 油焖大虾 。 你没法直接对他们下指令 , 因为他们只懂基本的厨房行话(图形指令) 。 这个时候 , 你需要一位“翻译官” , 将这道新菜拆解成更为简单的步骤让帮厨小弟可以理解并执行 。
这个“翻译官”就是CUDA!

(图源:英伟达官方博客)
在CUDA诞生前 , 想用 GPU 做通用计算得绕过图形API(如 OpenGL) , 把计算问题“伪装”成图形渲染问题 , 极其麻烦和低效 。 CUDA的革命性在于它允许开发者直接用类C的语言(后来支持C++、Fortran、Python等)来编写在GPU上运行的代码(称为内核 kernel) 。 英伟达也为其GPU设计了相应的硬件架构来支持这种计算模式 。
总的来说 , CUDA的核心价值在于 , 通过软硬件协同设计 , 将GPU变成了一个大规模并行数据计算的强大处理器 , 而不仅仅是图形加速卡 。
2
英伟达的CUDA护城河
2006年 , 英伟达正式发布了CUDA架构 , 并在2017年推出了CUDA SDK 1.0 。 GeForce 8800 GTX(G80 芯片)是首款支持CUDA的GPU , 首席科学家David Kirk将其视为异构运算新时代的开始 。
在随后的几年里 , 英伟达陆续推出了Tesla产品线(计算卡) , 并持续更新Fermi、Volta、Maxwell等架构 , 不断提升双精度性能、引入统一内存等特性 , 并大力在高校和科研机构中推广CUDA 。
在科研领域 , 尤其是深度学习的相关研究 , 需要大量的矩阵运算 , GPU的并行特性非常适合 。 于是在2017年 , 英伟达在Volta架构中引入了Tensor Core , 专门用于加速AI训练和推理中的混合精度矩阵乘加运算 。 此后的Ampere、Hopper、Blackwell架构不断强化Tensor Core和AI性能 。 CUDA生态也日益庞大 , 围绕它构建了cuDNN、TensorRT、CUDA-X等众多加速库和工具 , 形成了深厚的软硬件生态护城河 。

(原创:据公开资料整理)
CUDA的成功 , 不仅在于技术本身 , 更在于其构建的庞大生态系统 。 数百万开发者、大量的学术研究、商业应用都基于CUDA , 这种网络效应和迁移成本使得其他厂商难以在短期内撼动其地位 。
相关从业人士也表示 , “CUDA生态系统埋藏着巨大的迁移成本 , 它充当PyTorch和英伟达GPU之间的桥梁 。 从CUDA迁移的开发者通常必须重写大量代码 , 被迫使用不太成熟的替代库 。 此外 , 开发者还会失去围绕CUDA发展起来的庞大故障排除社区的支持 。 ”
野村证券近期发布的报告显示 , 目前英伟达GPU占AI服务器市场80%以上市场份额 。 然而近年来 , 随着中美摩擦的升级 , 美国对中国实施了严格的AI限制措施 , 英伟达在中国的市场份额持续下滑 。
“美国针对中国的AI出口管制是失败的 。 ”据路透社、法新社等媒体5月21日报道 , 英伟达公司首席执行官黄仁勋当天在台北国际电脑展上表示 , 英伟达在中国的市场份额已经从美国前总统拜登刚上任时的95%下滑到了目前的50% 。 对于美国实施的AI限制措施 , 黄仁勋再次直言 , 美国这项策略“完全错误” , “如果限制令的目标是确保美国保持领先 , 那么按照目前的规定来看 , 这反而会导致我们失去领先地位” 。
在美国的限制令下 , 中国芯片厂商得到了发展的空间 。 其中 , 华为昇腾无疑抓住了这个机会 。
3
华为的机会和挑战
昇腾(Ascend)芯片是华为(海思)自研的、专门面向高性能AI计算的NPU(神经网络处理器)芯片 。昇腾芯片是一个大系列 , 主要包括昇腾310和昇腾910两个子系列 。
在2018年的华为全联接大会上 , 华为轮值CEO徐直军首次阐述了他们的AI战略 , 并正式公布了昇腾910和昇腾310两款AI芯片 。 当时 , 实体展示的 , 是昇腾310 。一年后 , 2019年8月 , 华为又正式推出了昇腾910 。
除了硬件之外 , 华为也致力于构建昇腾计算产业生态 , 包括围绕着昇腾计算技术和产品体系所开展的学术、技术、公益及商业活动 , 产生的知识和产品以及各种合作伙伴——主要包括原始设备制造商OEM、原始设计制造商ODM、 独立硬件开发商IHV、咨询与解决方案集成商C&SI、独立软件开发商ISV、云服务提供商XaaS等 。
而CANN , 则是最基础的昇腾计算软硬件体系中的核心之一 。

(图源:昇腾计算产业发展白皮书)
然而 , 相较于CUDA , CANN在开发者规模、架构成熟度和生态完善度方面 , 均存在差距 。 这在很大程度上影响到昇腾芯片的易用性 , 用户在生态路线选择上更倾向于前者 。
为了扩大生态圈 , CANN逐步兼容了更多AI框架 。 截至目前 , CANN已支持包括PyTorch、MindSpore、TensorFlow、飞桨、ONNX、计图、OpenCV和OpenMMLab等深度学习框架与第三方库 。
为了缩小差距 , 让客户适应新生态 , 据去年9月外媒的报道 , 华为效仿英伟达最初推广CUDA的策略 , 向百度、科大讯飞和腾讯派遣了工程团队 , 帮助他们在CANN环境中重现和优化现有的基于CUDA的训练代码 。
同时 , 华为也在与高校积极合作 。 例如 , 西北工业大学的徐韬教授及其课题组 , 将昇腾CANN等专项课程融入教学体系 , 高校开发者得以直面昇腾处理器优化的实际需求 , 系统掌握从算法设计到硬件适配的全链条技能 。
为了进一步加速生态的建构 , 华为表示 , 来自AI领军企业、伙伴、高校与科研机构的代表共同探讨了如何更好地构建开源开放的昇腾生态 , 共同发起了《CANN开源开放生态共建倡议》 , 以凝聚产业力量 , 共探AI边界 , 共建昇腾生态 。
华为专家在接受媒体采访时表示 , “我们坚持CANN实现分层深度开放 , 从最底层的算子开发层 , 到模型开发层、推理层 , 进一步兼容三方开源框架 , 让运行在三方框架、推理引擎上的模型/应用迁移至昇腾无需修改 。 面向应用开发层 , 我们将面向应用开发提供更多SDK , 让应用部署更便捷 , 模型训练和推理更高效 。 ”
与之相对的 , CUDA实际上是闭源的 。 其编译器NVCC、数学库以及深度学习加速库等 , 均仅以二进制库形式提供 。 开发者无法修改底层逻辑 , 只能依赖英伟达的优化更新 。 此外 , CUDA仅支持英伟达GPU , 通过硬件指令集和驱动层实现软硬件协同 。 由于CUDA与硬件深度绑定 , 加之英伟达通过EULA协议禁止其他硬件厂商直接接入CUDA接口 , 迫使其他厂商不得不开发独立的生态体系 , 导致性能与易用性存在显著差距 。
相比CUDA闭源 , 此次CANN开源 , 无疑是华为希望尽快扩大CANN生态圈的最新举措 。 然而 , 想要挑战英伟达通过技术先发、生态闭环和商业控制而形成的垄断地位 , 华为还有很长的路要走 。
4
写在最后
在美国实施技术封锁的背景下 , 昇腾芯片的推出 , 为中国构建自主的AI计算基础设施提供了重要的支撑 。 然而去年5月 , 中国工程院院士孙凝晖表示 , 华为走的中式封闭垄断的路线 , 难以对抗西式的封闭垄断 。 这番言论 , 当时在网络上引发了巨大争议 。
在孙凝晖院士看来 , 目前全球高水平的CPU设计、GPU设计、操作系统设计已经被美国所垄断 , 中国要想在这些领域取得突破 , 就需要用开源模式去打破西方的生态垄断 , 降低企业拥有核心技术的门槛 , 让每个企业都能低成本地做自己的芯片 , 形成智能芯片的汪洋大海 , 满足无处不在的智能需求 。 用开放形成统一的技术体系 , 我国企业与全球化力量联合起来共建基于国际标准的统一智能计算软件栈 , 形成企业竞争前共享机制 , 共享高质量数据库 , 共享开源通用底座大模型 。 简单来说 , 就是必须要依靠全产业链的共同发展 , 而非单纯的依靠一两家企业所构建的封闭体系 。
此次华为宣布“昇腾硬件使能CANN全面开源开放 , Mind系列应用使能套件及工具链全面开源” , 无疑是一次重大的战略转向 。 开源CANN是构建生态的正确且关键的一步 , 但开源之后的社区建设和运营能力将是更大的考验 。 这需要华为持续投入 , 并真正以开放、透明、协作的方式与全球开发者社区互动 。
正如徐直军在昇腾峰会所言:“开源不是终点 , 而是生态共建的起点 。 ”

    推荐阅读