Page 159 - 《软件学报》2024年第4期
P. 159

钱鸿  等:  基于动态批量评估的绿色无梯度优化方法                                                       1737


             这种分割数据集的操作没有改变评估结果,  且可以充分利用计算机硬件的并行计算能力以加速参数优化
         的过程.  由于其高效和快速的特性,  已经被诸多大模型参数训练任务所采用.

         3.2   使用部分批量样本进行解评估的优化
             尽管将训练集分成几个批量进行评估可以更好地利用并行计算的优势,  但由于每次评估还是需要评估所
         有的训练集样本,  评估代价仍然很高.  相反,  若考虑使用训练集中的一小部分数据作为训练数据子集对全量
         数据的训练效果进行近似,  则可以大幅降低评估成本.  但使用数据子集的评估值和全量训练集评估值之间存
         在误差,  即:
                                            f(θ, train )=f(θ, t )+Noise,
         其中, f(θ, t )是在第 t 次评估时,  仅在包含部分数据的数据集 train 上进行评估的结果.
             在仅使用样本子集进行优化时,  可以考虑基于批量进行样本选择,  即:  在将全量数据集划分成若干大小
         相等的批量后,  每次仅选择少量的批量进行评估.  此时,  只需用这些批量构成数据子集 train 进行评估,  而不
         是消耗大量资源来遍历所有批量.  相较于从样本中直接选择出一部分数据,  这种选择批量的方法更加快捷方
         便,  且优化效果与前者类似.  这种选择批量作为样本子集的方法可以被描述为
                                              t =  i∈ {ii  i  }   i  ,
                                                    1 2 , ,..., t n
                       i
                  ii
         其中,  i ∈ { , ,..., } 是第 t 次迭代中批量索引的集合,   i 是所有批量中的第 i 个批量(即划分批量时,  编号为 i
                        n t
                    2
                  1
         的批量).  在这种思想的指导下,  数据子集的构建不需要精确到具体的数据,  而只需要对批量进行选择,  图
         2(b)展示了这种方法的操作过程,  影响其性能的关键在于,  如何选取每次评估使用批量的索引 i ∈                          { , ,..., }ii 2  i  n t  .
                                                                                        1
         4    基于动态批量评估的绿色无梯度优化
         4.1   GRACE框架
             本文提出了一种基于动态批量评估的绿色无梯度优化方法框架(GRACE),  通过在优化过程中动态选择评
         估解使用的样本子集,  进而以较低的代价得到较高质量解的评估值,  有效权衡评估代价和优化性能,  实现绿
         色低碳且高效准确的优化效果.  具体而言,  算法以批量为单位进行评估,  并在优化过程中评估不同批量之间
         的相似程度,  指导算法选择差异性大、代表性强的样本批量进行评估,  实现以较低评估代价得到较高精度的
         解的评估的效果.  为了更好地构建批量之间的相似性关系,  本文还采用了一种特殊的线性表数据结构,  即动
         态评估表,  通过记录使用不同批量评估解的评估值,  指导批量关系树的构建. GRACE 框架全流程如算法 1 所
         示, GRACE 流程示意图如图 3 所示.
             算法 1.  基于动态批量评估的绿色无梯度优化方法框架(GRACE).
             输入:  黑盒优化器(optimizer),  模型训练接口(evaluate),  预算 budget,  更新频率 M;
             1:   初始化训练批量集合{ 1 , 2 ,…, N }和动态评估表 R
             2:   t=0,  0 =∅;
             3:   while t<budget do
             4:      if t%M=0 then
             5:         使用算法 2,  根据动态评估表 R 构造批量相似树;
             6:         向树和动态评估表 R 中添加一个新的批量;
             7:      end if
                                                             ii
                                                                  i
             8:      基于批量相似树,  根据 4.3 节得到批量索引集合 i ∈        { , ,..., } ;
                                                               2
                                                                  n t
                                                             1
             9:      θ t ←优化器给出待评估的参数 Optimizer( t );
                     }
             10:     {y  , t i i∈ {i i  i  }  ← 训练模型得到评估值 Evaluate({( , )}θ t  i  i∈ {ii  i  } );
                        1 2 , ,..., t n
                                                                1 2 , ,..., t n
   154   155   156   157   158   159   160   161   162   163   164