设想你经营一家名叫“昇腾”的餐厅。每天要来三千桌客人,每桌都要一道招牌大菜——“矩阵炖乘法”。你得在后厨准备足够大的灶台(算力)、足够近的食材冰柜(内存),还得跑得够快的传菜窗口(互联)。餐厅开业第一年,你只有一个独灶台,叫910B,每天最多接待一千桌。生意太好,你干脆盘下隔壁门面,把两个灶台焊成“连体双灶”,命名为910C。这下接待力翻倍,只是两个灶台之间得开扇窗口递菜,速度打个小折扣。 本文要讲的,就是华为这套“AI厨房”的改造故事:从910B到910C,灶台(CUBE算力)怎么变大、冰柜(HBM内存)怎么扩容、传菜窗(HCCS互联)怎么打通,以及它如何真的给千亿规模的大模型“上菜”。读完你会明白,国产AI芯片并不是纸上谈兵,而是已经端上了真实训练的餐桌。
了解昇腾910B/910C的架构演进,是AI工程师选型国产算力、规划大模型训练集群的必修课,也是理解“算力自主可控”战略的最小切口。
可视化演示
展示昇腾910B与910C规格对比、达芬奇架构Cube/Vector/Scalar三引擎协同及Atlas集群HCCS互联训练。
本节配有交互动效(进入视口后自动加载,约 3KB)。
910B vs 910C规格对比 910B: 320 TFLOPS / 64GB HBM 910C: 640 TFLOPS / 128GB 双芯堆叠 910C = 910B × 2 (双芯粒封装) 算力翻倍
昇腾芯片定位
在AI世界的顶级酒店里,英伟达H100是那位拿过米其林三星的名厨。华为想证明自家后厨也能撑起国宴,于是亮出了昇腾系列——专为大模型训练设计的AI加速芯片。昇腾910B和910C,就是这间后厨里的两位“掌勺师傅”。910B是2023年前后登场的招牌主厨,对标英伟达的A100/H100;910C则是升级版,用双芯堆叠把火力再拉高一截。
昇腾不是普通处理器,而是AI专用芯片NPU(神经网络处理单元)。它和英伟达GPU一样,把绝大部分面积让给了矩阵运算引擎,专门伺候大模型训练里最频繁的“矩阵乘法”这道硬菜。为什么大模型这么吃算力?因为训练一个千亿参数模型,模型每读一个词元,都要做一次完整的“前向+反向”计算,这个代价乘以天文数字般的词元总数,就是必须由芯片扛下的总计算量。
大模型训练需要海量算力,业界常用一个简洁公式估算总计算量:
其中N为模型参数量,D为训练词元总数。
所以,昇腾芯片的使命就是为这盘“大模型硬菜”备足火力。910B是第一版单灶台设计,910C则是把火力翻倍的连体双灶——它们都指向同一个目标:让国产AI训练不再看外人脸色。
- 参数量N模型里有多少个可学习的权重参数。以千亿模型为例,N约等于1000亿(100B),参数量越大,每次“翻炒”食材的量越大。
- 词元数D训练语料被切分成的“词元”总数。1.4万亿词元意味着模型要“读完”全部训练文本,每个词元都要做一次计算。
- 系数6每个参数、每个词元大约需要6次浮点运算——前向传播约2次,反向传播约4次(权重梯度+激活梯度)。这是业界公认的经验常数。
CUBE算力核心
后厨里最能干的“颠勺师傅”叫CUBE。它不干杂活,只做一道菜:矩阵乘加(A×B+C)。大模型训练里超过九成的计算量都是这道菜翻来覆去地炒,所以CUBE方阵越大、翻炒越快,芯片的算力天花板就越高。
在昇腾芯片内部,CUBE是一个矩阵乘加阵列——想象一个16×16的小方阵,每个格子都有一个乘加单元,能把两个矩阵的对应元素成对相乘再加总。一次指令就能完成整块小矩阵运算,这比CPU一个个数字“单挑”快了千百倍。英伟达也有类似设计,叫Tensor Core(张量核心),思路同源。
算力标称值通常用TOPS表示,即每秒万亿次操作。昇腾910B的FP16算力约320 TOPS,910C因双芯堆叠升至约640 TOPS。作为参照,英伟达H100 SXM的FP16约为989 TOPS——昇腾虽有差距,但已站上了同一量级的擂台。
CUBE单元的标称算力可以这样理解:
CUBE方阵就像灶台的“明火等级”——火越大,同样一锅菜翻熟得越快。但光有火不行,食材也得跟得上,于是下一个关键部件是“食材冰柜”HBM。
- 乘加阵列规模M×MCUBE方阵的“格子总数”。若M=16,则有256个乘加单元,一次可处理16×16的矩阵块。
- 时钟频率f方阵每秒“颠勺”的次数,单位GHz。频率越高,单位时间内完成的矩阵运算越多。
- 精度系数k不同数据类型(FP16、INT8等)单位时钟能处理的运算次数不同。FP16下的k取1,INT8下往往翻倍。
HBM高带宽内存
大厨炒菜最怕什么?怕配菜员跑得慢。在CPU时代,“配菜员”是传统内存总线,距离远、速度慢,算力再高也会饿肚子。昇腾后厨的解决办法是:把“食材冰柜”直接搬到灶台旁边,这就是HBM高带宽内存。
HBM(High Bandwidth Memory)是一种3D堆叠式内存,像叠罗汉一样把多层DRAM芯片叠起来,再通过硅中介层与计算芯片封装在同一块基板上。它离计算单元“近在咫尺”,所以延迟低、带宽极高——是传统DDR内存带宽的十倍以上。对大模型训练来说,模型参数和中间激活值都要住在HBM里:容量决定能不能装下千亿参数,带宽决定每秒钟能往CUBE灶台喂多少食材。
昇腾910B配备约64GB HBM,峰值带宽约1.6TB/s;910C因为双芯各带一套HBM,容量约128GB、带宽约3.2TB/s。带宽的物理上限可这样估算:
冰柜越近,出菜越快。HBM就是贴着灶台的“食材直送带”——容量翻倍意味着910C能一口接住千亿模型的全部参数,不用频繁“出去采购”。但冰柜多了,两个灶台之间的配合又成了新问题。
- 总线位宽W内存数据线总数,单位bit。位宽越宽,一次搬运的“食材”越多。
- 时钟频率f内存的等效工作频率,单位GHz。频率越高,数据搬运越频繁。
- 双倍数据速率2DDR类内存在时钟上升沿和下降沿都传数据,等效翻倍,所以乘以2。
双芯堆叠封装
一个灶台不够用怎么办?老办法是再买一个,但厨房面积有限、成本也高。华为的选择是:把两颗成熟的小die封装在一个底座上,做成“连体双灶”——这就是910C的双芯堆叠封装。
在芯片行业,这种做法叫Chiplet(芯粒)策略:不追求单颗die无限做大,而是把多颗成熟的小die拼装起来。单颗die面积小,良率高、成本低;两颗并排,总算力和总显存近似翻倍。两颗die之间通过高速总线连通,就像两个灶台之间开了一排传菜窗口。这个思路与英伟达新一代B200的双die方案异曲同工。
华为在910C上延续了910B的成熟单die设计,用先进封装将两颗die并排放置于同一基板,片间通过高速互联总线交换数据。互联会引入额外延迟和带宽开销,所以最终性能不是严格的2倍,而是接近2倍打个八九折。这个“打折”程度可以用一个效率系数衡量:
所以,“连体双灶”不是简单地把两个灶头摞在一起——窗口开多大、菜怎么递,处处是工程学问。910C的智慧在于“用成熟小die拼出大算力”,避开单颗超大die那低到可怕的良率天坑。
- 单芯算力P₉₁₀B910B单颗die的FP16算力,约320 TOPS。它也是910C里每颗die的“单灶火力”。
- 翻倍系数2两颗完全相同的die并行工作,理论总算力翻倍。
- 互联效率ηdie间通信存在延迟与带宽瓶颈,通常取0.8~0.95。若η=0.9,则实际有效算力约576 TOPS。
规格对比升级
把两位“大师傅”的简历并排放在桌上,差距一目了然。昇腾910B与910C的核心规格对比如下:
| 项目 | 昇腾910B | 昇腾910C |
|---|---|---|
| FP16算力 | 约320 TOPS | 约640 TOPS |
| HBM容量 | 约64 GB | 约128 GB |
| HBM带宽 | 约1.6 TB/s | 约3.2 TB/s |
| 核心封装 | 单die | 双die合体 |
| 片间互联 | HCCS | HCCS + die间总线 |
可以看到,每一项关键指标都大致翻倍——这并非巧合,而是双die堆叠的直接红利:两颗910B级别的die合体,带来算力、内存、带宽的同步翻番。当然,实际部署中还要考虑功耗上升、散热设计和通信损耗等代价。
规格提升倍数的计算非常直接:
这张“菜单”告诉我们:910C不是另起炉灶的全新芯片,而是910B的“威力加强版”——用最成熟的组件拼出最大化的火力。但纸上参数终究要经过实战检验,下一节我们就把它请进千亿模型训练的后厨。
- 算力比640/320910C的FP16标称算力除以910B,得到算力提升约2倍。
- 显存比128/64HBM容量同样翻倍:910C的128GB对910B的64GB。
- 倍数归一两个比值都约等于2,说明910C是对910B的“等比例放大版”。
千亿模型实战
前厅来了一桌超级贵宾——“千亿参数大模型”。后厨要多久才能把这道菜端上桌?答案藏在两个变量里:总菜量(总计算量)和上菜速度(集群总算力×利用率)。
真实训练中,硬件利用率(MFU,即每秒真正用于计算的占比)通常只有40%~60%,其余时间在等数据加载、通信同步、算子切换。这正是“算力翻倍但时间不严格减半”的深层原因。昇腾910系列在配合CANN软件栈后,已能在千亿参数模型上跑通训练,并支持千卡集群的并行扩展。
训练时长的核心估算公式如下:
双灶台的威力在千亿实战中兑现:不是纸面翻倍,而是真正把训练周期砍掉将近一半。对AI团队来说,每少一天训练都是真金白银——但这有个前提:软件生态得先跟上。
- 总计算量6ND模型参数N与词元数D之积再乘6,就是整场训练需要完成的浮点运算总数。
- 卡数n集群中并行的AI芯片数量。千卡集群意味着把总计算量切分成1000份并行处理。
- 单卡算力P与利用率UP需要换算成每秒浮点运算数(TOPS×10¹²),再乘以U(MFU)得到每卡有效“出菜速度”。
- 相除得时间总“菜量”除以总“上菜速度”,得到以秒计的训练时长,再除以3600即小时数。
软件生态适配
硬件是灶台,软件是菜谱。英伟达的CUDA生态像一套“通用西餐菜谱”,几乎人人会读;昇腾要让人愿意用,就得把这套菜谱翻译成自己的“中餐做法”——这就是CANN的使命。
CANN是华为的AI计算架构(类似CUDA),包含底层驱动、算子库和编译器,负责把主流深度学习框架(如PyTorch、MindSpore)里的算子自动映射到昇腾的CUBE单元上。经过几年追赶,主流大模型如Llama、ChatGLM、Qwen都已在昇腾上跑通训练与推理。MindSpore则是华为自家的深度学习框架,与CANN深度协同,开箱即用。
迁移成本不可忽视:CUDA代码不能直接跑在昇腾上,需要改写为Ascend C或通过CANN的适配层转换;部分自定义算子需要重写并逐一调优。综合来看,迁移成本可以由三部分叠加估算:
菜谱翻译好了,后厨才能真正开张。昇腾的生态虽还在追赶CUDA,但“国产后厨”已经能让大模型吃饱吃好——这是国产AI芯片从“能用”走向“好用”的关键一跃。
- 代码改写量L与权重α需要改写的代码行数,乘以每行代码的平均改写工时。L越大,成本越高。
- 算子适配数S与权重β需要手写或用Ascend C重写的自定义算子数量,每个算子都要单独开发与验证。
- 调优周期T与权重γ迁移后反复实验、对齐精度、优化性能所花费的日历时间,这是最容易被低估的部分。
AI 应用场景
千亿模型预训练集群规划
阶段:模型训练
解决的问题:进口AI芯片受出口管制,训练集群扩充困难。用昇腾910C搭建国产千卡集群,以可控的规模成本完成千亿参数模型的预训练。
具体案例:某AI公司在昇腾910C集群上训练1300亿参数的中文大模型,按 6ND/(nPU) 公式估算训练周期,并监控MFU指标优化数据加载与通信策略,最终在约30天内完成预训练。
CUDA到CANN的算子迁移
阶段:模型适配与部署
解决的问题:已有模型基于CUDA开发,直接迁移到昇腾会产生大量不兼容算子。需要工程师用Ascend C重写关键算子,并借助CANN的自动映射能力降低迁移成本。
具体案例:算法工程师将FlashAttention注意力算子从CUDA改写为Ascend C实现,在910C上反复调优后,注意力计算效率达到H100平台的约85%~90%。
国产化算力统一调度平台
阶段:算力资源管理
解决的问题:数据中心内同时存在NVIDIA与昇腾两类芯片,任务调度混乱、算力闲置。需要一套统一平台按任务特性把推理与训练分配到不同芯片上。
具体案例:云平台架构师在Kubernetes上构建混合调度器,将实时推理请求优先调度至昇腾910C(国产化合规),将大规模预训练任务安排在H100集群,整体GPU利用率提升约20%。
Python 演示
# 昇腾910B/910C 大模型训练时长估算示例class AscendChip: """昇腾AI芯片的简化模型""" def __init__(self, name, fp16_tops, hbm_gb, hbm_bw_tbs): self.name = name self.fp16_tops = fp16_tops # FP16算力, 单位TOPS self.hbm_gb = hbm_gb # HBM容量, 单位GB self.hbm_bw_tbs = hbm_bw_tbs # HBM带宽, 单位TB/s def train_hours(self, params_b, tokens_b, cards, mfu): """估算训练大模型所需小时数 params_b: 参数量(10亿), tokens_b: 词元数(10亿), cards: 卡数, mfu: 硬件利用率 """ total_flops = 6 * params_b * 1e9 * tokens_b * 1e9 per_card = self.fp16_tops * 1e12 * mfu seconds = total_flops / (per_card * cards) return round(seconds / 3600, 1) chip_910b = AscendChip("昇腾910B", 320, 64, 1.6)chip_910c = AscendChip("昇腾910C", 640, 128, 3.2) PARAMS_B = 100 # 1000亿参数TOKENS_B = 1400 # 1.4万亿词元CARDS = 1024 # 千卡集群MFU = 0.45 # 典型硬件利用率 for chip in (chip_910b, chip_910c): hours = chip.train_hours(PARAMS_B, TOKENS_B, CARDS, MFU) print(f"{chip.name}: 训练约需 {hours} 小时" f"({round(hours / 24, 1)} 天), " f"HBM容量 {chip.hbm_gb}GB, 带宽 {chip.hbm_bw_tbs}TB/s")
total_flops = 6 * params_b * 1e9 * tokens_b * 1e9按6ND公式计算训练总浮点运算次数:6倍×参数量×词元数。per_card = self.fp16_tops * 1e12 * mfu把TOPS换算为每秒实际有效运算数(乘1e12再乘利用率MFU)。seconds = total_flops / (per_card * cards)总“菜量”除以总“上菜速度”,得到训练总秒数。for chip in (chip_910b, chip_910c):遍历两代芯片,方便直接对比训练周期差异。
常见误区
误区我以为910C的算力从320翻到640 TOPS,那训练1000亿参数模型的时间也应该严格减半。毕竟两个灶头一起烧,菜肯定熟得更快嘛。
正解算力翻倍只是理论上限,实际还要看互联效率(η约0.8~0.95)和硬件利用率MFU。双die之间通信变多,反而可能让MFU小幅下降。用完整公式 6ND/(nPU) 估算后,训练时间只会接近减半而非严格减半,就像两台灶并排,中间传菜口如果堵了,实际提速会打折扣。
为何常见:大家习惯用“理想最大算力”直接做除法,忽略了整个系统里各个部件速度不均衡、短板决定最终提速的Amdahl定律。
误区不就是把两颗910B用胶水粘在基板上吗?这有什么技术含量,我也能行。
正解双die封装需要解决信号完整性、供电网络、散热分布与良率成本四大难题。两颗die之间的高速总线要求极短的等长布线、精确的时钟同步和复杂的功耗墙管理,任何一根连线的微小偏差都可能导致整卡报废。英伟达B200也采用类似双die方案,说明这条路并不简单。
为何常见:普通用户看到“两颗拼一起”很容易联想到“堆料”,而堆料在消费电子里往往等于简单的配置叠加,掩盖了背后微纳尺度的工程复杂性。
误区都是华为造的芯片,那昇腾910C肯定也能用在手机里,让手机跑大模型,对吧?
正解麒麟是手机SoC(含CPU/GPU/NPU),功耗只有几瓦;昇腾910B/910C是数据中心AI加速卡,功耗约数百瓦、需要水冷散热,形态是PCIe插卡或整机模组。两者就像叉车和跑车——都是车,但用途天差地别,昇腾不可能塞进手机。
为何常见:媒体常以“华为芯片”一言蔽之,大众对SoC与AI加速卡这两条完全不同的产品线缺乏区分意识。
误区网上很少看到有人用昇腾训练千亿模型,是不是它只能做做推理演示?PPT芯片罢了。
正解昇腾910系列已支撑多个国产大模型的预训练,支持千卡并行、混合精度与梯度同步;CANN+MindSpore也已跑通LLaMA、Qwen等主流架构。虽然性能与生态仍有差距,但“能训练千亿模型”已是事实。
为何常见:公众看到的权威评测少,生态冷启动期的“声音小”被误读为“不存在”,加上部分自媒体夸大负面案例,加剧了误解。
误区既然HBM是大模型的关键,那把显存堆到512GB甚至1TB,训练就更快了。
正解HBM成本极高,且容量与带宽需要和算力匹配——算力不够,显存再多也只是闲置“冰柜”。910C的128GB已经能装下千亿参数模型(约200GB权重用混合并行切分到多卡),盲目扩大单卡容量反而推高成本与功耗,不如优化卡间通信和利用率。
为何常见:外行看训练瓶颈时常只盯着显存数字,忽略了算力、带宽、通信三者的木桶效应。
面试题
Q1. 昇腾910C相比910B最核心的架构改进是什么?
- A.采用更先进的3nm光刻工艺
- B.双die堆叠合体封装← 正确答案
- C.增加显卡RGB散热灯效
- D.换成ARM手机处理器核心
答案:B。910C本质是两颗910B级die的Chiplet合体,从而获得算力与显存翻倍。制程并没有代差式跨越,RGB灯效与手机CPU均与数据中心加速卡无关。故选B。
Q2. 昇腾芯片中专门负责矩阵乘加运算的核心单元是?
- A.CPU核心
- B.CUDA核心
- C.CUBE单元← 正确答案
- D.神经网络缓存
答案:C。昇腾的矩阵计算引擎叫CUBE单元,对标英伟达Tensor Core。CPU负责串行控制,CUDA是英伟达专属说法,缓存不是计算单元。故选C。
Q3. 昇腾910C采用双die封装,这属于哪种技术路线?
- A.3D垂直堆叠存储
- B.Chiplet芯粒封装← 正确答案
- C.光刻胶涂布工艺
- D.冷焊金属连接
答案:B。910C把两颗成熟die并排放到同一基板,属于Chiplet(芯粒)路线。3D垂直堆叠更多用于HBM存储,光刻与冷焊都不是封装方案。故选B。
Q4. 大模型训练的总计算量常用6ND估算,其中系数6主要来自哪里?
- A.前向2次加反向4次← 正确答案
- B.使用了6种混合精度
- C.数据做了6倍冗余备份
- D.训练需要6轮完整迭代
答案:A。系数6≈前向传播每参数每词元约2次FLOPs,反向传播约4次(权重梯度与激活梯度),是业界通用估算基准。其余选项没有工程依据。故选A。
Q5. 以下哪些因素会影响910C训练千亿模型的实际速度?
- A.HBM带宽← 正确答案
- B.硬件利用率MFU← 正确答案
- C.片间互联效率← 正确答案
- D.显卡外观颜色
答案:ABC。HBM带宽决定喂料速度,MFU反映真实计算占比,片间互联效率影响多卡协同;外观颜色与性能毫无关系。故选ABC。
Q6. 昇腾910B的HBM容量约64GB,910C约128GB,这一升级主要解决什么问题?
- A.降低芯片功耗
- B.提高显示器分辨率
- C.装下更多模型参数← 正确答案
- D.加快CPU启动速度
答案:C。HBM是大模型参数与中间激活的“住所”,容量翻倍让单卡能装下更大模型,减少跨卡通信与显存换入换出。功耗、显示与CPU启动均与此无关。故选C。
Q7. 在训练时长公式 T=6ND/(nPU) 中,U代表什么?
- A.输入电压
- B.硬件利用率← 正确答案
- C.内存带宽
- D.参数量
答案:B。U即MFU硬件利用率,反映通信等待、显存搬运等开销之后“真正干活”的比例,典型值40%~60%。电压、带宽与参数量各有其符号。故选B。
Q8. 为什么910C的有效算力不是严格的2倍于910B?
- A.因为芯片名称多了个字母C
- B.双die之间通信存在损耗← 正确答案
- C.因为FP16精度被强制降低
- D.因为驱动补丁尚未发布
答案:B。双die合体后,片间总线引入延迟与带宽开销,使实际性能只能接近2倍而非精确2倍,即 η互联≈0.8~0.95。芯片命名、精度与驱动都不是物理原因。故选B。
Q9. 从CUDA生态迁移到昇腾CANN通常需要做哪些工作?
- A.改写CUDA代码为Ascend C← 正确答案
- B.重新适配自定义算子← 正确答案
- C.调整分布式通信策略← 正确答案
- D.更换所有服务器硬盘
答案:ABC。迁移涉及代码改写、算子适配、分布式通信策略调整,还常伴随精度对齐与性能调优;硬盘更换与软件迁移无关。故选ABC。
Q10. 关于昇腾910系列,下列说法正确的有哪些?
- A.已能支撑千亿参数模型训练← 正确答案
- B.软件生态仍在追赶CUDA← 正确答案
- C.与麒麟手机芯片同属一条产品线
- D.需通过CANN适配主流深度学习框架← 正确答案
答案:ABD。昇腾已支撑千亿大模型预训练,CANN承担框架适配,生态成熟度较CUDA仍有差距;麒麟是手机SoC,与昇腾完全不是同一产品线。故选ABD。