1、软硬件协同优化
(1)算子融合与指令优化
算子融合与指令优化是软硬件协同优化的核心技术,通过将多个计算操作合并为一个更大的操作,减少内存访问次数,提高计算密度,从而显著提升AI 计算效率。在大模型训练和推理场景中,算子融合技术已成为性能优化的关键手段。
算子融合的核心思想是将多个连续的算子合并为一个更大的融合算子,减少中间结果的内存读写,降低内存带宽压力。以 FlashAttention 为例,其加速原理非常简单,就是更多地去利用带宽更高的上层存储单元,减少对低速下层存储单元的访问频率,从而达到加速的目的。在传统的注意力计算中,需要多次读写显存来存储中间结果,而 FlashAttention 通过算子融合技术,将多个计算步骤合并,大幅减少了内存访问次数,显著提升了计算效率。
指令优化是另一种重要的软硬件协同优化技术,通过针对特定硬件架构设计高效的指令集,提高计算密度和能效比。寒武纪 MLU 指令集就是专门针对AI计算优化的指令集,支持张量运算、矩阵运算等 AI 核心操作,相比通用指令集具有更高的计算效率。指令优化需要深入理解硬件架构特点,设计能够充分利用硬件计算能力的指令序列,同时考虑数据局部性和内存访问模式,实现最优的性能表现。
在实际应用中,算子融合与指令优化通常结合使用,形成完整的优化方案。以寒武纪 BANG 算子库为例,它不仅提供了丰富的融合算子,还针对MLU硬件架构进行了深度指令优化,实现了算子层面的极致性能。通过Relay 导入推理模型,进行算子融合等图层优化,通过 TIR 生成融合算子,最终形成针对特定硬件的高效执行代码。
算子融合与指令优化的效果在大模型场景中尤为显著。大模型通常包含大量的矩阵运算、注意力计算等操作,这些操作通过算子融合可以大幅减少内存访问,提高计算效率。同时,大模型对计算资源的需求极高,通过指令优化可以充分利用硬件计算能力,降低单位计算的成本。在实际案例中,经过算子融合和指令优化的模型,其性能可提升数倍甚至数十倍,能效比也有显著改善。
(2)编译器与中间表示
编译器与中间表示技术是连接 AI 模型与异构硬件的桥梁,通过多层次的中间表示和优化转换,实现模型在不同硬件平台上的高效执行。随着异构算力的普及,编译器技术在大模型与异构算力融合中扮演着越来越重要的角色。
MLIR(Multi-Level Intermediate Representation)是一种新兴的多级中间表示框架,支持不同抽象层次的 IR 定义和转换。MLIR 的架构设计原理包括可扩展的方言系统、类型系统、属性系统等,允许在不同抽象层次上定义和优化计算图。
MLIR 不仅是一种中间表示,更是一个编译器框架,支持从高级计算图到底层硬件指令的全流程优化。在大模型编译中,MLIR 可以实现从计算图优化到硬件代码生成的无缝衔接,为异构算力提供统一的编译支持。TVM(Tensor Virtual Machine)是面向深度学习的模型编译器,用户可直接获得编译/优化模型为推理 blob 的能力,可以看做机器学习时代的GCC。
TVM支持多种前端框架(TensorFlow、PyTorch、MXNet 等)和多种后端硬件(CPU、GPU、AI 加速器等),通过统一的中间表示(Relay IR)和优化passes,实现模型的高效编译和部署。TVM 的自动调优功能(AutoTVM)可以针对特定硬件自动生成最优的计算算子,大幅提升模型执行效率。XLA(Accelerated Linear Algebra)是 Google 开发的线性代数编译器,最初旨在加速 TensorFlow 模型,现已被 JAX 等框架采用。
XLA 将计算图编译为高效的机器代码,通过算子融合、内存分配优化、循环优化等技术,提升计算效率。整个编译流程先将 TensorFlow 的图转化为 XLA HLO,即一种类似高级语言的图的中间表达形式,可以基于此进行一些 High-Level 的优化。接着将XLAHLO翻译为 LLVM IR,进行底层优化和代码生成。
除了上述主流编译框架外,还有针对特定硬件的编译器,如NVIDIA的NVCC(NVIDIA CUDA 编译器),仅适用于 CUDA;华为的昇腾编译器,针对昇腾芯片优化等。这些编译器通常与硬件深度绑定,能够充分发挥特定硬件的性能潜力。在大模型与异构算力融合中,编译器技术面临诸多挑战:一是大模型的计算图规模庞大,编译时间和内存消耗成为瓶颈;二是异构硬件的多样性要求编译器支持多种后端;三是大模型的动态特性(如动态形状、条件计算等)增加了编译优化的复杂度。为应对这些挑战,编译器技术正在向更高效、更通用、更智能的方向发展,如增量编译、分布式编译、机器学习辅助优化等。
(3)AI 框架适配
AI 框架适配是连接上层应用与底层硬件的关键环节,通过插件机制、后端优化等方式,使主流 AI 框架能够高效运行在异构硬件上。随着国产AI 芯片的快速发展,AI 框架适配技术成为构建自主可控 AI 生态的重要组成部分。PyTorch 和 TensorFlow 是目前最主流的 AI 框架,它们都提供了插件机制,支持第三方硬件的接入。
在 PyTorch 框架中,可以通过注册自定义设备、算子等方式实现硬件适配;在 TensorFlow 框架中,可以通过 Pluggable Device 接口支持新的硬件设备。以昇腾 NPU 为例,华为开发了名为 torch_npu 的Ascend Adapterfor PyTorch 插件,使得昇腾 NPU 可以与 PyTorch 框架兼容,为使用PyTorch框架的开发者提供了强大的昇腾 AI 处理器算力支持。
适配插件开发是 AI 框架适配的核心工作,主要包括算子适配、内存管理、调度优化等方面。算子适配是将框架中的算子映射为硬件支持的操作,通常需要实现算子的前向计算、反向传播、形状推导等功能。内存管理包括内存分配、释放、复用等,需要考虑硬件的内存层次结构和访问特性。调度优化则涉及算子执行顺序、并行策略等,需要充分利用硬件的并行计算能力。
自动混合精度训练是 AI 框架适配中的重要优化技术。通过自动将模型中的部分操作转换为低精度计算(如 FP16、BF16),可以显著减少内存占用和计算量,提高训练效率。现代 AI 框架如 PyTorch、TensorFlow 都提供了自动混合精度训练的支持,硬件适配层需要实现相应的低精度算子和转换逻辑。
寒武纪 BANG 算子库是国产 AI 芯片框架适配的典型案例。BANG算子库提供了丰富的 AI 计算算子,支持 TensorFlow、PyTorch、MindSpore 等主流框架,通过高效的算子实现和内存管理,充分发挥寒武纪芯片的计算能力。BANG算子库不仅包含基础算子,还提供了针对大模型的优化算子,如注意力计算、矩阵乘法等,为大模型训练和推理提供高性能支持。
AI 框架适配面临的挑战包括:一是框架版本迭代快,适配工作需要持续更新;二是框架功能复杂,全面适配工作量大;三是性能优化要求高,需要深入理解框架和硬件的内部机制。为应对这些挑战,框架适配技术正在向更自动化、更标准化、更高效的方向发展,如自动算子生成、标准化接口、分层优化等。
2、 大模型并行训练技术
(1)数据并行
数据并行是最常用的大模型并行训练方式,通过将训练数据分割到多个计算设备上,实现训练过程的并行化。在数据并行训练中,数据集被分割成几个碎片,每个碎片被分配到一个设备上。这相当于沿批次(Batch)维度对训练过程进行并行化。每个设备将持有一个完整的模型副本,并独立计算本地数据的梯度,然后通过AllReduce 等通信原语实现梯度同步,最终所有设备获得一致的模型更新。
数据并行的核心优势在于实现简单、扩展性好。由于每个设备都维护完整的模型副本,不需要对模型结构进行修改,因此实现起来相对简单。同时,数据并行可以线性扩展到大量计算设备上,理论上训练速度可以随设备数量线性提升。在大模型训练的早期阶段,数据并行是最主要的并行方式。然而,数据并行也存在明显的局限性。
首先是内存占用问题,每个设备都需要存储完整的模型参数、梯度和优化器状态,对于大模型而言,单设备内存往往无法容纳。其次是通信开销问题,每个训练步骤都需要进行梯度同步,当模型规模增大或设备数量增多时,通信开销会成为性能瓶颈。最后是负载均衡问题,当计算设备性能不一致时,容易出现负载不均衡的情况,影响整体训练效率。
为了缓解数据并行的内存压力,业界提出了多种优化技术。ZeRO(ZeroRedundancy Optimizer)技术通过将优化器状态、梯度和参数分区存储在多个设备上,显著减少了单设备的内存占用。梯度累积技术通过累积多个小批次的梯度,模拟大批次训练的效果,可以在不增加内存占用的情况下使用更大的有效批次大小。激活检查点技术通过选择性存储和重新计算激活值,减少内存占用,但会增加额外的计算开销。在实际应用中,数据并行通常与其他并行技术结合使用,形成混合并行策略。例如,可以将模型的不同层分配到不同的设备组上,每个设备组内部采用数据并行,设备组之间采用模型并行。这种混合并行策略可以充分发挥不同并行技术的优势,实现更高效的训练。
(2) 模型并行
模型并行是另一种重要的大模型并行训练技术,通过将模型的不同部分分配到不同的计算设备上,解决单设备无法容纳完整大模型的问题。模型并行主要分为张量并行(Tensor Parallelism)和流水线并行(Pipeline Parallelism)两种形式。
张量并行(也称为层内并行)将模型单层内的参数和计算分割到多个设备上。以矩阵乘法为例,可以将权重矩阵按行或列分割,每个设备负责一部分计算,然后通过通信合并结果。张量并行的优势是可以均匀分配计算负载,通信开销相对较小;劣势是实现复杂,需要针对不同算子设计分割策略,且通信模式复杂。
流水线并行(也称为层间并行)将模型的不同层分配到不同的设备上,形成计算流水线。数据依次流经各个设备,每个设备负责计算模型的一部分层。流水线并行的优势是实现相对简单,通信模式清晰;劣势是存在流水线气泡(Bubble),即部分设备在某些时间步处于空闲状态,影响资源利用率。
模型并行面临的主要挑战是通信开销和负载均衡。在张量并行中,每个前向和反向传播步骤都需要进行设备间的通信,通信频率高;在流水线并行中,虽然通信频率较低,但单次通信的数据量可能较大。负载均衡方面,不同层的计算复杂度和内存占用可能差异很大,如何合理分配模型各层到设备上,实现负载均衡,是一个复杂的问题。
为了优化模型并行的性能,业界提出了多种技术。通信计算重叠是一种常用技术,通过在计算进行的同时准备通信数据,隐藏通信延迟。流水线填充技术通过精心设计数据输入顺序,减少流水线气泡,提高设备利用率。动态负载均衡则根据实际运行时的性能数据,动态调整模型分配策略,实现更好的负载均衡。
在实际的大模型训练中,模型并行通常与数据并行结合使用。例如,可以将模型按层分割到多个设备组上(流水线并行),每个设备组内部再对单层进行张量并行,同时每个设备内部还可以采用数据并行。这种多维并行的策略可以充分利用大规模计算集群的资源,实现高效的大模型训练。
(3) 混合并行与 4D 并行
混合并行技术是指同时使用多种并行技术,比如数据并行和模型并行,或者数据并行和流水线并行,或者数据并行和张量并行。在大模型训练中,由于模型规模巨大、计算资源有限,单一并行技术往往无法满足需求,需要采用混合并行策略,充分发挥不同并行技术的优势。
DP+PP(数据并行+流水线并行)是一种常用的混合并行策略。在这种策略中,模型被分割成多个阶段,每个阶段分配到一个设备组上,形成流水线并行;同时,每个设备组内部采用数据并行,处理不同的数据子集。
这种策略可以同时利用数据并行的简单性和流水线并行的内存效率,适合中等规模的大模型训练。DP+TP(数据并行+张量并行)是另一种常用的混合并行策略。在这种策略中,模型的每一层被分割到多个设备上,形成张量并行;同时,不同设备组之间采用数据并行,处理不同的数据子集。这种策略可以同时利用数据并行的扩展性和张量并行的计算均衡性,适合计算密集型的大模型训练。
飞桨 4D 混合并行是一种更复杂的混合并行策略,结合了数据并行、张量并行、流水线并行和分组参数切片四种并行技术。在这种策略中,模型被同时沿多个维度进行分割:数据维度(数据并行)、张量维度(张量并行)、层维度(流水线并行)和参数维度(分组参数切片)。这种多维并行的策略可以最大化计算资源的利用率,适合超大规模的大模型训练。
混合并行的核心挑战是调度复杂性和通信开销。在混合并行中,需要协调多种并行技术的调度,确保计算和通信的高效进行。同时,多种并行技术的叠加会导致通信模式的复杂化,增加通信开销。为了应对这些挑战,混合并行系统通常需要精心设计的调度算法和通信优化技术。
在实际应用中,混合并行的选择需要考虑多个因素:模型特性(如层数、每层计算量、内存占用等)、硬件配置(如设备数量、设备间带宽、内存容量等)、训练目标(如训练速度、内存效率、扩展性等)。通过合理选择和配置混合并行策略,可以实现大模型训练的最优性能。
(4) 条件计算与 MoE
条件计算(Conditional Computation)和 MoE(Mixture of Experts)是大模型训练中的新兴技术,通过稀疏激活机制,在不增加计算负担的情况下扩展模型规模。条件计算的概念即仅在每个样本的基础上激活网络的不同部分,使得在不增加额外计算负担的情况下扩展模型规模成为可能。
稀疏激活(Sparse Activation)是指在神经网络中,某一层的激活值中只有一小部分是非零值,而大部分值为零或接近零。这种稀疏性可以减少计算量和内存需求,从而加速推理并降低能耗。稀疏激活通常出现在特定类型的神经网络或激活函数中,特别是在模型压缩和优化场景中。
MoE(Mixture of Experts)是一种实现条件计算的具体架构,通过门控网络动态选择少数专家进行计算。在 MoE 层中,输入数据被路由到多个"专家"网络中的少数几个,只有被选中的专家才会参与计算,其他专家则处于空闲状态。这种稀疏激活机制使得模型可以在不增加计算成本的情况下大幅增加参数规模,提高模型容量。
MoE 架构的核心组件包括专家网络、门控网络和路由机制。专家网络通常是前馈神经网络,负责具体的计算任务;门控网络负责根据输入数据决定激活哪些专家;路由机制则实现了数据到专家的分配。
在实际实现中,MoE 层通常替换传统 Transformer 中的前馈网络层,形成稀疏激活的Transformer 架构。MoE 架构的优势在于可以实现模型规模和计算成本的解耦。通过增加专家数量,可以线性增加模型参数规模,而计算成本仅与被激活的专家数量相关,保持相对恒定。这种特性使得 MoE 模型在参数规模远超传统模型的情况下,仍能保持合理的训练和推理成本。
然而,MoE 架构也面临一些挑战。首先是训练稳定性问题,稀疏激活可能导致训练不稳定,需要特殊的训练技巧和正则化方法。其次是负载均衡问题,如果路由机制设计不当,可能导致某些专家过载而其他专家闲置,影响训练效率。
最后是内存开销问题,虽然计算是稀疏的,但所有专家参数都需要存储,内存占用仍然很大。为了优化 MoE 架构的性能,业界提出了多种技术。负载均衡损失是一种常用的正则化方法,通过在损失函数中添加负载均衡项,鼓励门控网络均匀使用各个专家。专家容量限制则通过设置每个专家的最大处理批次大小,防止某些专家过载。通信优化技术则针对 MoE 特有的通信模式进行优化,减少专家间的数据传输开销。
在实际应用中,MoE 架构已在大模型训练中取得显著成功。如Google 的Switch Transformer、Mixtral 8x7B 等模型都采用了 MoE 架构,在保持合理计算成本的同时实现了巨大的参数规模和优秀的性能表现。随着技术的不断发展,MoE 架构有望在大模型领域发挥更重要的作用。
3、推理加速与部署优化
(1) 模型压缩技术
模型压缩技术是降低大模型推理成本的关键手段,通过减少模型参数量和计算复杂度,实现更高效的推理部署。主要的模型压缩技术包括量化、剪枝、蒸馏等,这些技术可以单独使用,也可以组合使用,形成综合的压缩方案。
量化(Quantization)是通过降低模型参数和激活值的数值精度来减少模型大小和计算量的技术。常见的量化方案包括 FP16(半精度浮点)、BF16(脑浮点)、INT8(8 位整数)、INT4(4 位整数)等。量化可以显著减少内存占用和计算量,同时利用现代 AI 硬件的低精度计算加速能力,提高推理速度。例如,将 FP32 模型量化为 INT8,可以减少 75%的内存占用,并在支持INT8 计算的硬件上获得数倍的加速比。然而,过度量化可能导致模型精度下降,需要在压缩率和精度之间找到平衡。
剪枝(Pruning)是通过移除模型中不重要的连接或神经元来减少模型参数量的技术。剪枝的核心思想是在尽量保持模型精度不受影响的前提下减少网络的参数量,例如减少网络中连接或神经元的数量。剪枝通常包括结构化剪枝和非结构化剪枝两种形式。结构化剪枝移除整个神经元或卷积核,保持模型结构规整,便于硬件加速;非结构化剪枝移除单个连接,压缩率更高但可能导致不规则的计算模式,难以直接加速。剪枝后的模型通常需要微调来恢复精度。
蒸馏(Distillation)是通过训练一个小模型(学生模型)来模仿大模型(教师模型)的行为,实现知识转移的技术。蒸馏不仅可以减少模型大小,还可以将多个大模型的知识集成到一个小模型中,提高小模型的性能。
蒸馏通常包括软目标蒸馏、特征蒸馏、关系蒸馏等多种形式,分别针对模型的输出、中间特征、样本关系等进行知识转移。蒸馏的优势是可以保持模型结构规整,便于硬件加速;劣势是训练过程复杂,需要精心设计蒸馏策略。除了上述主要技术外,还有一些其他的模型压缩方法,如二值化(将参数量化为 1 位)、低秩分解(将权重矩阵分解为多个小矩阵)、参数共享(多个参数共享相同值)等。
这些技术通常与量化、剪枝、蒸馏等技术结合使用,形成综合的压缩方案。在实际应用中,模型压缩技术的选择需要考虑多个因素:硬件特性(如支持的精度、计算能力等)、应用场景(如延迟要求、精度要求等)、模型特性(如结构、敏感度等)。通过合理选择和组合不同的压缩技术,可以在满足应用需求的前提下,最大化压缩效果,实现高效的大模型推理部署。
(2)推理引擎优化
推理引擎优化是大模型推理加速的重要手段,通过图优化、算子调度、内存管理等技术,充分发挥硬件计算能力,实现高效的推理执行。主流的推理引擎包括 TensorRT、ONNX Runtime、OpenVINO 等,它们各自具有不同的特点和适用场景。
TensorRT 是 NVIDIA 开发的高性能深度学习推理引擎,针对NVIDIAGPU进行了深度优化。TensorRT 的核心优化技术包括:精度校准(自动选择最佳精度)、层和张量融合(减少内存访问和 kernel 启动开销)、内核自动调整(针对特定 GPU 选择最优实现)、动态张量内存(最小化内存占用并重复使用内存)等。TensorRT 特别适合在 NVIDIA GPU 上部署大模型,可以显著提升推理速度和能效。
ONNX Runtime 是一个跨平台的开源推理引擎,支持多种硬件平台和AI 框架。ONNX Runtime 的核心优势在于其模块化架构和可扩展性,通过执行提供程序(Execution Providers)机制支持不同的硬件后端,如CPU、GPU、NPU等。ONNX Runtime 还提供了丰富的图优化和内存管理功能,如常量折叠、死代码消除、内存规划等,可以在多种硬件平台上实现高效的推理执行。
OpenVINO 是 Intel 开发的开源推理工具包,针对Intel 硬件(CPU、GPU、VPU 等)进行了优化。OpenVINO 的核心组件包括模型优化器(Model Optimizer)和推理引擎(Inference Engine)。模型优化器将训练好的模型转换为OpenVINO的中间表示(IR),进行图优化和精度校准;推理引擎则针对Intel 硬件进行深度优化,实现高效的推理执行。OpenVINO 特别适合在Intel 平台上部署大模型,可以充分利用硬件的加速能力。
推理引擎优化通常包括以下几个关键环节:图优化、算子优化、内存管理、批处理优化等。图优化通过常量折叠、死代码消除、算子融合等技术,简化计算图结构,减少计算量;算子优化针对特定硬件实现高效的算子库,充分利用硬件的加速能力;内存管理通过内存复用、预分配等技术,减少内存分配和释放的开销;批处理优化则通过动态批处理、批处理大小自适应等技术,提高硬件利用率。在大模型推理中,推理引擎优化面临一些特殊挑战。一是大模型的计算图规模庞大,图优化时间和内存消耗成为瓶颈;二是大模型的动态特性(如动态形状、条件计算等)增加了优化难度;三是大模型的内存占用巨大,需要特殊的内存管理策略。为应对这些挑战,推理引擎技术正在向更高效、更智能、更灵活的方向发展,如增量编译、自适应批处理、内存分片等。
(3) KVCache 与分离式推理
KVCache 与分离式推理是大模型推理优化的重要技术,通过优化注意力机制的计算和内存管理,显著提升长文本场景下的推理效率。这些技术特别适用于自回归生成任务,如文本生成、代码生成等场景。
KVCache(Key-Value Cache)是一种优化注意力计算的技术,通过缓存和复用历史计算的 Key 和 Value 向量,避免重复计算。在大模型的自回归生成过程中,每个新生成的 token 都需要与之前所有 token 进行注意力计算,如果不使用缓存,计算复杂度会随序列长度平方增长。KVCache 技术将历史计算的Key 和Value向量存储在缓存中,新生成 token 时只需计算当前 token 的Key 和Value,然后与缓存中的历史向量进行注意力计算,将计算复杂度从O(n²)降低到O(n),其中n 是序列长度。
分离式推理是一种以 KVCache 为中心的推理架构,将注意力机制的计算与其他计算分离,实现更高效的内存管理和计算调度。在传统的大模型推理中,注意力计算和其他计算(如前馈网络)是交织在一起的,难以独立优化。分离式推理将模型分为注意力模块和其他模块,分别进行优化和调度,可以更灵活地管理KVCache,提高内存利用率和计算效率。
KVCache 优化是分离式推理的核心环节,主要包括KVCache 量化、KVCache稀疏化、KVCache 压缩等技术。KVCache 量化通过将KVCache 量化为低精度格式(如 INT8、INT4),减少内存占用和带宽需求;KVCache 稀疏化通过识别和移除 KVCache 中的不重要元素,减少存储和计算开销;KVCache 压缩则通过编码压缩等技术,进一步减少 KVCache 的内存占用。
在实际应用中,KVCache 与分离式推理技术已在大模型服务中得到广泛应通过 KVCache 管理和分离式推理架构,显著提升了长文本场景下的推理效率。这些技术使得超长文本(如百万 token 级别)的大模型推理成为可能,为长文本应用场景提供了技术支撑。
KVCache 与分离式推理技术面临的挑战主要包括:一是KVCache 的内存占用随序列长度线性增长,长序列场景下内存压力巨大;二是KVCache 的管理和调度复杂,需要高效的内存分配和回收策略;三是分离式推理的实现需要对模型结构进行修改,增加了开发和维护的复杂性。为应对这些挑战,相关技术正在向更高效、更智能、更自动化的方向发展,如自适应 KVCache 管理、动态KVCache压缩、自动模型分割等。
(4)边缘-云协同推理
边缘-云协同推理是一种分布式推理范式,通过将大模型分割为多个部分,分别部署在边缘设备和云端服务器上,实现低延迟、高效率的推理服务。这种技术特别适用于对实时性要求高、计算资源有限的边缘场景,如移动设备、物联网设备等。
边缘-云协同推理的核心思想是模型分割,即将大模型分割为多个子模型,根据计算复杂度和延迟要求,将不同子模型分配到边缘设备和云端服务器上。通常,计算密集型和能耗密集型的子模型被卸载到云端服务器进行计算,而轻量级的子模型则在边缘设备上执行。这种分割策略可以在保证推理质量的同时,满足边缘场景的低延迟要求。
边缘-云协同推理可以分为三个部分:边缘设备推理、中间结果传输、云服务器推理。这三部分可作为三个进程,在推理过程中并行处理。即云端在推理当前视频帧的同时,边缘设备可以推理下一帧,形成流水线式的处理流程,进一步提高整体效率。
边缘-云协同推理的优势在于可以充分利用边缘和云端的各自优势。边缘设备靠近数据源,可以提供低延迟的数据采集和预处理;云端服务器拥有强大的计算能力,可以处理复杂的计算任务。通过合理的模型分割和任务调度,边缘-云协同推理可以实现比纯边缘推理更高的性能,比纯云端推理更低的延迟。
然而,边缘-云协同推理也面临一些挑战。首先是网络依赖性,边缘设备与云端之间的通信质量直接影响协同推理的性能,网络不稳定或带宽不足可能导致性能下降。其次是隐私安全问题,数据需要在边缘和云端之间传输,可能涉及隐私泄露风险。最后是能耗问题,边缘设备通常电池供电,需要考虑能耗优化。为了优化边缘-云协同推理的性能,业界提出了多种技术。
动态模型分割是一种关键技术,根据网络状况、设备状态、任务特性等因素,动态调整模型分割策略,实现最优的性能。自适应传输技术则根据网络条件动态调整数据传输策略,如数据压缩、增量传输等,减少网络开销。隐私保护技术通过联邦学习、差分隐私、数据加密等手段,保护数据隐私和安全。在实际应用中,边缘-云协同推理已在多个领域得到成功应用。
例如,在智能监控场景中,边缘设备负责视频采集和预处理,云端服务器负责复杂的视频分析任务;在智能医疗场景中,边缘设备负责医学影像采集,云端服务器负责复杂的影像分析和诊断;在自动驾驶场景中,边缘设备负责实时感知和决策,云端服务器负责高精度地图更新和模型训练。随着 5G、边缘计算、大模型等技术的发展,边缘-云协同推理将在更多场景中发挥重要作用,为 AI 技术的普及和应用提供新的技术路径。
4、异构资源调度与编排
(1)资源统一管理
异构资源统一管理是构建高效异构算力系统的基础,通过抽象和池化不同类型的计算资源,实现资源的统一调度和高效利用。在 AI 大模型场景中,异构资源包括 CPU、GPU、国产 AI 芯片(如寒武纪 MLU、昇腾NPU 等)、FPGA等多种计算单元,如何实现这些资源的统一管理是一个重要挑战。
Kubernetes+Device Plugin 是目前主流的异构资源管理方案。Kubernetes 作为容器编排平台,提供了强大的资源管理和调度能力;Device Plugin 机制则允许第三方设备厂商扩展 Kubernetes,支持新型硬件资源。通过Device Plugin,各种AI 加速器可以被抽象为 Kubernetes 的可调度资源,与CPU、内存等资源一样进行管理和分配。这种方案的优势是可以利用 Kubernetes 成熟的生态和工具链,降低异构资源管理的复杂性。
Volcano 是面向 AI、大数据等高性能计算场景的增强型调度器,构建在Kubernetes 之上,提供了更强大的异构资源管理能力。Volcano 提供了高性能任务调度引擎、高性能异构芯片管理、高性能任务运行管理等通用计算能力,通过接入 AI、大数据、基因、渲染等诸多行业计算框架服务终端用户。Volcano v1.12增加了对 DRA(Dynamic Resource Allocation)的支持,允许集群动态分配和管理外部资源,增强了与异构硬件的集成能力。
异构设备抽象与池化是资源统一管理的核心技术。异构设备抽象通过统一的接口和描述模型,将不同类型的硬件资源抽象为标准化的资源对象,隐藏硬件差异,简化上层应用的开发。异构设备池化则将分散的硬件资源汇聚成虚拟的资源池,实现资源的共享和复用,提高资源利用率。在实际实现中,通常采用分层抽象的策略,底层针对特定硬件提供专用驱动,中层提供统一的资源抽象,上层提供标准化的 API 接口。
资源统一管理面临的挑战主要包括:一是硬件多样性,不同厂商、不同类型的 AI 加速器在接口、功能、性能等方面差异巨大,统一抽象难度高;二是性能隔离,不同类型的资源可能存在性能干扰,需要有效的隔离机制;三是状态管理,异构设备通常有复杂的状态(如固件版本、驱动版本等),需要统一的状态管理机制。为应对这些挑战,资源统一管理技术正在向更标准化、更智能化、更自动化的方向发展,如标准化设备接口、智能资源调度、自动化运维等。在实际应用中,异构资源统一管理已在大规模 AI 集群中得到广泛应用。例如,在智算中心中,通过 Kubernetes+Volcano 的架构,实现了对CPU、GPU、国产 AI 芯片等多种资源的统一管理和调度,为大模型训练和推理提供了高效的算力支撑。随着异构算力的普及,资源统一管理技术将在AI 基础设施中发挥越来越重要的作用。
(2)任务调度策略
任务调度策略是异构资源管理的核心环节,通过合理的任务分配和资源调度,实现系统性能的最优化。在大模型与异构算力融合场景中,任务调度需要考虑多种因素,如任务特性、资源特性、网络状况等,是一个复杂的优化问题。
基于优先级的调度是最常用的调度策略之一。根据任务的重要性和紧急程度,为任务分配不同的优先级,高优先级任务优先获得资源。这种策略简单直观,适合有明显重要性差异的任务场景。然而,简单的优先级调度可能导致低优先级任务饥饿,需要结合其他机制(如时间片轮转、优先级衰减等)来保证公平性。资源亲和性调度是另一种重要的调度策略,根据任务与资源之间的亲和关系,将任务分配到最适合的资源上。
在大模型场景中,不同的模型层或算子可能对不同类型的硬件有不同的亲和性,如注意力计算适合在GPU 上执行,而某些特定的算子可能在专用 AI 芯片上更高效。资源亲和性调度可以充分利用硬件特性,提高任务执行效率。负载感知调度是一种动态调度策略,根据系统的实时负载情况,动态调整任务分配策略。负载感知调度需要监控系统的各项指标,如CPU 利用率、内存使用量、网络带宽、设备温度等,基于这些信息做出调度决策。这种策略可以适应系统负载的动态变化,实现更均衡的资源利用。
训练与推理任务混部优化是异构算力调度中的特殊挑战。训练任务通常计算密集、长时间运行、资源需求稳定;推理任务则通常延迟敏感、短时间运行、资源需求波动大。如何将这两种不同特性的任务合理混部,提高资源利用率,是一个复杂的问题。常见的策略包括时间分片(不同时间段运行不同类型任务)、资源隔离(为不同类型任务分配专用资源)、动态调整(根据负载情况动态调整资源分配)等。
Volcano 调度器提供了丰富的任务调度策略支持。Volcano Scheduler 由一系列 action 和 plugin 组成,action 定义了调度各环节中需要执行的动作;plugin根据不同场景提供了 action 中算法的具体实现细节。Volcano 支持节点负载感知调度与重调度,支持多样化的监控系统,可以根据实际需求配置不同的调度策略。
在实际应用中,任务调度策略的选择需要考虑多个因素:任务特性(如计算类型、资源需求、延迟要求等)、资源特性(如计算能力、内存容量、网络带宽等)、系统目标(如吞吐量、延迟、资源利用率等)。通过合理选择和配置任务调度策略,可以实现异构算力系统的高效运行,为大模型训练和推理提供强大的算力支撑。
(3)弹性伸缩与算力交易
弹性伸缩与算力交易是异构算力资源管理的高级特性,通过动态调整资源供给和实现算力的市场化交易,提高资源利用效率,降低使用成本。这些技术在大模型与异构算力融合场景中具有重要意义,可以帮助用户更灵活、更经济地使用算力资源。弹性伸缩是指根据业务需求和策略自动调整计算能力的服务。
在Kubernetes环境中,弹性伸缩主要包括水平伸缩(HPA,Horizontal Pod Autoscaler)和垂直伸缩(VPA,Vertical Pod Autoscaler)两种形式。HPA 主要通过增加或减少Pod数量来实现伸缩,适合无状态服务的扩展;VPA 则通过调整Pod 的资源请求和限制来实现伸缩,适合需要调整资源配额的场景。HPA 伸缩算法相对保守,如果某个 Pod 获取不到资源指标或者资源没有准备好的情况下,在进行扩容操作时,该 Pod 的资源指标均不会加入计算,确保伸缩的稳定性。弹性伸缩在大模型场景中面临特殊挑战。
大模型任务通常资源需求大、启动时间长,传统的基于 CPU 利用率的伸缩策略可能不够准确。针对这些特点,大模型弹性伸缩需要考虑更多因素,如 GPU 利用率、内存使用量、队列长度等,并结合预测性伸缩(Predictive Scaling)技术,提前预判资源需求,避免资源不足导致的性能下降。
算力交易是算力资源的市场化配置方式,通过将算力资源商品化,实现供需双方的高效匹配。算力交易可以采用多种形式,如按需付费(Pay-as-you-go)、预留实例(Reserved Instances)、竞价实例(Spot Instances)等。按需付费适合短期、不确定的资源需求;预留实例适合长期、稳定的资源需求,可以享受折扣价格;竞价实例则适合可中断、弹性大的任务,价格更低但可能被中断。算力交易市场通常包括资源提供方、资源需求方、交易平台等参与者。
资源提供方包括云服务商、算力中心、企业闲置资源等;资源需求方包括AI 企业、研究机构、个人开发者等;交易平台则提供资源发布、匹配、交易、结算等功能。区块链技术可以用于构建去中心化的算力交易平台,通过智能合约实现自动化的交易执行和结算,提高交易的透明度和可信度。弹性伸缩与算力交易的结合可以形成更智能的算力资源管理体系。
通过弹性伸缩技术,可以根据实际需求动态调整资源规模;通过算力交易技术,可以在不同资源提供商之间选择最优的资源组合。这种结合可以实现算力资源的最优配置,在满足性能需求的同时,最小化使用成本。
在实际应用中,弹性伸缩与算力交易已在多个云平台和算力网络中得到实现。例如,阿里云弹性伸缩服务(ESS)支持根据业务需求和策略自动调整计算能力,支持 ECS 实例和 ECI 实例;华为云 Volcano 调度器支持多种弹性伸缩策略,可以适应不同类型的 AI 工作负载。随着算力网络的不断发展,弹性伸缩与算力交易技术将在更广泛的场景中发挥作用,推动算力资源的高效利用和市场化配置。