加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

将sklearn训练速度提升100多倍,美国「返利网」开源sk-dist框架

发布时间:2019-09-27 02:51:12 所属栏目:建站 来源:机器之心编译
导读:在本文中,Ibotta(美国版「返利网」)呆板进修和数据科学司理 Evan Harris 先容了他们的开源项目 sk-dist。这是一个分派 scikit-learn 元预计器的 Spark 通用框架,它团结了 Spark 和 scikit-learn 中的元素,可以将 sklearn 的逊?з度晋升 100 多倍。

该示例声名白一个常见环境,个中将数据拟合到内存中并实习单个分类器并不重要,但超参数调解所需的拟合数目很快就会增进。以下是运行网格搜刮题目的内涵机制,如上例中的 sk-dist:

将sklearn训练速度提升100多倍,美国「返利网」开源sk-dist框架

行使 sk-dist 举办网格搜刮

对付 Ibotta 传统呆板进修的现实应用,我们常常发明本身处于相同环境:中小型数据(100k 到 1M 记录),个中包罗多次迭代的简朴分类器,得当于超参数调优、荟萃和多类办理方案。

现有办理方案

对付传统呆板进修元预计实习,现有办理方案是漫衍式的。第一个是最简朴的:scikit-learn 行使 joblib 内置元预计器的并行化。这与 sk-dist 很是相似,除了一个首要限定身分:机能受限。纵然对付具稀有百个内核的理论单台呆板,Spark 如故具有如执行器的内存调优类型、容错等利益,以及本钱节制选项,譬喻为事变节点行使 Spot 实例。

另一个现有的办理方案是 Spark ML。这是 Spark 的本机呆板进修库,支持很多与 scikit-learn 沟通的算法,用于分类和回归题目。它还具有树荟萃和网格搜刮等元预计器,以及对多类题目的支持。固然这听起来也许是分派 scikit-learn 模式呆板进修事变负载的优越办理方案,但它的漫衍式实习并不能办理我们感乐趣的并行性题目。

将sklearn训练速度提升100多倍,美国「返利网」开源sk-dist框架

漫衍在差异维度

如上所示,Spark ML 将针对漫衍在多个执行器上的数据实习单个模子。当数据很大且无法将内存放在一台呆板上时,这种要领很是有用。可是,当数据很小时,它在单台计较机上的示意也许还不如 scikit-learn。另外,当逊?ф机丛林时,Spark ML 按次序实习每个决定树。无论分派给使命的资源怎样,此使命的挂起时刻都将与决定树的数目成线性比例。

对付网格搜刮,Spark ML 确实实现了并行性参数,将并行实习单个模子。可是,每个单独的模子仍在对漫衍在执行器中的数据举办实习。假如凭证模子的维度而非数据举办漫衍,那么使命的总并行度也许是它的一小部门。

最终,我们但愿将我们的实习漫衍在与 Spark ML 差异的维度上。行使小型或中型数据时,将数据拟合到内存中不是题目。对付随机丛林的例子,我们但愿将实习数据完备地广播给每个执行器,在每个执行器上拟合一个独立的决定树,并将那些拟合的决定树返回驱动措施以构建随机丛林。沿着这个维度漫衍比串行漫衍数据和实习决定树快几个数目级。这种举动与网格搜刮和多类等其他元预计器技能相同。

特性

鉴于这些现有办理方案在我们的题目空间中的范围性,我们抉择在内部开拓 sk-dist。最重要的是我们要「分派模子,而非数据」。

sk-dist 的重点是存眷元预计器的漫衍式实习,还包罗行使 Spark 举办 scikit-learn 模子漫衍式猜测的模块、用于无 Spark 的几个预处理赏罚/后处理赏罚的 scikit-learn 转换器以及用于有/无 Spark 的机动特性编码器。

漫衍式实习:行使 Spark 分派元预计器实习。支持以下算法:超参数调优(网格搜刮和随机搜刮)、决定树荟萃(随机丛林、特殊随机树和随机树嵌入)以及多类技能(一对多和一对一)。

漫衍式猜测:行使 Spark DataFrames 漫衍拟合 scikit-learn 估算器的猜测要领。可以通过便携式 scikit-learn 预计器实现大局限漫衍式猜测,这些预计器可以行使或不行使 Spark。

特性编码:行使名为 Encoderizer 的机动特性转换器漫衍特性编码。它可以行使或不行使 Spark 并行化。它将揣度数据范例和外形,自动应用默认的特性转换器作为尺度特性编码技能的最佳猜测实现。它还可以作为完全可定制的特性连系编码器行使,同时具有与 Spark 漫衍式转换器共同的附加上风。

用例

以下是判定 sk-dist 是否得当你的呆板进修题目空间的一些指导原则:

传统呆板进修 :广义线性模子、随机梯度降落、最近邻算法、决定树和朴实贝叶斯合用于 sk-dist。这些都可在 scikit-learn 中实现,可以行使 sk-dist 元预计器直接实现。

中小型数据 :大数据不合用于 sk-dist。请记着,实习漫衍的维度是沿着模子变革,而不是数据。数据不只必要得当每个执行器的内存,还要小到可以广播。按照 Spark 设置,最大广播巨细也许会受到限定。

Spark 定位与会见:sk-dist 的焦点成果必要运行 Spark。对付小我私人或小型数据科学团队而言,这并不老是可行的。另外,为了操作 sk-dist 得到最大本钱效益,必要举办一些 Spark 调解和设置,这必要对 Spark 基本常识举办一些实习。

这里一个重要的留意事项是,固然神经收集和深度进修在技能上可以与 sk-dist 一路行使,但这些技能必要大量的实习数据,偶然必要专门的基本办法才气有用。深度进修不是 sk-dist 的预期用例,由于它违背了上面的 (1) 和 (2)。在 Ibotta,我们一向在行使 Amazon SageMaker 这些技能,我们发明这些技能对这些事变负载的计较比行使 Spark 更有用。

(编辑:湖南网)

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

热点阅读