出品 | 网易智能
作者 | 小扣
编辑 | 王凤枝
做大模型的DeepSeek,为什么要给国产芯片写软件?
9月30日,DeepSeek宣布开放面向昇腾的基础设施组件,帮助开发者编写程序、提高计算效率,让多张芯片协同工作。此前面向英伟达平台开放的组件,如今有了对应的昇腾版本。
DeepSeek自己就需要大量算力。芯片买到手,还得让模型在上面高效运行。
把昇腾的软件适配做好,它就更有条件把计算任务交给国产芯片,在英伟达之外多一种选择。
芯片的算力,还得靠软件用起来
模型运行时,要反复计算、读取数据,多张芯片之间还要传递结果。如果这一轮计算已经做完,下一批数据却没送到,芯片就只能等;数据反复搬运,同样会拖慢进度。
软件需要把这些环节安排好,尽量减少等待和重复操作。
这些程序还要针对硬件调整:不同芯片的计算单元、存储和数据传输方式不同,适合英伟达GPU的实现,换到昇腾上也要重新适配。
DeepSeek为这些基础工作提供了现成的计算库:DeepGEMM加速矩阵运算,TileKernels处理常规向量计算和数据读写,FlashMLA则优化稀疏注意力计算,提高模型处理长文本的效率。
FlashMLA项目文档给出了昇腾950上的测试结果:在处理输入内容的“预填充”阶段,稀疏注意力计算性能最高达到硬件理论峰值的95%;在逐步生成内容的“解码”阶段,最高达到83%。
DeepSeek做过的工作,别人可以接着用
DeepSeek自己训练模型时,就要编写大量执行基础计算的程序,也就是“算子”。
公司称,V4系列训练中的大部分算子使用编程工具TileLang实现;训练中用到的每一个TileLang算子,如今都有对应的昇腾实现。
华为团队参与了这批组件的研发支持。双方还在共同推进昇腾950的128卡超节点方案,让这批芯片更高效地协同计算、交换数据。
如果这些代码只留在DeepSeek内部,其他模型团队遇到相似问题,仍得自行适配。
开源后,开发者可以检查、复用已有实现,再按自己的模型调整,减少一部分重复开发。
计算库TileKernels新增昇腾支持后,英伟达GPU和华为NPU上的相应功能,就能通过同一组Python接口调用,由程序自动选择硬件后端。使用这些功能的代码,不必再因为更换芯片而重写一遍。
英伟达难追的,还有芯片之外的积累
英伟达提供的并不只是一张GPU。人们常说的CUDA,背后包括计算库、编译器,以及查找程序错误、分析性能的工具。开发者既要把程序写出来,也要有办法查清楚:为什么跑不动,哪里拖慢了速度。
模型扩展到多张卡、多台服务器上运行,英伟达还有NCCL这样的通信库,负责协调数据交换。这些工具与硬件配合,让开发者有现成的办法处理从单卡计算到多机协作的问题。
团队已经写好的代码、工程师熟悉的调试方法,也会影响下一次采购。
换一种芯片,要算的不只有硬件价格,还有程序要改多少、多久才能投入使用。
对赶着训练和发布模型的公司来说,时间同样是成本。
DeepSeek这次为昇腾开放的计算和通信组件,也需要华为配套的软件环境。以DeepEP昇腾版为例,一些功能仍在开发,部分性能测试依赖尚未公开分发的手动配置。其他团队要复现这些结果,还得配齐相应的硬件、软件和固件。
国产芯片要追上英伟达,还得让更多团队用起来。针对一个模型做好的优化,要能用到其他模型上;从几张卡扩展到几百张卡,程序也要跑得稳。
工具是否齐全、遇到问题能否及时解决,都会影响开发者下一次还愿不愿意选它。
热门跟贴