一文揭开AI芯片并行处理技术应用的神秘面纱(一)
作者 | Jessie
出品 | 焉知汽车
并行处理技术在移动端AI Agent中的重要性早已不言而喻,如机器人的视觉传感器可能每秒产生数百万像素的数据。如果采用传统的串行处理方式,逐个像素地处理这些数据,将会花费大量的时间,导致机器人的反应迟缓。而算力并行处理技术可以将这些数据分割成多个部分,同时进行处理。这样机器人就能更快地对环境做出反应,更及时地识别道路上的障碍物并做出避让动作。
因此,肯定业内对于诸如智能驾驶汽车、智能机器人这类AI Agent而言都希望通过研究并行算力技术来实现相应的功能搭载。GPU 技术作为一种并行技术的主流实现方式。其内部并行技术包括模型并行、张量并行、数据并行、流水线并行。研究好基于GPU的具体并行实现逻辑可以很好的利用其并行算力的产生更好的输出。
本文将以实例告诉你如何用好并行处理技术最大化的优化并行算力资源。
各并行技术应用处理概述
模型并行技术将整个模型按层或模块划分到不同的 GPU 上,每个 GPU 只存储和计算模型的一部分,各部分可能同时处理同一批次的数据。如一个具有多个隐藏层的神经网络,可将不同隐藏层分配到不同 GPU。前向传播时,数据依次在各层对应的 GPU 上计算;反向传播时,误差从最后一层依次向前传递并更新参数。模型并行适用于模型过大,无法在单个 GPU 内存中完全加载的情况,尤其适合模型结构较松散且各部分计算需求均衡的模型。这种并行方式解决了超大模型的内存限制问题;缺点是如果模型部分间的依赖性强,可能会导致设备间通信瓶颈,增加同步复杂性。
张量并行技术将模型的单个张量,如权重矩阵、输入张量等切分成多个部分,并分配到不同的 GPU 上进行并行计算,最后再将结果组合。例如对于一个权重矩阵,可按行或列切分,各 GPU 分别计算分配到的子张量,再通过集合通信操作合并结果,常见的切分方式有行并行、列并行、2D 并行、2.5D 并行等。张量并行适用于需要进一步并行化的超大模型场景,特别是单个张量过大的情况,通常与其他并行方法结合使用。优点是适合处理非常大的张量,允许更细粒度的并行计算;缺点是实现复杂,需要高效的设备间通信。
图1. 使用张量模型并行性划分的 Transformer 模型块。f和g是共轭的,f是前向传递中的恒等算子,在后向传递中全部归约,而g则相反。
如上图所示,一个 Transformer 层由一个自注意力块和一个两层多层感知器(MLP)组成。MLP 块由两个 GEMM 和一个 GeLU 非线性组成:。
我们可以沿着列拆分,即。这种分区允许 GeLU 非线性独立应用于每个分区 GEMM 的输出:
。这是有利的,因为它消除了同步的需要(如果沿着行拆分则需要同步,因为 GeLU 是非线性的)。
然后可以沿着第二权重矩阵的行拆分其行,以消除 GEMM 之间任何通信的需要,如下所示:。在 dropout 层之前,跨 GPU 可以减少第二个 GEMM 的输出。
数据并行技术是指在多个 GPU 上分布数据来实现并行处理。每个 GPU 存储模型的完整副本,对分配的数据子集进行前向和反向传播计算,最后聚合梯度并更新参数。其优势是实现简单、可灵活扩展,但会增加内存开销,且梯度聚合可能成为瓶颈。
流水线并行技术是模型并行的一种策略,将大数据批次划分为多个微批次,各节点按顺序处理不同模型层,微批次在节点间流动,就像在流水线上一样。它能加快执行速度,减少空闲时间,提高计算资源利用率。
图2. GPipe 管道调度,所有微批次(用数字表示)的前向传播(蓝色)之后是后向传播(绿色)。灰色区域表示管道气泡。为简单起见,我们假设后向传播花费的时间是前向传播的两倍,管道调度的效率并不取决于这一因素。在这个例子中,每个批次由 8 个微批次组成,每个蓝色或绿色方框中的数字是赋予相应微批次的唯一标识符(具体来说,第一个批次由微批次 1 - 8 组成,第二个批次由微批次 9 - 16 组成,依此类推)。在流水线刷新时执行优化器步骤并更新权重参数,以确保严格的优化器语义,这会导致设备闲置并产生管道气泡。
除了以上常规的通用模型并行和张量并行,比如针对英伟达的 GPU 芯片还有以下并行技术。
CUDA 并行计算。CUDA 是英伟达开发的并行计算平台和编程模型,可让开发者利用 GPU 强大的并行计算能力加速应用程序。其特点包括支持多种编程语言、区分主机和设备端代码、能同时启动大量线程并行计算、有丰富软件库以及跨平台性等。
NVLink 与 NVSwitch 互联并行。NVLink 是一种高速、低延迟的通信技术,用于连接 GPU 之间或 GPU 与其他设备,可实现高性能计算和数据传输,其带宽远高于 PCIe,能避免数据回传 CPU 内存,减少传输延迟。NVSwitch 则用于多卡之间的互联,进一步提升了 GPU 集群的通信性能和可扩展性。
随着人工智能的发展,模型规模和数据量不断增大,在应对复杂模型与数据时,单一的并行技术难以满足需求。比如训练大型语言模型,仅用数据并行,单个 GPU 可能无法容纳完整模型;仅用模型并行,通信开销又过大。而将数据并行与模型并行结合,可同时处理大规模数据和超大规模模型,提升训练效率。
其次,不同的并行技术在不同的硬件架构和场景下有各自的优势,需要充分发挥硬件性能。如 NVLink 等高速互联技术的出现,让张量并行等需要频繁通信的并行方式更具可行性和高效性,混合使用多种并行技术,能够更好地发挥硬件的并行计算能力和通信能力,提升整体性能。
同时,混合并行可以根据模型结构和数据特点,更灵活地分配计算任务和资源,提高资源利用率。例如在流水并行中结合数据并行,可减少设备空闲时间,提高设备利用率,使训练过程更加高效流畅。
为了满足不同阶段需求,模型训练和推理的不同阶段对并行技术的需求也有所不同。在训练初期,数据并行可以快速处理大量数据,加速模型的初步收敛;到了训练后期,模型参数基本稳定,模型并行或张量并行等方式可更精细地处理模型计算,进一步优化模型性能。
图 3:基于 Transformer 模型使用张量和流水线模型并行性 (MP) 的组合
以下将以整个自动驾驶系统处理的模式链路为例详细阐述具体的策略。
1、数据并行处理阶段
数据处理:在车辆行驶过程中,多个传感器(如摄像头、雷达等)会持续收集海量数据。可以使用数据并行技术,将不同传感器收集到的数据分配到不同的 GPU 核心或设备上进行预处理,例如对摄像头图像进行降噪、裁剪等操作,对雷达数据进行滤波处理等。
模型训练:在训练自动驾驶模型时,数据并行可以让每个 GPU 都拥有一份完整的模型副本,然后将不同批次的训练数据分别输入这些 GPU 进行训练。例如,一部分 GPU 处理来自晴天环境下的数据集,另一部分处理阴天环境下的数据,最后汇总梯度更新模型参数,这样能加快模型的训练速度。
2、模型并行处理阶段
感知模块:自动驾驶的感知模块通常包括目标检测、识别和距离估计等子模块。这些子模块可以分别分配到不同的 GPU 上进行计算。例如,一个 GPU 负责处理车辆检测任务,另一个 GPU 负责行人检测,它们可以同时对传感器数据进行处理,提高感知的实时性。
决策规划模块:路径规划和决策模块也可以采用模型并行。比如,一个 GPU 负责基于交通规则和路况生成可行的路径规划,另一个 GPU 根据车辆的动力学模型和周围车辆的行为进行实时决策,两者并行工作,快速给出自动驾驶车辆的最佳行驶策略。
3、张量并行处理阶段
复杂神经网络计算:在自动驾驶中使用的深度神经网络(如卷积神经网络用于目标识别),对于其中的大型张量(如权重矩阵),可以采用张量并行技术。将权重矩阵按行或列切分后分配到不同 GPU 上进行并行计算,例如在处理高分辨率图像数据时,能加速神经网络的前向传播和反向传播过程,使车辆更快地识别出道路上的物体和状况。
4、流水线并行处理阶段
硬件资源利用最大化:现代自动驾驶车辆通常配备了多个高性能处理器(如 GPU、FPGA 等),流水线并行可以充分利用这些硬件资源。不同的处理器可以负责不同的流水线阶段,避免单个处理器负载过重,提高整个系统的吞吐率,使车辆能够在复杂的城市场景中快速处理大量的传感器数据。
任务分解与并行:自动驾驶场景包含多个复杂任务,如传感器数据采集、目标识别、路径规划和决策控制等。流水线并行处理技术可以将这些任务分解成多个阶段,每个阶段在不同的处理单元中同时进行,就像工厂的流水线一样。例如,当激光雷达在采集新一帧数据时,之前采集的数据可以在另一个处理器上进行目标识别任务,从而提高整体的处理速度,更及时地应对城市场景中快速变化的交通状况。
混合并行技术才是真正的应用实践
基于如上分析,基于诸如自动驾驶这类丰富的智能化场景中,很少单独使用某一类并行技术进行计算。而是利用多种技术的结合来实现具体的场景信息处理。参照当前常规的智能驾驶场景而言,模块化处理思路而言,整体的混合并行架构的设计及思路如下。
结合以上流程图所示,整体的处理过程可以归类总结如下:
1、感知层并行设计
摄像头、雷达等多种传感器同时收集数据,不同类型传感器数据分别由不同 GPU 或计算单元并行预处理,如摄像头图像降噪、裁剪,雷达数据滤波等。使用多个 GPU 并行执行不同的特征提取任务,或对同一特征提取模型的不同部分进行并行计算,加快感知特征提取速度,为后续决策提供更丰富及时的信息。
2、规划层并行设计
在路径规划中,同时启动多个 GPU 进行不同路径搜索算法或同一算法不同参数的并行计算,快速找到多条可行路径,再并行优化路径,提高规划效率和质量,选择最优行驶路径。规划层与感知层、决策层之间建立并行通信机制,及时获取感知信息和决策指令,动态调整规划结果,使自动驾驶车辆能快速响应城市场景变化。
3、决策层混合并行设计
将复杂的决策模型按功能或结构划分为多个子模型,分别部署在不同GPU 上并行计算,同时对不同批次数据进行并行处理,加速决策过程,如一个 GPU 负责基于交通规则的路径规划子模型,另一个处理车辆动力学模型。
将深度学习模型与规则引擎、专家系统等决策方法结合,各自在不同 GPU 或计算单元上并行运行,然后融合结果,如规则引擎判断道路右侧有障碍物则决策不转向,深度学习模型根据摄像头图像预测转向安全性,两者结果加权平均融合。
最后,对于整体的并行技术做一定阶段的性能评估是实时调整不同不行处理技术,优化并行技术方法的有效手段。可以基于基准测试结果,参照加速比、效率、并行度计算并行计算相对于串行计算的速度提升倍数。公式如下:
加速比 = 串行计算时间 / 并行计算时间效率 = 加速比 / 并行处理器数量
其中,加速比越大,说明并行架构对性能提升效果越显著,考量并行计算的实际效率,效率越高,表明并行架构利用计算资源越充分。分析并行架构可同时执行的任务数量,并行度越高,意味着系统能同时处理更多任务,可通过分析并行算法的并行部分来评估。
请先 登录 后再发表评论~