整合HpBandSter:开发与复盘

本文档详述了整合HpBandSter的开发过程,包括开发进度、异常边界条件处理、BOHB的bug修复与新特性。讨论了预算(budget)的解释与表达,提出如何处理worker任务失败的情况,以及BOHB中config去重和Statmodels的错误处理。
摘要由CSDN通过智能技术生成

开发进度面板

TODO LIST

  1. 热启动的支持,并对timestamps做调整保证HpBandSter的可视化功能不出错 (high)OK
  2. 将SMAC对incumbent的打印功能(调研incumbent_trajectory)移植过来 (high)OK
  3. 加载最好模型时选用budget最大的模型 (medium)OK
  4. 集成学习时支持不同尺寸的验证数据 (参考PoSH-AutoSklearn) (medium)OK
  5. 支持iterationsbudget_mode,并用redis对workflow做缓存(调研redis的持久化) (high)OK
  6. 连续减半(SuccessiveHaving)删除废弃模型的redis键值对 (medium)
  7. 对BOHB的kde模型做进一步调研并做充分测试 (low)
  8. 整合scikit-optimize的GP,RF,ET,GBRT代理模型 (low)
  9. 将SMAC的局部搜索功能移植过来 (low)
  10. 调研scikit-optimize的EI, PI, LCB等采集函数,整合EIPS,PIPS等采集函数 (low)
  11. 整合scikit-optimize的可视化功能 (low)
  12. 整合BOAH的可视化功能 (low)
  13. 整合HyperOpt的TPE和adaptive-TPE代理模型 (low)
  14. 调研超参优化库的benchmark,并在benchmark上测试 (low)
  15. 重新支持手动建模 (medium)
  16. 重新跑通所有单元测试(除了HttpClient) (medium)
  17. 调研HpBandSter系统对于异常记录是如何表达的,并适配这种表达OK
  18. 避免两次启动BOHB随机采样时样本相同问题?OK

异常边界条件面板

  1. 如果ConfigSpace的样本空间特别少,例如100次以下,20次以下,是否可以自动切换为网格搜索?
  2. _get_sorted_trial_records_get_best_k_trial_ids两个函数的budget_id做出限制。因为用户可能更换过budget方案,例如原先用budget=4对应5折,后面用budget=4对应10折。欣慰的是,热启动时budget_id是where条件之一。

整合HpBandSter开发方案

实例化BOHB或其他Master需要提供ConfigSpace

class BOHB(Master):
    def __init__(
            self,
            configspace=None,
            eta=3,
            min_budget=0.01,
            max_budget=1,
            min_points_in_model=None,
            top_n_percent=15,
            num_samples=64,
            random_fraction=1 / 3,
            bandwidth_factor=3,
            min_bandwidth=1e-3,
            **kwargs
    ):

配置空间:

configspace=None

HyperBand相关:

eta=3,
min_budget=0.01,
max_budget=1,

CG_BOHB相关:

min_points_in_model=None,
top_n_percent=15,
num_samples=64,
random_fraction=1 / 3,
bandwidth_factor=3,
min_bandwidth=1e-3,
迭代类型
HyperBand
SuccessiveHaving
Simple

但是Simple其实可以看做是SuccessiveHaving的特殊情况(min_budget==max_budget)

所以只需要4个参数就能囊括以上3种迭代类型:

迭代控制参数
min_budget
max_budget
eta( η \eta η)
SH_only(这个参数参考PoSH-AutoSklearn)

除了以上的迭代控制参数,用户再提供一个配置采样器。在fit函数启动后,传入ConfigSpace,就组成了一个优化器对象(Optimizer),这个类继承自Master。

重构fit,拆成一下几个phase:

phase comment
input_experimental_data 传入实验依赖的各种数据,并计算出task_id, hdl_id
start_nameserver task_id, hdl_id, user_id组装为run_id
并结合在Estimator构造参数中传入的ns_port等参数启动NS
run_evaluators 根据input_experimental_data传入的实验数据,
加上构造参数传入的n_workersworker_host
参数进行实例化,并启动。重写run函数,增加
concurrent_type参数。
run_optimizer 在执行input_experimental_data后,将ConfigSpace参数
和构造器中的其他参数一并实例化Optimizer对象,并启动。

为了与HpBandSte

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值