想象一家备受好评的高级餐厅。主厨负责控场调味、协调节奏,十几位刀工师傅在砧板前批量处理海量食材,糕点师则守着烤箱研究起酥与打发。主厨不会去切一百斤土豆,刀工也不会去给巧克力调温——每个岗位各有所长,谁也替代不了谁。这就是“异构”的雏形:各有专精,分工协作。 在计算机世界里,任务同样千差万别。CPU 擅长逻辑判断和系统调度,GPU 擅长成千上万线程同时做矩阵运算,而 NPU 被专门打磨成 AI 算子的“一把利器”。异构计算架构,就是把 CPU、GPU、NPU 等不同处理器组织起来,让任务都被送到最合适的那双手上。昇腾生态正是这套架构在国产 AI 芯片领域的完整答卷。

岗位关联

理解异构计算架构,是从单一芯片迈向整机集群优化、从容应对大模型算力瓶颈的必经之路,也是昇腾生态相关 AI 基础设施岗位的核心知识。

目录
  1. 可视化演示
  2. 异构计算原理
  3. 昇腾芯片架构
  4. CANN计算框架
  5. 任务调度策略
  6. 数据传输优化
  7. 大模型性能表现
  8. 应用场景落地
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

展示昇腾生态异构计算三维度:任务卸载机制(CPU主控数据加载调度→NPU/GPU加速前向反向矩阵乘法、CANN软件栈桥接host与device)、异构类型对比(NPU 310T高性能 vs GPU通用 vs FPGA能效3.0最优 vs DSP低功耗)、Chiplet芯粒2.5D封装(多计算芯粒高速互联突破单芯片算力上限提升良率成本效益),三模式切换理解国产异构计算平台架构设计。

本节配有交互动效(进入视口后自动加载,约 3KB)。

'+C1+'

异构计算原理

想象一家备受好评的餐厅:主厨负责控场调味,十几位刀工师傅批量处理海量食材,糕点师则守着烤箱研究起酥与打发。主厨不会去切一百斤土豆,刀工也不会去给巧克力调温。在计算机世界里,任务同样千差万别:CPU 擅长逻辑判断与系统调度,GPU 擅长成千上万的线程同时做矩阵运算,NPU 则被专门打磨成 AI 算子的“一把利器”。异构计算架构,就是把 CPU、GPU、NPU 等不同处理器组织起来,让每个任务都被送到最合适的那双手上。

异构计算的出现,源于单靠 CPU 提升性能已不再划算:摩尔定律逐渐放缓,晶体管逼近物理极限,而大模型需要的算力却呈指数级增长。把一个任务拆成“可以并行”和“必须串行”两部分,就能用 Amdahl 定律估算加速收益:

所以,餐厅无论把后厨团队扩到多大,主厨必须亲自把关的那几道工序依然无法省略;同理,异构系统里被串行部分限制的效率,才是架构设计真正要警惕的瓶颈。

S=1(1−p)+pN\displaystyle S=\frac{1}{(1-p)+\frac{p}{N}}
这个公式说明:即使处理器加到上千枚,只要串行部分存在,加速比就有天花板。
  1. 并行占比 \(p\)任务中可被多设备拆分的部分占整体任务的比重,\(0\le p\le 1\);\(1-p\) 是必须串行的部分。
    p与1−p\displaystyle p\qquad \text{与}\qquad 1-p
  2. 并行部分耗时可并行部分被 \(N\) 个设备分摊后,用时从 \(p\) 压缩到 \(p/N\)。
    pN\displaystyle \frac{p}{N}
  3. 整体总耗时串行耗时与并行耗时相加,得到多设备下的累计耗时。
    (1−p)+pN\displaystyle (1-p)+\frac{p}{N}
  4. 计算加速比把原始总耗时归一化为 1,除以新耗时,得到加速倍数 \(S\)。
    S=1(1−p)+pN\displaystyle S=\frac{1}{(1-p)+\frac{p}{N}}

昇腾芯片架构

在一位中餐大厨眼里,一把趁手的好刀胜过多把钝刀。昇腾系列 AI 处理器就是华为为“AI 大菜”专门锻造的刀。它不是把通用 CPU 改个名字,而是从架构层面重新构思了一颗面向神经网络计算的芯片。

昇腾芯片采用达芬奇架构,核心单元叫 AI Core。AI Core 里包含矩阵计算单元、向量计算单元和标量计算单元,像一位“全能糕点师”:矩阵单元负责矩阵乘加这类大比重运算,向量单元处理激活函数等逐元素操作,标量单元负责搬运指针和流程控制。相比 GPU 需要从图形管线迁移而来的通用架构,AI Core 生来就为 AI 算子服务。

衡量 NPU 能力的常用指标是 TOPS(Tera Operations Per Second,每秒万亿次运算),其估算公式可表达为:

昇腾 310 系列主攻边缘推理,昇腾 910 系列面向训练场景,相当于一位是擅长固定甜点的甜品师,一位是能撑起宴席的行政总厨。但好刀也要好刀法——硬件算力只是上限,能不能发挥出来,还看软件框架的配合。

P=fc×Nc×Op\displaystyle P=f_{c}\times N_{c}\times O_{p}
算力 \(P\) 等于时钟频率 \(f_c\)、AI Core 数量 \(N_c\) 和每周期运算次数 \(O_p\) 三者的乘积。
  1. 时钟频率 \(f_c\)AI Core 每秒的运行节拍,频率越高,单位时间可执行的指令越多。
    fc\displaystyle f_{c}
  2. AI Core 数量 \(N_c\)一块芯片内集成的计算单元个数,相当于后厨里同款糕点师的数量。
    Nc\displaystyle N_{c}
  3. 每周期运算次数 \(O_p\)每个核心每个时钟周期能完成的乘加运算次数,取决于数据位宽与流水线设计。
    Op\displaystyle O_{p}
  4. 三者的乘积三因素相乘得到整颗芯片的峰值算力。
    P=fc×Nc×Op\displaystyle P=f_{c}\times N_{c}\times O_{p}

CANN计算框架

餐厅光有好厨师还不够,还需要一套标准化的后厨系统:菜谱怎么写、领料单怎么填、出菜动线怎么走。CANN(Compute Architecture for Neural Networks,异构计算架构)就是昇腾生态里的这套后厨系统。

CANN 是昇腾芯片的软件栈,它把底层硬件的寄存器、缓存、指令流全部封装起来,让开发者用统一的编程接口编写 AI 程序。最核心的接口叫 AscendCL(Ascend Computing Language),它提供内存管理、模型加载和算子执行等 API,好比给厨师一份统一的“标准菜单”。

在程序真正跑起来前,CANN 会先完成计算图编译:把神经网络模型转换成昇腾可执行的计算图。同时,CANN 内置了大量预优化的算子库。它的一个重要优化手段是算子融合——把多个相邻算子合并成一个,减少中间结果的反复读写。融合后耗时可表达为:

有了这套标准化的“后厨系统”,大厨不再需要关心每一个灶台的火候旋钮和气管走向——只需按标准菜谱操作,CANN 会自动优化出菜动线。这正是昇腾能支撑复杂模型训练的重要原因。

To=Tr−Tm\displaystyle T_{o}=T_{r}-T_{m}
\(T_r\) 是算子未融合时的总耗时,\(T_m\) 是消除的重复搬运耗时,\(T_o\) 是融合后的预计耗时。
  1. 原始总耗时 \(T_r\)多个算子按顺序逐个执行,把计算结果写回内存再读出来继续计算的累计用时。
    Tr\displaystyle T_{r}
  2. 重复搬移耗时 \(T_m\)中间结果在缓存与内存之间反复拷贝的时间,这部分本来可以省略。
    Tm\displaystyle T_{m}
  3. 融合后耗时 \(T_o\)把中间结论留在片上,节省掉重复搬运,得到新的预期耗时。
    To=Tr−Tm\displaystyle T_{o}=T_{r}-T_{m}

任务调度策略

当宴会订单同时涌来,餐厅需要一个“出菜调度板”:哪张订单用哪个灶台、谁先谁后、几点出菜。在昇腾异构系统中,这个调度板就是任务调度器,昇腾计算引擎(GE)会把计算图拆分成一个个小步骤,决定它们在 CPU、GPU、NPU 上如何排布和执行。

算子级调度是调度器的基础动作:遍历计算图中的算子,判断其类型、数据大小、依赖关系,然后分配到最合适的设备。比如矩阵乘法算子交给 NPU,数据预处理算子留在 CPU,图结构解析交给 GPU 辅助。调度算法的另一个维度是大模型并行策略——把一个大模型拆开放到多张卡上:

出菜调度板上的每一个决定,都决定了整晚能否顺利打烊。同理,异构系统的最终吞吐,往往不由硬件峰值决定,而由调度策略的聪明程度决定。

η=TsN×Tp\displaystyle \eta=\frac{T_{s}}{N\times T_{p}}
并行效率 \(\eta\) 表示 \(N\) 个设备同时工作时的利用程度,越接近 1 说明负载越均衡。
  1. 串行耗时 \(T_s\)在单设备上从头到尾执行完所有任务的用时,作为基准参照。
    Ts\displaystyle T_{s}
  2. 并行耗时 \(T_p\)拆分到 \(N\) 个设备上执行后,从开始到全部完成的墙钟时间。
    Tp\displaystyle T_{p}
  3. 理想并行时间如果完全线性加速,总耗时应为 \(N\times T_p\),理想值是 \(T_s\)。
    N×Tp\displaystyle N\times T_{p}
  4. 效率公式用基准时间除以实际并行时间,得到并行效率。
    η=TsN×Tp\displaystyle \eta=\frac{T_{s}}{N\times T_{p}}

数据传输优化

厨房最怕等配料:厨师再快,食材输送带卡住了,一切白搭。异构计算里最隐蔽的“输送带瓶颈”,就是跨设备数据传输。

数据在 CPU 内存、GPU 显存、NPU 内存之间搬移的速度,远远慢于计算核心的计算速度。一次 8GB 的模型权重加载,耗时可能抵得上几千次矩阵乘法。昇腾生态为此设计了 HCCS(华为缓存一致性系统)高速互联,让多个芯片之间直接打通高速通道,形成紧密协同的“算力集群”。同时,传输计算重叠技术也是关键:设备 A 计算时,设备 B 抢先搬运下一批数据,把传输时间“藏”进计算时间里。衡量数据传输效率的核心指标是有效带宽:

把输送带的位置设计好,厨师就不必把配菜搬到门外再绕回来煮。在异构架构里,优化数据传输路径,往往比堆算力更能直接提升系统的真实吞吐。

B=DTt\displaystyle B=\frac{D}{T_{t}}
有效带宽 \(B\) 等于数据量 \(D\) 除以传输耗时 \(T_t\),它反映输送带真实跑出的速度,而不是硬件标称上限。
  1. 数据量 \(D\)需要搬移的数据大小,比如模型参数、激活值或梯度,单位常用 GB。
    D\displaystyle D
  2. 传输耗时 \(T_t\)数据从源设备到目标设备的实际墙钟时间。
    Tt\displaystyle T_{t}
  3. 有效带宽公式二者相除得到单位时间内实际传输的数据量。
    B=DTt\displaystyle B=\frac{D}{T_{t}}

大模型性能表现

举办一场超大型宴席,几十张桌子的菜单各不相同,任何一桌迟迟不上菜都会拖垮整体节奏。大模型训练正是这样一场“超大型计算宴”:模型参数动辄几十亿、上百亿,单张芯片根本装不下,必须多卡协作。

昇腾集群训练大模型时,常见三种并行策略:数据并行把训练样本切成多份分给各卡,每卡持完整模型但只算自己的批次;模型并行把模型参数切到多张卡,各卡合作计算同一批数据;流水线并行则按模型层切分,像流水线一样让不同卡负责不同层。无论哪种策略,训练过程中各卡都需要交换梯度——这就是梯度同步开销,也是大模型训练中最明显的等待时间来源。通信计算比可衡量这个问题的严重程度:

宴席要开得好,不只是菜做得快,更重要的是每桌菜齐了才能开动。通信同步就是那道“齐了才能开动”的闸门——昇腾的 HCCS 高速互联和集合通信优化库,正是为了让这道闸门打开得更迅速。

R=TcTc+Tp\displaystyle R=\frac{T_{c}}{T_{c}+T_{p}}
\(R\) 表示通信时间占总时间的比例,数值越高,说明系统越在“等数据”,计算利用率越低。
  1. 通信耗时 \(T_c\)梯度交换、参数同步等数据传输动作占用的时间。
    Tc\displaystyle T_{c}
  2. 计算耗时 \(T_p\)各设备实际跑前向传播和反向传播的时间。
    Tp\displaystyle T_{p}
  3. 总耗时计算与通信交替进行,累计成训练的总墙钟时间。
    Tc+Tp\displaystyle T_{c}+T_{p}
  4. 通信计算比通信时间对总时间的占比。
    R=TcTc+Tp\displaystyle R=\frac{T_{c}}{T_{c}+T_{p}}

应用场景落地

把一家明星餐厅做成餐饮集团,需要完善的供应链、标准化的加盟体系和统一的口味品控。昇腾生态的落地,也正是从一颗芯片走向“算力集团”的过程。

目前昇腾生态已有几个清晰的应用方向。一是昇腾算力中心:面向企业和高校提供公共 AI 算力,把硬件集群、调度平台和模型库打包成服务,用户不必自己采购和维护 GPU 集群。二是 PyTorch 兼容:通过适配层支持 PyTorch 模型迁移到昇腾上运行,降低开发者的迁移成本。三是行业 AI 部署:在制造、金融、政务等领域部署专用推理模型。衡量一个部署系统处理能力的指标是吞吐量:

餐饮集团的品牌有多成功,取决于每家分店能否保持一致的高品质服务。昇腾生态的长期竞争力,则取决于开发者工具链是否成熟、模型迁移是否顺畅、生态伙伴是否够多。

Q=NrTtot\displaystyle Q=\frac{N_{r}}{T_{tot}}
吞吐量 \(Q\) 表示单位时间内能完成的请求数或样本数,由完成个数 \(N_r\) 与总服务时间 \(T_{tot}\) 决定。
  1. 完成请求数 \(N_r\)在服务窗口内成功处理完的推理请求数量。
    Nr\displaystyle N_{r}
  2. 总服务时间 \(T_{tot}\)从收到第一个请求到完成最后一个请求的墙钟时间。
    Ttot\displaystyle T_{tot}
  3. 求吞吐量完成数除以总时长,得到每秒处理的请求数。
    Q=NrTtot\displaystyle Q=\frac{N_{r}}{T_{tot}}

AI 应用场景

昇腾云算力中心

阶段:算力供给与训练平台

解决的问题:传统方式下,AI 团队想用高端算力需要自购 GPU 集群,成本高、运维重、抢卡难。昇腾算力中心把异构调度、算子优化、断点续训沉淀为公共算力服务,用户按需租用,像使用水电一样获取 AI 算力。

具体案例:某高校大模型团队在昇腾算力中心完成 Llama 系列模型的微调实验,借助调度平台的多卡负载均衡与故障快速恢复能力,集群有效训练时间占比提升了约 45%。

智能工厂边缘质检

阶段:推理部署(边缘推理)

解决的问题:流水线质检对实时性和时延要求极高,传统大型 GPU 方案功耗大、体积大、部署成本高。昇腾 310 边缘设备功耗低且对卷积算子专门优化,适合部署在产线旁。

具体案例:某手机零件制造厂将 AOI 质检模型迁移到昇腾 310 推理卡,单张图像平均推理时延从 15ms 降至 8ms,产线吞吐量翻倍,功耗却下降了近一半。

金融行业训推一体机

阶段:模型训练与私有化推理

解决的问题:金融机构数据敏感,不能将数据送出外部网关,但又希望快速获得大模型能力。昇腾训推一体机将计算、存储、网络和调度集成在一个机柜中。

具体案例:某银行在某宝体量数据集上完成 7B 参数金融大模型的私有化部署,采用数据并行叠加流水线并行,配合 HCCS 多卡高速互联,实现单机多卡持续稳定训练。

Python 演示

python77 行
"""异构计算架构演示:任务调度模拟器模拟 CPU、GPU、NPU 三类处理器接收任务的调度过程""" import random  class Task:    def __init__(self, tid, workload, kind):        self.tid = tid            # 任务编号        self.workload = workload  # 任务计算量(百万浮点运算)        self.kind = kind          # 'cpu' / 'gpu' / 'npu'  class HeteroDevice:    """异构设备类:表示一种处理器"""     def __init__(self, name, speed):        self.name = name        self.speed = speed        # 单位时间能处理的任务量        self.task_history = []    # 已完成任务历史     def execute(self, task):        cost = task.workload / self.speed        self.task_history.append((task.tid, cost))        return cost  class Scheduler:    """任务调度器:按类型把任务分发给最合适的设备"""     def __init__(self, devices):        self.devices = devices     def dispatch(self, task):        if task.kind == 'cpu':            device = self.devices['cpu']        elif task.kind == 'gpu':            device = self.devices['gpu']        else:            device = self.devices['npu']        return device.execute(task), device.name  def main():    random.seed(42)    devices = {        'cpu': HeteroDevice('CPU', speed=5.0),        'gpu': HeteroDevice('GPU', speed=20.0),        'npu': HeteroDevice('NPU', speed=50.0),    }    scheduler = Scheduler(devices)     tasks = []    for i in range(12):        kind = random.choice(['cpu', 'gpu', 'npu'])        workload = random.uniform(10, 100)        tasks.append(Task(i, workload, kind))     print('=== 异构计算调度模拟 ===')    total = 0.0    for task in tasks:        cost, dev = scheduler.dispatch(task)        total += cost        print(f'任务{task.tid} [{task.kind}] -> {dev},耗时 {cost:.4f}')     print(f'\n总耗时估算: {total:.4f}')    print('\n各设备负载:')    for name, dev in devices.items():        n = len(dev.task_history)        load = sum(c for _, c in dev.task_history)        print(f'{name}: {n} 个任务, 总负载 {load:.2f}')  if __name__ == '__main__':    main()
目的:用 Python 模拟异构计算中 CPU/GPU/NPU 协同完成任务调度的全过程,直观展示不同设备以不同速度执行各自擅长任务的逻辑。
  1. class HeteroDevice:每种处理器都是一个独立设备,拥有自己的处理速度与任务历史。
  2. self.task_history.append((task.tid, cost))记录每台设备完成了哪些任务及耗时,便于统计负载。
  3. class Scheduler:调度器扮演“主厨”角色,统一决定任务发给谁。
  4. if task.kind == 'cpu':按任务类型分发到对应设备,模拟异构计算中“专人干专事”的原则。
  5. random.seed(42)固定随机种子,让每次运行生成相同的任务序列,结果可复现。
  6. print(f'{name}: {n} 个任务, 总负载 {load:.2f}')输出每个设备的最终负载,观察不同速度设备的工作量差异。

常见误区

误区总觉得“我有 64 核 CPU,这就是异构计算了”。以为把核数堆上去就算异构,性能自然翻倍。

正解多核 CPU 属于同构并行——所有核的架构、指令集完全一致。异构计算强调多种不同架构处理器(CPU、GPU、NPU)的协同。比喻来说:同一种厨师排三班倒,和主厨、刀工、糕点师分工配合,是两回事。

为何常见:两者都叫“并行”,概念看起来很像,初学时容易混为一谈。

误区NPU 的 TOPS 数值高得惊人,那所有 AI 任务都交给 NPU 就好,CPU 和 GPU 可以退役了。

正解NPU 专精矩阵乘加等固定模式计算,但通用逻辑判断、分支跳变、内存管理、数据预处理仍依赖 CPU;GPU 在图分析和某些并行算子中也仍有价值。三者是互补关系,不是替代关系。

为何常见:厂商宣传总是突出峰值算力,而忽略了通用性和生态成熟度。

误区买了更高端的昇腾芯片,训练速度就应该自动变快,代码不用做任何调整。

正解真实场景中,性能是系统级的结果。算子融合、数据搬运、通信同步、调度策略都会影响最终吞吐。硬件只是上限,软件优化决定你实际上能摸到多高。就像买了顶级刀具,没有刀法配合,切菜速度依然上不去。

为何常见:硬件指标直观可比较,软件优化却看不见摸不着,容易忽视。

误区CANN 提供了 AscendCL 统一接口,那我把 PyTorch 模型直接导进去就能跑,不用做任何迁移。

正解AscendCL 统一的是编程 API 层,但底层算子实现、自动调度策略、内存排布仍需适配。迁移到昇腾通常需要算子匹配检查、模型转换和性能调优。统一菜谱不等于每家厨房都能自动复刻同一道菜。

为何常见:“统一接口”这个词太有迷惑性,容易让人忽略底层工程细节。

误区觉得数据传输就那么几毫秒,真正耗时的还是计算,于是把所有精力都投在算子加速上。

正解在真实的多卡大模型训练中,通信和搬运往往占据总时间的 30%~70%。跨设备传输优化——如 HCCS 互联、传输计算重叠、算子融合减少搬移——常常比优化单个算子带来更大的收益。

为何常见:在单卡小模型实验中,通信开销几乎为零,误以为集群里也是如此。

面试题

Q1. 什么是异构计算?

单选题 · easy

  • A.同构处理器的并行扩展
  • B.多种不同架构处理器协作← 正确答案
  • C.同一种架构的核数翻倍
  • D.完全依赖专用芯片计算

答案:B。异构计算强调 CPU、GPU、NPU 等不同架构处理器协同工作,而不是同构并行或单一架构扩展。B 正确;A 和 C 都是同构并行;D 把异构误解成了只用专用芯片。

Q2. 昇腾芯片中 AI Core 最擅长哪类计算?

单选题 · easy

  • A.处理完整操作系统线程调度
  • B.执行字符串解析和逻辑判断
  • C.矩阵乘加等神经网络算子← 正确答案
  • D.管理内存页表和虚拟地址

答案:C。AI Core 是达芬奇架构的核心计算单元,内置矩阵、向量、标量三类计算单元,专门高效执行卷积、矩阵乘等 AI 算子。C 正确;A、B、D 都是 CPU 或系统软件负责的事务。

Q3. 在异构计算系统中,CPU 通常承担什么角色?

单选题 · easy

  • A.负责大规模矩阵乘法计算
  • B.负责逻辑控制与任务调度← 正确答案
  • C.完全替代 AI 专用计算
  • D.专门执行固定编码指令

答案:B。CPU 通用性强,适合跑操作系统、逻辑分支和控制流,常扮演调度者和协调者的角色。B 正确;A 是 GPU/NPU 的长处;C 不符合异构思想;D 描述过于狭窄。

Q4. 根据 Amdahl 定律,下列说法正确的是?

单选题 · mid

  • A.并行处理器越多则加速比无限增加
  • B.串行部分占比越高则加速比上限越低← 正确答案
  • C.单核频率提升比增加处理器更有效
  • D.所有计算任务都能被完全并行化

答案:B。Amdahl 定律指出加速比受串行部分限制:S = 1/[(1-p)+p/N]。p 越大越好,但 1-p 永远存在且无法并行,B 正确;A 忽略了串行部分的天花板;C 与定律无关;D 过于理想化。

Q5. CANN 在昇腾生态中的主要作用是什么?

单选题 · mid

  • A.打通模型到昇腾执行的整套软件栈← 正确答案
  • B.直接修改 CPU 芯片逻辑门电路行为
  • C.替代编译器对源码进行改写优化
  • D.用新语言重新定义神经网络结构

答案:A。CANN 是昇腾的异构计算架构软件栈,提供 AscendCL 接口、计算图编译和算子库优化,让模型能高效运行在昇腾芯片上。A 正确;B 是纯硬件行为;C 只是其中一部分;D 与 CANN 目标无关。

Q6. HCCS 在昇腾系统中的作用是什么?

单选题 · mid

  • A.提高 CPU 主频以加速计算
  • B.连接多个 AI 芯片实现高速通信← 正确答案
  • C.负责将模型梯度写回宿主电脑
  • D.为 AI 芯片提供统一调试接口

答案:B。HCCS 是华为的高速缓存一致性系统互联技术,用于多颗昇腾芯片之间的低延迟高带宽直连,B 正确;A 和 D 与互联无关;C 只是普通数据通路的一个应用场景,且并非 HCCS 的核心作用。

Q7. 下列哪些属于数据传输优化的常用手段?

多选题 · mid

  • A.通过算子融合减少中间数据搬移← 正确答案
  • B.用传输与计算重叠隐藏延迟← 正确答案
  • C.故意多次拷贝数据等待结果
  • D.采用高速互联总线提升带宽← 正确答案

答案:ABD。算子融合通过消除中间结果的重复读写来减少数据搬移;传输计算重叠把数据搬运藏进计算时间;高速互联总线直接提升单位时间传输量。A、B、D 都是有效手段;C 是增加开销的反向操作。

Q8. 关于大模型训练中的并行策略,正确的有哪些?

多选题 · mid

  • A.数据并行将训练数据切分到多卡← 正确答案
  • B.模型并行将模型参数拆分到多卡← 正确答案
  • C.流水线并行按模型层切分流水执行← 正确答案
  • D.所有大模型都必须采用数据并行

答案:ABC。数据并行、模型并行、流水线并行是三种基本并行方式,A、B、C 描述正确;D 过于绝对——大模型通常组合使用多种并行策略,而不是只用数据并行。

Q9. 多卡大模型训练中,通信计算比为何非常关键?

单选题 · hard

  • A.体现通信等待占比较高时瓶颈在传输← 正确答案
  • B.表示模型精度在训练中的下降百分比
  • C.衡量压缩算法对模型效果的损失程度
  • D.统计运行时内存泄漏发生的总频次

答案:A。通信计算比 = T_通信 / (T_计算 + T_通信)。比例越高,说明设备大量时间在等梯度同步和数据传输,计算利用率越低,整体性能受限于通信。A 正确;B、C、D 都与该指标无关。

Q10. 在 8 卡昇腾集群上训练大模型,串行部分占比为 10%,下列说法正确的有哪些?

多选题 · extreme

  • A.理论极限永远不会超过 10 倍加速← 正确答案
  • B.加速比一定精确等于设备数量
  • C.加速比上限由串行部分占比决定← 正确答案
  • D.无限增加设备可逼近理论极限← 正确答案

答案:ACD。Amdahl 定律给出 S = 1/[(1-p)+p/N],当 N 趋于无穷时,加速比逼近 1/(1-p)=10 倍,所以 A、C、D 正确;B 错误,加速比通常小于设备数,因为串行部分无法并行化。