Page 172 - 《软件学报》2025年第4期
P. 172

1578                                                       软件学报  2025  年第  36  卷第  4  期


                 的资源配置. 以上基于       GNN  的方法能够利用     GNN  自身强大的关系表征能力, 对特征进行自动提取, 有效降低人
                 工特征工程的繁琐工作量.
                    尽管基于计算图的方法在应对任务多样性及资源配置多样性挑战时都存在一定的解决方案. 但这些方案也存
                 在一定的弊端. 对于任务多样性挑战, 当面对庞大的计算图时, 基于计算图结构的特征提取过程会造成信息损失,
                 从而对建模准确度产生影响. 对于资源配置多样性挑战, 虽然使用迁移学习可以保障在不同资源配置下的建模准
                 确度, 但该过程需要在新的资源配置下采集大量数据, 因此存在较高的数据采集开销. 不过, 此类开销仅在集群资
                 源发生变化时出现       (例如采购新型    GPU  等情况), 因此当集群资源变化少时, 基于计算图结构的方法仍然存在优势.

                 2.5   基于可组合算子的方法
                    表  4  展示了基于可组合算子的任务性能建模方法. 这些方法的流程通常包括以下步骤: (1) 将深度学习模型的
                 计算图分解为独立可组合的细粒度算子; (2) 根据离线获取的算子性能数据, 建立针对算子的性能模型, 并对待建
                 模任务的每个算子获取其独立的性能指标; (3) 将其独立的算子性能指标有效整合, 以获取任务整体性能.

                                            表 4 基于可组合算子的任务性能建模方法

                                                   规格信息
                                                    建模指标
                    成果      建模选型    分布式训练                              任务/数据集                效果
                                             执行时间 吞吐率 收敛效率
                  Habitat [54]  分析模型   -       -       √     -    DCGAN [55] 等5种CNN模型 吞吐率误差偏高 (约10.8%)
                       [56]
                   SEER     分析模型       √       -       √     -        10种CNN模型       吞吐率误差偏高 (约12.1%)
                  PerfNet [57]  一维卷积
                 PerfNetV2 [58]  模型+MLP  -     -       √     -         8种CNN模型       吞吐率误差偏高 (约13.1%)

                    基于可组合算子的方法主要致力于解决任务多样性挑战. 在面对多样化的任务时, 这类方法将其视为有限算
                 子的组合. 通过对少量算子进行建模, 再将这些算子灵活组合, 即可为各种任务提供有效的性能模型, 从而解决多
                 样性挑战. 这类方法的认识基础在于, 目前深度学习模型的常用算子种类是有限的. 通过对这些常用算子进行建
                 模, 可将算子的知识复用于不同任务, 显著降低建模难度. 在具体实施上, 这类方法可采用基于规则的分析模型, 或
                 基于轻量的深度学习模型进行建模, 主要有以下内容.
                    一些工作采用基于规则的分析模型直接建模算子的性能. 例如, Habitat                 [54] 发现一些算子在同架构      GPU  上的核
                 函数实现不变, 其性能变化趋势相似. 因此, Habitat 假设已知某一类               GPU  上的任务吞吐率, 并通过不同代际          GPU
                 之间的各项参数      (如计算频率、显存带宽等) 比例来直接建模其他                GPU  上的吞吐率. SEER   [56] 也着眼于卷积算子
                 的建模, 从   GPU  核函数执行的角度, 从底层对卷积算子计算流程进行详尽分析. 根据输入数据量及参数的不同,
                 SEER  将卷积算子分为计算受限、显存受限和利用率低下                 3  种类型, 并分别建立对应的分析模型, 建模算子执行
                 时间. 以上基于规则分析的方法具有无数据采集开销、预测延迟极低的优势, 但当其面临新硬件、新算子时, 需重
                 新调优、更新分析模型, 对人力要求较高.
                    另一些工作采取了数据驱动的思路, 设计轻量的深度学习模型进行建模. 例如                        PerfNet [56] 与  PerfNetV2 [58] , 它们
                 提取了模型和硬件特征. 软件特征主要包括算子的输入输出数据维度、激活函数、优化器类型、batch size 等. 硬
                 件特征包括使用      GPU  的  CUDA  核心数、基础频率、内存频率、带宽以及峰值               FLOPs 等. 在考虑了所有可能的
                 特征因素后, 它们建立了       1  维卷积与多层感知机相结合的轻量深度学习模型, 收集算子性能数据来拟合每个算子
                 的吞吐率数据. 类似地, Habitat   [54] 对于无法利用分析模型建模的核函数变化算子, 建立多层感知机来建模算子运行
                 时间. 尽管以上基于数据驱动的方法将            GPU         (CUDA  核心数, 频率, FLOPs 等) 作为特征训练, 然而实际
                 影响性能的因素还包括        GPU  架构、功耗调度等复杂因素. 因此, 面临未训练过的               GPU  时, 建模准确度较差, 需采
                 取迁移学习或重新训练的方式才能获取更准确的建模结果.
                    在应对任务多样性挑战方面, 基于可组合算子的方法通过知识复用展现优势; 然而这类方法主要从算子角度
                 建模, 忽略了算子执行之外的其他开销            (例如框架开销、内存拷贝开销等), 这对建模准确度存在一定影响. 在应对
                 资源配置多样性挑战方面, 基于数据驱动的可组合算子方法通常具有较为简单和轻量的模型, 因此可基于迁移学
   167   168   169   170   171   172   173   174   175   176   177