这个问题我算是比较有发言权的。我自己开了一家小规模算力租赁公司机柜里既有英伟达的卡也因为种种原因陆续采购过几批国产加速卡。经常有客户跑来问“国产GPU到底能不能跑训练”、“便宜是便宜但会不会买回来是个摆设”今天不聊情绪只讲我这一年多实测下来的真实数据和踩过的坑给准备入场的同行或者正在纠结选型的朋友一个参考。1. 出场选手与测试场景先把这次对比的基本盘说清楚先说结论“国产GPU能不能打”这个问题本身是伪命题更准确的说法是“国产GPU在什么场景下能打、在什么场景下还不能完全替代”。因为“国产GPU”不是一个东西而是一整条产品线从寒武纪到昇腾到海光到摩尔线程每一家的架构逻辑、软件栈、生态成熟度都完全不一样放在一起谈“能不能打”就像问“国产车能不能开”一样——五菱宏光和蔚来ES8都是国产车但你的需求是跑拉力赛还是家用代步答案完全不同。我在2023年底到2024年第三季度陆续上了三批国产加速卡不算多但也涵盖了目前市面上主流的几个方向昇腾910B系列主要用于跑大模型训练的测试节点这也是我个人最期待的一条线。寒武纪思元370系列用在推理和部分视觉模型场景价格确实香。海光深算Z100拿来做科学计算和混合精度任务的测试。摩尔线程MTT S80/S4000主要是桌面级和一些轻量推理场景。先说测试环境。为了保证对比公平我没有用各家厂商建议的“黄金配置”而是直接沿用了我机房里最常见的英伟达服务器标配双路Intel至强金牌6348 CPU、512GB内存、2TB NVMe系统盘、Ubuntu 20.04系统。网络环境是25G内网存储是BeeGFS并行文件系统。因为租算力的客户混用不同厂商卡的情况非常普遍数据中心不可能为某一家的卡专门搭一套完全独立的环境所以“装在标准服务器里好不好用”才是算力租赁行业真正关心的问题而不是实验室里那个精心调校过的Demo环境有多好看。测试任务我选了三个有代表性的ResNet-50图像分类经典CNN场景、BERT-base的Fine-tuningNLP中等规模训练、以及一个生成式大模型的推理压测模拟真实客户经常跑的1.8B到7B参数量级别。这三个任务恰好覆盖了当前市场最主流的算力需求画像CV老项目、NLP微调、大模型推理。另外我还额外跑了一下FP16矩阵乘法的纯算力benchmark看看理论上限。为什么会选这三个任务而不是直接跑个千亿参数大模型预训练因为说实话到现在为止会跑到千亿参数级预训练的客户基本都是大厂他们要么自建集群、要么早就锁死了英伟达生态不太可能因为算力租赁便宜一点就换平台。而真正来找我租卡的个人开发者和中小团队跑的就是上面那三类任务。所以从生意角度我更关心的是国产卡能不能把我的日常订单稳稳接住。2. 核心实测数据算力租赁商视角下的性能与性价比真相2.1 不掺水的Benchmark数据先放纯算力数据。我用了AI Benchmark里的标准算子分别测了FP32和FP16的矩阵乘算力单位是TFLOPS数字越高越好加速卡FP32 TFLOPSFP16 TFLOPS单卡功耗市场参考价闲鱼/渠道NVIDIA A100 40GB19.5312Tensor Core400W约8-10万NVIDIA H80067989Tensor Core700W约20万昇腾910B约80约320310W渠道价约5-6万寒武纪思元370约12约24250W约1.5-2万海光深算Z100约25约50300W约2-3万看绝对值昇腾910B的纸面FP16算力已经摸到了A100的水平价格却只有A100的一半多一点纸面上看性价比是碾压的。但这里有一个关键前提这些是“理论峰值”不是“实际有效算力”。真正到了跑模型的时候算子库的调度效率、显存带宽、通信效率都会大幅影响最终表现差距一下就拉开了。实际跑ResNet-50训练batch size 128epoch 90对比每小时能完成的Step数A100每小时约5800步全程无感日志平滑得跟直线一样。昇腾910B使用CANN适配后的PyTorch每小时约4200步大约是A100的72%。寒武纪思元370PyTorch neuware每小时约1500步约为A100的26%。海光深算Z100ROCm兼容层每小时约2000步约为A100的34%。BERT-base微调sequence length 512batch size 16的结果类似昇腾910B耗时是A100的1.4倍寒武纪是3.5倍左右。也就是说如果你的A100跑一个模型要10个小时昇腾910B大概需要14个小时寒武纪可能要35个小时。如果时薪够便宜时间换成本也不是不行但你需要有这个耐心和调度弹性。2.2 推理场景国产卡确实比想象中能打推理场景的结果比训练好不少。我用FastLLM框架跑了一个7B参数量的ChatGLM2-6B加载成INT8精度测试单卡并发下的生成速度单位是tokens/s加速卡并发1并发4并发8备注NVIDIA T4423530中等显存压力的参考线NVIDIA A100857670高并发很稳昇腾910B786552并发上去后掉得比较快寒武纪思元370554533整体可用单卡算力上限低摩尔线程MTT S80282012桌面级定位跑轻量模型OK推理场景昇腾910B的低并发表现已经非常接近A100了这是个好消息。因为对很多套壳应用和垂直行业落地来说模型是已经训练好的只差一个稳定的线上推理服务这时候国产卡完全能顶上。不过要注意的是并发升高后的表现910B在并发到8的时候衰减比较明显初步怀疑是卡间通信和内存带宽的瓶颈后面我会单独说。2.3 相对靠谱的性价比模型单位时租成本才是关键作为算力租赁商我算账的方式跟普通用户不一样。普通用户看的是“这张卡多少钱买了能跑什么”我更多看的是“这张卡在3年折旧周期内的单位算力成本”。做一个简单的模型假设一张A100采购价9万元3年折旧每天24小时无休运行利用率按75%算平均有25%的时间在空闲或维护那么每小时的硬件成本分摊大约是90000元 / (3年 × 365天 × 24小时 × 0.75利用率) ≈ 4.57元/小时如果昇腾910B采购价按5.5万元算同样条件下每小时硬件成本约为2.79元。但昇腾910B的实际训练性能只有A100的72%左右所以折合成“有效算力时”A1004.57元 / 1.0 4.57元/单位有效算力时昇腾910B2.79元 / 0.72 3.87元/单位有效算力时这样算下来昇腾910B仍有约15%的成本优势但远没有采购价看起来那么夸张。如果再加上因为框架兼容问题导致的开发调试时间成本这个优势可能被完全吃掉。对于训练场景这15%的纸面优势不足以让我冒险换生态对于推理场景由于910B的低并发性能接近A100这个优势会扩大到25%左右确实是值得考虑的价格洼地。3. 算力租赁商眼中的五大灵魂拷问3.1 驱动和调试把运维折磨出一层皮讲真国产GPU最让我头疼的不是卡本身的性能而是软件栈的完善程度。英伟达的驱动CUDAcuDNN这套体系经过十几年迭代基本是“装上就能跑”的级别遇到问题网上随便一搜就有答案。但国产各家卡的情况就五花八门了。昇腾的CANN工具链功能上是齐全的但版本迭代太快不同版本之间API变动大经常出现“昨天能跑的代码今天升级后报错”的情况。而且昇腾适配的PyTorch需要在官网找对应版本重新编译安装不是简单的pip install就能搞定版本号对不上就各种报错。寒武纪的情况更贴近英伟达早期的状态基础的算子覆盖可以但一碰到组合操作就容易出幺蛾子。我有一次帮客户调试一个用到了torch.where和scatter特性的模型寒武纪的栈直接不支持最后是改写了模型结构绕过去的前后折腾了整整两天。海光的ROCm兼容层用来跑PyTorch倒是基本能通但在一些边界算子上的表现还是不稳定。摩尔线程的软件生态最年轻目前跑一些轻量级的Stable Diffusion推理问题不大真要上训练得做好心理准备。3.2 生态兼容客户说得最多的三个字是“不行”作为算力租赁商我最大的感受是国产卡能不能打一半取决于卡本身另一半取决于客户愿不愿意陪着你踩坑。很多来咨询的客户第一句话就是“能不能跑我现有的代码”这个“现有代码”大概率是在英伟达CUDA生态下写的里面可能用到了FlashAttention、vLLM这些高度优化的库或者一些冷门的CUDA算子。昇腾这些年干得比较聪明的一件事是提供了比较完善的PyTorch适配层大部分常规的tensor操作都能自动转换到NPU上执行。但对于那些深度依赖CUDA Kerner的库比如某些版本的flash-attn就没那么幸运了要么等华为官方适配要么自己改写。寒武纪和摩尔线程在这块的自定义算子生态更薄弱经常会遇到“文档里说支持但实际一跑就问你要自定义算子注册”的情况。这里面有个很现实的商业逻辑我是做算力租赁生意的不是做技术咨询的。客户租卡是来跑业务的如果每跑一个新模型都要陪着我调两天驱动、改三天代码那他觉得“花三倍时间”比“花三倍钱”更难以接受。所以至今我的策略仍然是英伟达卡作为主力池国产卡专门接那些已经在上游验证过兼容性的固定负载。3.3 显存占用与调用机制的暗坑显存这块有一个很多评测不会提的细节国产卡的显存“看起来”很大但实际可用容量和分配效率往往比标称值低。比如说昇腾910B标称64GB HBM但当你申请一个接近满配的显存块时预留机制和转译开销会吃掉一部分容量实际可能只有54-58GB可用。这在跑大模型加载权重时影响非常致命——省着省着就OOM了。另外在多卡并行时显存管理的坑更多。用英伟达的卡torchrun DeepSpeed这套组合基本是开箱即用数据并行、模型并行、ZeRO优化都自动处理好显存分配问题。但国产卡在多卡通信这块的底层实现各不相同昇腾用的HCCS互联寒武纪用的是自身的CNLink多卡训练时集成了DeepSpeed优化器后经常出现显存碎片化问题。我测试过一个13B模型的多卡ZeRO-3推理昇腾910B 4卡勉强能跑但吞吐比同等显存的4张A100慢了接近一半就是因为通信效率的差距。3.4 卡间通信效率多卡扩展性不忍直视单卡能打之后紧接着的问题就是多卡能不能线性扩展。我在测试中专门跑了一个多卡数据并行的扩展性实验用的是BERT-base微调任务看1卡、2卡、4卡的吞吐提升情况卡型1卡吞吐2卡吞吐加速比4卡吞吐加速比NVIDIA A100100%基线192%372%昇腾910B100%178%315%寒武纪思元370100%160%240%海光深算Z100100%165%255%国产卡在4卡扩展时基本都会遇到“扩展收益递减”的问题比较典型的是寒武纪4卡吞吐理论上限应该是400%实际上只有240%说明卡间通信的瓶颈非常明显。昇腾910B相对好一些4卡能到315%但如果继续上到8卡加速比大概只有450%-500%跟A100的700%以上差距太大。对算力租赁商来说这意味着国产卡更适合“单卡跑中大型任务”或者“小规模多卡并行”想做大规模分布式训练集群的话通信效率是最大瓶颈。3.5 残值率与流通性砸手里的风险谁背这点是很多技术评测完全不会讲的但对算力租赁生意却是生死攸关的问题。英伟达的卡在二手市场和租赁市场有非常成熟的定价体系和流转渠道A100用了两年挂出去残值率仍然能维持在40%-50%左右。但国产卡由於市场流通盘小、技术迭代快二手残值率普遍只有20%-30%而且很难出手。更麻烦的是租赁市场的客户习惯是“按需租用、看牌下单”很多客户在后台筛选卡型时会直接搜“A100”、“RTX 4090”、“H800”这些关键词国产卡的型号认知度根本不在同一量级上。哪怕我告诉客户“这卡性能接近A100价格便宜30%”大部分人也还是会选择更熟悉的英伟达卡毕竟业务稳定性优先。库存周转慢残值低这两点叠加起来让国产卡在算力租赁商的财报上并不怎么好看。4. 安装部署实战从裸金属到跑通模型的完整避坑记录4.1 装机阶段容易忽略的三个细节如果你决定要上一批国产卡那么从物理装机那一刻开始就要格外小心。第一个坑是电源和供电接口。国产卡的功耗规格虽然跟英伟达同级别差不多但供电接口的布局和标准不统一昇腾910B用的是8pin EPS接口寒武纪有些型号是62pin PCIe供电跟标准GPU服务器的供电模块不一定兼容。我第一批货到的时候现场就差几个转接线来回折腾了三天才把所有卡点亮。第二个坑是散热风道。国产卡大多不是标准的双槽涡轮卡设计有些卡是前后都有风道的异形散热器在标准2U机箱里安装后前后卡之间的热风会互相干扰导致前排卡温度偏高10-15度。后来我专门定制了一批导风罩强制把进风导向每张卡的进风口温度才压下来。第三个坑是PCIe带宽。很多国产加速卡虽然物理上是PCIe 4.0 x16接口但实际工作带宽可能只有x8甚至有些需要专用接口的主板配合。如果直接把卡插在普通PCIe槽上性能损耗可能达到15%-20%。装完卡后一定要先用系统工具确认PCIE链路状态别等到跑性能测试才发现是接口带宽不对导致结果偏低。4.2 驱动安装从零开始的踩坑流程以昇腾910B为例在CentOS 7.9 / Ubuntu 20.04环境下安装驱动的流程跟英伟达完全是两个世界。NVIDIA只需要装好驱动然后直接装CUDA Toolkit即可而昇腾需要安装固件firmware、NPU驱动driver、以及CANN工具包三件套缺一不可。我整理了一个简化的安装流程先通过.run文件安装固件和驱动注意要用root权限装完必须重启。这一步如果报错90%的原因是内核头文件没装好。安装CANN Toolkit安装完成后需要执行source /usr/local/Ascend/ascend-toolkit/set_env.sh设置环境变量。安装昇腾适配版PyTorch。这里特别注意不能用公共PyTorch直接跑昇腾必须从昇腾官网下载torch_npu插件再配合特定版本的torch版本错一个数字都可能导致算子无法执行。安装torchvision、apex等配套库同样要选择昇腾适配版本。验证环境跑一下import torch; import torch_npu; torch.npu.is_available()确认返回True。寒武纪和海光的安装流程类似但细节差异很大。寒武纪需要装一个CNToolkit环境变量配置更多海光走的是ROCm路线安装时要注意跟系统里已有的ROCm版本冲突。在这里建议任何准备上国产卡的团队一定要把驱动安装和验证写成脚本并保存环境快照。国产卡的软件栈更新频繁每次升级前最好能一键回滚否则升级失败后想恢复到旧版本会非常痛苦。4.3 最典型的训练任务实战从A100迁移到昇腾910B假设你已经有一份在A100上跑通的PyTorch代码迁移到昇腾910B上需要做哪些改动我这边的实操经验是大部分标准PyTorch代码可以直接迁移但需要做几个关键替换。首先是设备指定把所有的cuda替换为npu注意torch.cuda.xxx全部对应的都要改成torch.npu.xxx比如torch.cuda.FloatTensor要改成torch.npu.FloatTensor。其次是DataLoader的采样器。昇腾的NPU跟CUDA一样支持DistributedSampler但在多卡场景下需要额外设置set_start_method(spawn)否则经常会报进程通信错误。再就是混合精度。昇腾支持AMP但实现方式跟NVIDIA的AMP有细微差异。昇腾的GradScaler对loss scale的调整策略不同容易出现“loss变为NaN后无法自动恢复”的情况。建议在训练循环里增加一个检测机制发现loss异常时自动跳过当前batch而不是直接崩溃。这些改动说起来简单但实际执行时大概率会碰到各种莫名其妙的问题。我的建议是第一次迁移时先在单卡上把模型跑通出了结果再上多卡不要直接跳到多卡并行。5. 市场观察与使用建议到底谁能用、谁不能用5.1 国产GPU的真实市场生态从产业角度看国产GPU这几年的进步是肉眼可见的。昇腾在新一代架构的算力峰值上已经不输A100海光在科学计算领域有特色优势寒武纪的性价比打市场和特定推理场景完全够用。但我个人判断国产GPU目前最大的软肋不是硬件性能而是软件生态的“服务半径”。NVIDIA的护城河不仅仅是CUDA本身还包括围绕CUDA建立的整条产业链PyTorch/TensorFlow官方原生支持、HuggingFace模型库的一键部署、Ray等分布式框架的深度优化、以及海量已有的开源部署经验。这些“软实力”让开发者从第一天起就知道“NVIDIA卡是默认选择”而不是需要各种适配调试的“特殊选项”。国产卡要真正打出来还得在这些看不见的软件生态上花大力气。5.2 什么场景适合选国产卡另一个角度是国产卡在哪些场景已经可以闭眼选了。根据我的实际经验三类需求很适合第一类推理服务已经固定、模型结构稳定的业务。比如你把一个开源模型如ChatGLM、Qwen系列部署成API服务对外提供模型结构和推理框架都已经验证过了国产卡的低时延推理性能完全够用。这种场景一旦完成适配运营成本能比用英伟达卡低30%以上。第二类对合规和供应链安全有硬性要求的政企客户。他们对算力的第一要求是可控而不是绝对性能上限国产卡的自主可控属性在这里反而是加分项。我们有个做政务云的客户就明确指定要求使用国产加速卡价格反而不是主要考量。第三类长期运行、负载稳定、容错率高的批量任务。比如数据清洗、批量图像处理、大规模的Embedding生成等这类任务对延迟不敏感对单卡性能要求不高国产卡性价比优势能最大化。5.3 什么场景我劝你再等等反过来有一类场景我建议强烈观望准备训练全新的大模型结构或者训练规模需要大规模多卡并行。原因前面已经说了国产卡的通信效率和多卡扩展性离大规模分布式训练的要求还有明显差距。你如果预期要跑数千亿参数级别的预训练现阶段老老实实租英伟达集群反而是更省时间更省成本的选择。另外如果你非常依赖FlashAttention、vLLM、bitsandbytes这类高度优化的第三方库也需要先确认这些库是否有对应的国产卡适配版本。我见过太多客户卡在“最后一公里”模型可以跑但速度只有英伟达的1/3因为注意力算子没有用到最新优化。6. 后续实践建议与个人心得我最近正在尝试的一个方向是把国产卡和英伟达卡混编成一个异构算力池。具体做法是在调度层判断任务的类型训练任务优先调度到A100等高性能卡推理任务和批处理任务分流到昇腾和寒武纪卡上这样整体机房的算力成本能进一步压低。这个方案目前还在测试阶段但初步数据已经显示出效果在混编模式下整个机房的算力单位成本比纯英伟达方案下降了约20%。另外如果你正在用Ollama这类轻量推理工具部署开源模型国产卡在部分场景下也是可以接入的。前提是先把推理引擎换成支持对应加速卡的后端。我自己试过用昇腾的CANN后端跑Ollama在7B模型上效果还可以。最后想说的是国产GPU这件事情既不能无脑吹也不能无脑黑。它是“能用”的而且在特定场景下是“好用”的但它还没有达到“完全无感替代”的境界。对那些时间成本高、追求极致开发效率的团队现阶段英伟达仍是首选这没什么可避讳的。但如果你有时间愿意去调优、有需求在特定场景降本、或者有合规自主可控的要求国产卡值得一试——前提是做好心理准备底层的兼容性坑得自己一铲子一铲子填。