加入收藏 | 设为首页 | 会员中心 | 我要投稿 济源站长网 (https://www.0391zz.cn/)- 数据工具、数据仓库、行业智能、CDN、运营!
当前位置: 首页 > 站长资讯 > 动态 > 正文

微软发布Edge浏览器89.0 Dev版

发布时间:2021-01-30 16:09:03 所属栏目:动态 来源:互联网
导读:模型的管理平台和算法调度 不论是Sklearn,还是Spark ML的模型预测,从代码角度来看,预测功能是不同模型内部的方法。不存在通用的预测方法兼容所有的模型。对于开发人员自己写代码的时候没问题,但如果做一个通用化的平台,需要考虑统一的预测组件来处理所

模型的管理平台和算法调度

不论是Sklearn,还是Spark ML的模型预测,从代码角度来看,预测功能是不同模型内部的方法。不存在通用的预测方法兼容所有的模型。对于开发人员自己写代码的时候没问题,但如果做一个通用化的平台,需要考虑统一的预测组件来处理所有的模型预测,并有一定的扩展性,通过一个预测组件兼容不同算法框架的模型。

和预测组件类似的另一个问题是,不同算法模型,甚至跨框架的模型,如何都能统一部署到在线预测的服务中去?
 

另一方面,在训练亿级以上的数据量时传统的SparkML训练相当慢甚至崩溃失败。这是因为Spark对超大规模的模型的训练并不擅长,Spark训练模型分多轮迭代,每一轮需要所有的执行器的任务做完后才汇总参数,根据木桶原理,整个Spark任务会受到最慢的worker运行时间影响。

另外,所有的执行器会通过广播的方式对参数进行共享,对于大规模参数量的模型来说相当占网络带宽,也会导致系统使用率效果非常低。
 

目前机器学习平台除了支持随机算法和网格搜索的算法,也实现了贝叶斯优化以及自研的遗传算法。测试发现自研的算法调参效率远优于传统默认的算法。

数据规模的支持

系统初期只支持SparkML框架,正常训练万级别的数据集几分钟能训练完成,但是当用户数据集只有几十到几百数量级时,任务也需要跑几分钟,相对于单机的python秒级训练完成的时间来说相当慢。其中一个原因是任务提交到Spark集群上需要等待资源分配。真正训练时间短,但其他的准备时间也让用户觉得很慢。所以我们在后续版本把python的单机的引擎也引用进来。当数据量小的时候用户可以直接在单机上做这种操作。
 

目前的机器学习框架,普遍自带调参功能,比如Spark ML,但是调参能力相当有限,因为只能做随机和全组合(穷举搜索)。使用Spark自带的调参方法,如果用户没有一点直觉经验排除调参区间,那就需要拼计算资源或者人品。

算法框架自带的调参系统还有另一个局限性,就是无法跨平台复用调参算法。因此我们设计一个系统层面的调参框架,可以调用Spark、python等不同算法框架,也可以不局限在算法框架语言限制内开发自己的调参算法。

我们的自动调参的系统从流程上来看比较简单。系统把调参分为多轮次迭代进行。传统调参算法比如随机调参、网格搜索调参只有一轮,高级的算法会有多轮调参,通过前一轮调参的评估结果适当缩小调参区间,最终把参数收敛到一个最优值。

系统读取用户设置的参数区间后,根据用户的需求把区间划分为多个子区间,并在每个子区间随机采样参数作为首次调参的组合,并通过任务分发服务下发给执行引擎,调度对应的算法框架训练和评估。训练任务结束后,执行引擎把评估结果返回给调参服务。

收集到当前轮次所有评估结果后,调参服务调起算法计算下一轮的调参空间,并调整下一轮的取样个数,再次下发给执行引擎测试,循环往复,直到达到最大轮次限制或收敛程度。

(编辑:济源站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读