Page 214 - 《软件学报》2026年第6期
P. 214

周文浩 等: SWTuner: 基于机器学习方法的分布式编译调优框架                                              2533


                    本文使用随机森林模型对被调优程序的编译选项和性能之间的关系进行建模, 以指导该程序的后续调优. 为
                 了直观地展示模型的构建过程, 本文以包含              5  个选项的编译调优任务作为示例. 假设每个编译选项               o i 仅支持打开
                 和关闭两种状态      (分别表示为    1  和  0), 且编译选项  o i 与程序执行时间  perf 的关系满足以下约束:

                                                                                                      (4)
                                         perf = 20.0−5.0×o 1 −4.0×o 2 +3.0×o 3 −o 1 ×o 4 +0.5×o 5
                    公式  (4) 是一个假设的简化示例. 其中, 选项         o 1 和  o 2 为性能敏感选项, 选项  o 3 引入了额外优化开销, 选项       o 1
                 与  o 4 同时开启将削弱优化效果, 而选项        o 5 对性能影响较小. 此示例用于说明随机森林模型如何捕捉选项间的线
                 性与非线性关系, 实际应用中模型能够通过历史样本自动学习此类模式. 首先, SWTuner 根据该约束进行随机采
                 样, 获得如表   2  所示训练数据. 然后, 从训练数据中随机抽取部分样本, 根据基尼指数等指标选择最佳特征, 并根据
                 该特征的不同取值将样本划分为若干子集. 对于每个子集, 重复上述特征选择和数据划分的过程, 就能够构造出一
                 棵用于预测程序性能的决策树. 对于上述示例, 本文使用                 3  棵决策树的平均预测结果作为最终的预测结果. 如图               4
                 所示, 该示例的随机森林模型预测精度较高, 相对误差仅为                  1.8%  左右. 除了上述示例中二值选项, SWTuner 还支
                 持循环展开次数、循环分块大小等多值选项. 一方面, SWTuner 继承了                  OpenTuner 的  IntegerParameter 类, 能够根
                 据给定的取值范围自动进行搜索采样. 另一方面, 随机森林模型天然支持对多值特征的建模, 决策树能够通过划分
                 节点捕捉多值选项与性能的关系.

                                    表 2 包含   5  个选项的编译调优任务的随机森林模型训练数据

                   编号      o 1  o 2   o 3   o 4  o 5   perf    编号      o 1  o 2   o 3   o 4   o 5  perf
                    1      0     0    0     0     0    20.0     9      1     0    0     0     0    15.0
                    2      0     0    0     0     1    20.5     10     1     0    0     0     1    15.5
                    3      0     0    0     1     0    20.0     11     1     0    0     1     0    14.0
                    4      0     0    1     0     0    23.0     12     1     0    1     0     0    18.0
                    5      0     1    0     0     0    16.0     13     1     0    1     0     1    18.5
                    6      0     1    0     0     1    16.5     14     1     1    0     0     0    11.0
                    7      0     1    0     1     0    16.0     15     1     1    0     0     1    11.5
                    8      0     1    0     1     1    16.5     16     1     1    0     1     0    10.0


                                             预测样本:    o 1  o 2  o 3  o 4  o 5
                                                      1   0    1   1   0
                                 o 1                        o 2                         o 3
                                0      1                   0       1                   0      1
                          o 3           o 2           o 3          o 4            o 2          o 1
                           0   1       0    1         0   1        0   1          0   1        0   1
                       o 4          o 4   o 5      o 1   o 5    o 1                  o 4          o 5
                        0  1         0  1  0  1     0  1  0  1   0  1                 0  1         0  1

                  数据编号  1  3    4   9, 10  11  14  15  1  9, 11  12  13  5  15  7  2  5, 6  7, 8  4  12  13
                  预测值  20.0 20.0  23.0  15.25 14.0 11.0  11.5  20.0 14.5  18.0  18.5 16.0 11.5  16.0  20.5  16.25 16.25  23.0  18.0 18.5

                                                              +
                      实测结果: 20.0−5.0+3.0−1.0=17.0   预测结果: (14.0+18.0+18.0)/3=16.67  相对误差: (17.0−16.7)/17.0=1.8%
                                      图 4 包含   5  个选项的编译调优任务的随机森林模型示例

                    通过复用结果数据库中已存储的历史搜索样本集合                   S t ={(x i , t i ): i=1, 2,…, W t }, 能够非常方便地对随机森林模
                 型进行训练. 同时, 为了评估模型的泛化效果, SWTuner 从结果数据库中随机抽取                    W v 个样本构成验证样本集合       S v ,
                 其中  S v ∩S t =  ∅, 并使用决定系数  [31] 来度量  S v 上模型预测结果的准确性. 决定系数   R 的计算公式如下:
                                                                                2

                                                           ∑
                                                             W v    2
                                                               (t i − ˆ t i )
                                                      2      i=1
                                                    R = 1− ∑                                          (5)
                                                             W v
                                                               (t i − ¯ t) 2
                                                             i=1
   209   210   211   212   213   214   215   216   217   218   219