主要内容

并行贝叶斯优化

并行优化

并行运行贝叶斯优化可以节省时间。并行运行需要并行计算工具箱™。Bayesopt.同时在并行工作人员执行并行目标函数评估。

并行优化:

  • Bayesopt.- 设置使用指α.名称 - 值对真的。例如,

    结果= Bayesopt(乐趣,vars,'使用指平行',真的);
  • 适合功能 - 设置使用指α.场面的领域HyperParameterOptimizationOptions.结构到真的。例如,

    mdl = fitcsvm(x,y,'OptimizeHyperParameters''汽车'......'hyperparameteroptimizationOptions',struct('使用指平行',真的))

并行贝叶斯算法

并行贝叶斯优化算法类似于串行算法,其描述于贝叶斯优化算法。差异是:

  • Bayesopt.分配点以评估并行工人,一般一次一定点。Bayesopt.计算客户端以确定要分配的点。

  • Bayesopt.评估初始随机点,它选择通过拟合高斯过程(GP)模型来评估点。适合GP模型,而一些工人仍在评估积分,Bayesopt.对仍在工人上的每个点施加价值。估算值是在它评估的点处的GP模型值的平均值,或根据所指定的一些其他值Bayesopt.“平行方法”名称值对。有关FIT功能的并行优化,Bayesopt.使用默认值并行摩托占价值。

  • Bayesopt.分配一个点来评估,并且在计算新点之前分配,它会检查太多的工人是否空闲。积极工作者的阈值由此确定minworkerutilization.名称值对。如果太多工人闲置,那么Bayesopt.分配随机点,统一地选择界限,对所有闲置的工作者均匀。这一步骤使工人更快地活跃,但工人有随机分数而不是装配点。如果空闲工人的数量不超过阈值,那么Bayesopt.选择一个点以惯常评估,通过拟合GP模型并最大限度地提高采集功能。

笔记

由于并行时序的不可递容性,并行贝叶斯优化不一定会产生可重复的结果。

最佳并行性能的设置

FIT功能没有特殊设置,可用于更好的并行性能。相比之下,几个Bayesopt.设置可以帮助加快优化。

求解器选项

设置gpactivessetsize.较小值的选项比默认值较小(300)可以加速解决方案。成本在潜在的不准确性Bayesopt.选择评估,因为目标函数的GP模型可能比具有更大的值更准确。将选项设置为更大的值可能导致更准确的GP模型,但需要更多时间来创建模型。

设置并行摩托选择'最大观察'可导致Bayesopt.以全球最佳搜索更广泛。这种选择可以在更短的时间内导致更好的解决方案。但是,默认值'剪裁模型预测'往往是最好的。

设置minworkerutilization.大值的选项可能导致更高的并行利用率。但是,此设置会导致评估更完全随机的点,这可能导致较低的解决方案。万博 尤文图斯在这种情况下,大量的价值取决于您的工作人员。默认为地板(0.8 * n), 在哪里N是平行工人的数量。将选项设置为较低的值可以给出较低的并行利用,但具有更高质量点的好处。

将客观职能放在工人身上

您可以通过三种方式之一在平行工人上放置客观函数。有些具有更好的性能,但需要更复杂的设置。

1.自动如果您将函数处理作为目标函数,Bayesopt.在运行开始时将句柄发送给所有并行工作者。例如,

加载电离层劈开=优化不变('分裂',[1,100],'类型''整数');MINLEAF =优化不变('minleaf',[1,100],'类型''整数');有趣= @(params)kfoldloss(fitctree(x,y,'kfold',5,......'maxnumsplits',params.splits,'minleaf',params.minleaf));结果= Bayesopt(乐趣,[分裂,MINLEAF],'使用指平行',真的);

如果手柄很小,或者如果您只运行一次,则此方法是有效的。但是,如果您计划多次运行优化,则可以使用其他两种技术之一来节省时间。

2.平行常数如果您计划多次运行优化,请通过仅将目标函数转移到工人一次来节省时间。当功能处理包含大量数据时,该技术特别有效。通过将功能句柄设置为a,转移目标一次并行.Pool.Constant.(并行计算工具箱)构造,如在这个例子中。

加载电离层劈开=优化不变('分裂',[1,100],'类型''整数');MINLEAF =优化不变('minleaf',[1,100],'类型''整数');有趣= @(params)kfoldloss(fitctree(x,y,'kfold',5,......'maxnumsplits',params.splits,'minleaf',params.minleaf));c = CopyFunceSheadloroworWorkers(乐趣);结果1 = Bayesopt(C,[Splits,Minleaf],'使用指平行',真的);结果2 = Bayesopt(C,[Splits,Minleaf],'使用指平行',真的,......'maxobjectiveevaluations',50);结果3 = Bayesopt(C,[Splits,Minleaf],'使用指平行',真的,......'收集功能''预期改善');

在这个例子中,CopyFuncessHandlorWorkers.仅向工人发送函数句柄一次。

3.为工人创造目标职能如果您有大量的数据要发送到工人,可以避免使用客户端加载数据SPMD.(并行计算工具箱)加载工作人员的数据。用一个合成的(并行计算工具箱)并行.Pool.Constant.访问分布式目标函数。

%makefun位于此脚本的末尾SPMD.有趣= makefun();结尾%目标是现在是一个复合材料。获取并行.Pool.Constant.百分比是指它的,而不将其复制到客户端:c = parallel.Pool.Constant(乐趣);%您也可以使用该行%c = parallel.Pool.Constant(@MakeFun);在这种情况下%,您不使用spmd%call bayesopt,传递常数劈开=优化不变('分裂',[1 100]);MINLEAF =优化不变('minleaf',[1 100]);Bo = Bayesopt(C,[Splits Minleaf],'使用指平行',真的);功能f = makefun()加载('电离层''X''是');f = @fun;功能l =有趣(params)l = kfoldloss(fitctree(x,y,......'kfold',5,......'maxnumsplits',params.splits,......'minleaf',params.minleaf));结尾结尾

在此示例中,函数处理仅存在于工人身上。手柄从未出现在客户端上。

平行贝叶斯优化输出的差异

什么时候Bayesopt.贝叶斯优化输出并行运行,包括这些差异。

  • 迭代显示- 迭代显示包括一个列,显示有效工人的数量。这是数字之后的数字Bayesopt.为下一个工人分配一份工作。

  • 绘制功能

    • 目标函数模型图(@plotobjectiveModel.)显示待处理的点(在并行工人上执行的那些点)。点的高度取决于并行摩托名称值对。

    • 经过时间图(@plotelapsedtime.)显示标签的总经过时间即时的和总目标函数的评估时间,概括所有工人,标签客观评估时间(所有工人)。客观评估时间包括在工作中启动工人的时间。

也可以看看

(并行计算工具箱)|(并行计算工具箱)

相关话题