华为CANN替代英伟达CUDA:难度解析与前景展望

发表时间: 2024-06-14 20:34

在数字时代,石油曾是工业的血液,驱动着世界的运转。然而,随着人工智能的兴起,一种新的能源正在悄然崛起,它就是算力——AI时代的新石油。这不再是关于地下的挖掘,而是关于数据的开采和智能的提炼。在这个新纪元,算力成为了衡量一个企业、一个国家乃至一个文明进步的关键指标。

每一个算力时代,都有两大核心,一个是计算芯片,另一个是操作系统。在CPU时代,就是大名鼎鼎的Wintel联盟。那么在AI时代呢?目前看最有可能的就是英伟达的GPU+CUDA。也就是说,英伟达集最强的AI算力和AI操作系统于一身,难怪其市值能直逼3万亿美元。

在CPU算力时代,我们被Wintel卡了很多年脖子。直到华为芯片+鸿蒙操作系统的出现,我们才看到了一点点“解套”的曙光(注意,也仅仅是一点曙光)。上一个卡点还没解决好,英伟达GPU+CUDA又成了AI时代的另一个卡点。

那这一个卡点该怎么解决呢?目前来看,还是得靠华为——Ascend(昇腾)+CANN。但这有几成胜算呢?要知道,生态的壁垒是最难打破的。鸿蒙都不能算成功了,CANN要打破CUDA的围堵,还有漫漫长路。

老牌霸主,英伟达CUDA的统治力

CUDA(Compute Unified Device Architecture),由英伟达在2006年推出,标志着GPU并行计算的新时代的开启。这一创新的并行计算平台和API模型,不仅让GPU超越了图形渲染的界限,更在科学计算、深度学习、数据分析等领域发挥着巨大的作用。CUDA的诞生,使得开发者能够利用GPU的强大并行处理能力,为各种计算密集型任务提供了加速的可能。

自诞生以来,CUDA经历了多个重要版本的更新,每一次更新都为行业带来了深远的影响。例如,CUDA 2.0引入了对双精度浮点运算的支持,这对科学计算尤为重要。随后的版本,如CUDA 4.0,特别强调了对多GPU系统的支持,允许更加灵活的数据共享和任务分配,进一步推动了高性能计算的发展。到了CUDA 11,英伟达特别重视对大规模数据集和AI模型的支持,以及增强的异构计算能力,这在深度学习领域的应用尤为突出。

CUDA不仅仅是一个计算平台,它更是一个庞大的技术生态系统。英伟达通过CUDA,构建了一个包括开发库(Libraries)、运行时(Runtime)和驱动(Driver)在内的完整软件栈。这个生态系统为开发者提供了丰富的工具和资源,包括数学和科学计算任务运算库、便捷的应用开发接口等,极大地促进了技术创新和应用开发。

CUDA的统治力在GPU行业中是显而易见的,CUDA平台的广泛应用和强大的生态系统,为英伟达在高性能计算、人工智能、数据中心等领域提供了坚实的基础。随着技术的不断进步和市场需求的增长,CUDA的市场份额和行业影响力预计将会进一步扩大。

CUDA的成功不仅在于其技术优势,更在于它所构建的生态系统和社区。数百万的开发者、科研人员和企业在使用和贡献于CUDA平台,形成了一个自我增强、不断创新的循环。这种由下至上的创新模式,使得CUDA能够持续引领行业发展,保持其霸主地位。

CUDA并不缺挑战者

AMD作为GPU领域的另一大巨头,同样拥有自己的并行计算平台来与英伟达的CUDA竞争。AMD的相应技术是ROCm(Radeon Open Compute platform),这是一个开源软件平台,旨在提供高性能的GPU计算解决方案。

ROCm最初发布于2015年,比CUDA晚了整整9年,其旨在为AMD GPU提供类似于CUDA的编程模型和工具链。它支持多种编程语言,包括C++、Fortran等,并提供了一套丰富的数学库和计算接口。

随着版本的迭代,ROCm不断增加新特性和优化性能,例如支持OpenCL、HIP(一种类似于CUDA的编程模型)等,使得开发者可以更容易地将CUDA代码移植到AMD GPU上。

ROCm 5.0版本,对性能和稳定性进行了显著改进,支持了更多的AI框架和库,如TensorFlow、PyTorch等,同时增强了对AMD最新GPU架构的支持。

尽管ROCm在不断进步,但CUDA由于其先发优势和长期积累,已经建立了一个庞大且成熟的生态系统,拥有更广泛的开发者基础和社区支持。CUDA提供了更全面的库支持和优化,这使得在许多情况下,开发者更倾向于使用CUDA。

据JCR统计,英伟达在全球GPU市场中占据了80%以上的份额,而AMD的市场份额相对较小。据统计,CUDA的开发者数量在2020年已达到200万,到2023年增长至400万,显示出其强大的用户基础和需求粘性。

尽管AMD的ROCm在开放性、多供应商支持方面具有优势,但要想在短期内撼动CUDA的市场地位几乎不太可能。

来自中国的挑战者——华为CANN

除了AMD的ROCm,英伟达CUDA的另一个挑战者,是来自中国的CANN。CANN(Compute Architecture for Neural Networks)的诞生标志着华为在AI算力领域的深入布局,作为昇腾AI全栈的核心,CANN扮演着承上启下的关键角色,适配多框架与多异构芯片,为多样化的AI应用场景提供高效易用的编程方式。

自CANN 1.0的诞生之日起,华为便在AI算力领域展开了一场技术革新的马拉松。随着AI技术的不断进步,CANN也迎来了快速的迭代更新。

CANN 3.0的发布,标志着华为在异构计算架构上的一次重大飞跃。这一版本不仅优化了与上层深度学习框架的兼容性,更在底层AI硬件的适配上做了深入的工作,实现了软硬件之间的高效协同。这种优化大幅度提升了AI模型的开发效率和运行性能,为AI应用的快速部署和稳定运行打下了坚实的基础。

紧接着,CANN 5.0的问世,自动流水技术的应用,使得计算任务能够在硬件上实现无缝衔接,极大提高了计算的并行度和执行效率。算子深度融合技术,通过减少计算节点和内存拷贝,进一步提升了性能。自适应梯度切分技术优化了大规模集群训练中的梯度同步问题,降低了通信拖尾,提高了训练效率。而智能计算调优技术,则通过自动化的调优策略,为不同网络模型提供了定制化的优化方案,使得CANN 5.0在性能上实现了质的飞跃。

CANN 6.0商用版也已于2022年发布,支持新的操作系统、pyACL接口,以及虚拟机直通场景算力切分等功能。

此外,CANN社区版6.2.RC2.alpha001和6.3.RC2.alpha005版本也相继发布,支持Ascend 310B芯片和Ascend 310P/910系列相关产品,进一步扩展了CANN的应用范围和兼容性。

进入2024年,CANN 7.0.0、CANN 7.0.1相继发布,可见CANN正在加速成长。看来,华为也有点着急了。

CANN的持续发展不仅体现了华为在AI算力领域的技术积累,也展现了其构建全场景人工智能平台的决心。通过不断的技术创新和版本迭代,CANN正逐步成为推动AI产业发展的重要力量。

CANN与CUDA的“战况”

华为CANN与英伟达CUDA在AI和高性能计算领域扮演着相似的角色,它们都是各自公司技术架构中的关键一环。CUDA作为一个并行计算平台和编程模型,释放了英伟达GPU在处理计算密集型任务时的强大潜力。同样,CANN为华为昇腾AI处理器提供了一个专门的异构计算架构,以实现高效的AI模型训练和推理。

两者都为开发者提供了硬件加速的能力,通过专门的编程接口和API,使得在专用硬件上运行的程序能够充分利用其计算能力。它们还建立了各自的生态系统,包括工具、库、框架和社区支持,这些资源极大地促进了开发者的工作效率。

尽管CUDA主要针对英伟达的GPU,而CANN专为华为昇腾AI处理器设计,但它们都在努力实现跨平台的支持,以满足不同应用场景的需求。此外,CANN和CUDA都通过不断的技术创新和版本迭代,对性能进行了深度优化,确保了更快的处理速度和更高的计算效率。

接下来,我们就从几个不同的角度,来将CANN与CUDA进行对比。

CANN与CUDA的设计哲学体现了两种不同的技术逻辑,CANN,作为华为昇腾AI处理器的使能平台,其设计初衷是提供全栈AI解决方案,以适应多样化的AI应用场景。CANN的架构优化了软硬件协同,注重在异构计算环境中的性能和效率。相比之下,CUDA由英伟达推出,是一个成熟的并行计算平台和编程模型,其设计哲学着重于利用GPU的强大并行处理能力,服务于广泛的计算密集型任务,包括但不限于AI。也就是说,CUDA的通用性和适用范围比CANN更广。

华为将CANN置于其AI战略的核心位置,视其为推动昇腾AI处理器市场竞争力的关键。CANN不仅是技术实力的展示,也是华为构建开放AI生态系统、推动AI技术普及的重要工具。对英伟达而言,CUDA是其GPU技术的延伸,通过CUDA,英伟达巩固了其在高性能计算和AI领域的领导地位,同时CUDA的广泛采用也为英伟达带来了显著的网络效应。

在性能方面,CANN和CUDA各有千秋。CANN通过自动流水、算子深度融合等技术,在AI模型训练和推理性能上取得了显著进步。CUDA则凭借其成熟的优化和广泛的硬件支持,提供了极高的计算效率和稳定性。两者在处理速度上的竞争,也反映了它们在不同应用场景下的性能优化策略。

CANN和CUDA在不同的应用场景中展现出各自的优势,CANN在处理大规模AI训练和推理任务时,特别是在华为昇腾AI处理器上,展现出优异的性能。CUDA则因其广泛的硬件兼容性和成熟的生态,被广泛应用于科学研究、工程设计、内容创作等多个领域。

当然,虽然华为CANN在某些方面做出了自己的特色,但要拼综合实力,其离英伟达CUDA还有不小的距离。

更重要的是,开发者生态的竞争。CUDA拥有庞大的开发者社区和丰富的学习资源,为开发者提供了强大的支持。华为也在积极构建CANN的开发者生态,通过提供丰富的工具、文档和社区支持,吸引和培养开发者。然而,华为CANN离构建英伟达CUDA那样完善强大的开发者生态,还有非常遥远的距离。

华为CANN,能成为Ascend(昇腾)芯片的黄金搭档么?

华为CANN作为昇腾Ascend处理器的使能平台,其设计和优化紧密围绕着昇腾Ascend的硬件架构,旨在充分发挥昇腾AI处理器的性能。从这个角度来看,CANN确实有潜力成为昇腾Ascend的黄金搭档,助力华为在AI算力领域的长远发展。

昇腾Ascend的发展历程,是华为在AI算力领域技术积累和创新的缩影。自2018年华为发布昇腾310和昇腾910 AI处理器以来,昇腾系列就以其卓越的性能和专为AI计算优化的设计,迅速在AI处理器市场占据了一席之地。

随后,华为在2019年推出的昇腾AI计算架构进一步丰富了昇腾系列的生态系统,通过整合昇腾处理器、AI加速模块和开发环境,为开发者提供了一个全栈的AI解决方案。这一举措极大地提升了昇腾AI处理器的易用性和灵活性,加速了AI应用的开发和部署。

进入2020年,CANN 3.0版本的发布标志着昇腾AI处理器在性能和开发效率上的一次飞跃。自动流水技术和算子深度融合等创新技术的引入,不仅优化了处理器的计算能力,也简化了开发者的编程工作,使得昇腾AI处理器在处理复杂AI任务时更加高效。

到了2021年,CANN 5.0版本的发布带来了性能上的进一步提升,通过软硬件协同优化,昇腾AI处理器在执行大规模AI模型训练和推理任务时展现出了卓越的性能。而2022年昇腾CANN商用版6.0的发布,支持新的操作系统和虚拟机直通场景算力切分,进一步提升了昇腾AI处理器的适用性和灵活性。

到了2023年,昇腾Ascend的发展持续加速,华为在昇腾AI处理器上的持续投入和创新,不仅推动了AI技术的进步,也为昇腾Ascend在AI算力领域的发展奠定了坚实的基础。

根据最新信息,昇腾Ascend在2024年的出货量预期非常乐观,预估在30万到60万片之间,价格方面也有所上涨。美国对高端GPU和CPU的出口管控导致中国市场对国产算力需求显著增加,去年增长了接近400%,今年需求方面基本上能保持去年的增长速率。此外,昇腾的主要客户包括互联网运营商等,需求量巨大。

近期,英伟达更新了其CUDA用户许可协议(EULA),明确禁止在非英伟达硬件平台上通过翻译层运行基于CUDA的软件。这一政策变动对于依赖CUDA进行AI计算的第三方GPU制造商构成了挑战,尤其是对于那些寻求通过兼容CUDA来扩展其产品的开发者和公司。

英伟达的这一政策变动,无疑增加了华为CANN的紧迫感。如果CANN不能快速发展并提供与CUDA相匹敌的性能和易用性,可能会影响昇腾Ascend在AI算力领域的竞争力,进而拖累其整体发展。然而,这也为CANN提供了一个机遇,通过加强自身的技术创新和生态建设,CANN有可能成为推动昇腾Ascend发展的关键力量。

CANN,能成为AI版的鸿蒙么?

正如文章开篇所说,在传统计算领域,华为鸿蒙已经取得阶段性胜利了,而在AI计算领域,CANN承担了类似的使命。

CANN作为华为昇腾AI处理器的异构计算架构,虽然在功能上与传统操作系统有所区别,但在AI领域的战略意义和作用上,可以将其视为AI版的操作系统。CANN向上支持多种AI框架,如MindSpore、PyTorch、TensorFlow等,向下服务AI处理器与编程,发挥着承上启下的关键作用,是提升昇腾AI处理器计算效率的关键平台。正如鸿蒙OS为华为在操作系统领域提供了自主创新的路径,CANN也在AI算力领域承担着构建和推动华为技术生态发展的重任。

CANN在华为昇腾计算产业生态中的作用 资料来源:《昇腾计算产业发展白皮书》

目前,鸿蒙已经成为中国乃至全球市场的重要竞争者。2024年,鸿蒙OS在中国市场的手机系统份额首次超越苹果iOS,成为第二大操作系统,装机量达到8亿台。这一成就不仅体现了华为在操作系统领域的自主创新能力,也标志着鸿蒙OS在手机、电脑、汽车等多个领域的广泛应用和深入布局。

鸿蒙OS的成功对于华为具有重要意义,它打破了国外厂商在移动操作系统上的长期垄断,为华为在全球市场上赢得了更多的话语权和影响力。鸿蒙OS的广泛应用为华为构建了更加完善的生态系统,增强了其产品的竞争力。此外,鸿蒙OS的成功也为华为在AI算力领域的进一步发展奠定了基础。

类似的,CANN有潜力成为AI领域的“鸿蒙”,肩负起构建华为AI生态的重任。CANN的发展,将直接影响昇腾AI处理器的性能发挥和应用推广。随着AI技术的不断进步和应用领域的拓展,CANN的技术迭代和生态建设将对华为在AI算力领域的竞争力产生重要影响。

要使CANN成为AI版的鸿蒙,华为需要在技术创新、生态建设、应用拓展和社区支持等方面进行努力。技术创新是CANN发展的核心,需要持续优化性能,加强与昇腾AI处理器的协同。生态建设是CANN成功的关键,需要构建开放、协作的AI生态,吸引更多的开发者和合作伙伴参与。应用拓展是CANN实现价值的途径,需要推动CANN在更多AI应用场景中的使用。社区支持是CANN持续发展的动力,需要加强与开发者社区的互动,提供丰富的开发工具、文档和技术支持。

应该说,让CANN去挑战CUDA,其难度甚至比鸿蒙挑战安卓还大。但无论多难,这件事情都值得尝试一下,不然,我们在AI时代面临的卡脖子问题,将比当初的Wintel更加严重。对于华为而言,要是能解决这个问题,那他对于中国的价值,比卖很多手机、汽车更具有战略意义。