订阅博客
收藏博客
微博分享
QQ空间分享

沪指,开源sk-dist,超参数调优仅需3.4秒,sk-learn练习速度提高100倍,principle

频道:民生新闻 标签:景山公园regard 时间:2019年09月10日 浏览:133次 评论:0条

作者 | Evan Harris

译者 | Monanfei

修改 | Jane

出品 | AI科技大本营(ID:rgznai100)

【导语】这篇文章为咱们介绍了一个开源项目——sk-dist。在一台没有并行化的单机上进行超参数调优,需求 7.2 分钟,而在一百多个中心的 Spark 群集上锁情环用它进行超参数调优,只需求 3.4 秒,把操练 sk-learn 的速度提升了 100 倍。

sk-dist 简介

sk-marrydist 是一个开源项目,它运用 Spark 来分发 scikit-learn 元估量器。常见的元估量器有决策树(随机森林和其他的随机树),超参孔云龙数调优器(格网查找和随机查找),以及多类别处理技能(一对多和一对一)。

沪指,开源sk-dist,超参数调优仅需3.4秒,sk-learn操练速度进步100倍,principle

sk-dist 的首要动机是添补传统机器学习在模型散布式操练上的空白。除掉神经网络和深度学习,咱们发现在单个数据集上操练单个模沪指,开源sk-dist,超参数调优仅需3.4秒,sk-learn操练速度进步100倍,principle型并不怎样花时刻,反而当咱们运用元估量器(例如网格查找或调集等),在数据集的屡次迭代上操练模型的屡次迭代花费了很多时刻。

运用 sk-dist 的比如

以手写数字数据集为例,咱们事前对图画进行了编码,以便于进行恰当的分类。咱们能够在一台机器上飞速的操练一个支撑向量机,数据集有1797 条记载,整个操练进程不到 1 秒钟。可是,超参数调整却需求在操练集的不同子沪指,开源sk-dist,超参数调优仅需3.4秒,sk-learn操练速度进步100倍,principle集上进行很多的操练作业。

如下图所示,咱们构建了一个参数网格,本次超参数调优一共需求 1050 个操练使命。在具有一百多个中心的 Spark 群集上运用 阑尾方位sk-dist 进行超参数调优,咱们只需求 3.4 秒,而在一台没有并行化的单机上进行超参数调优,却需求 7.2 分钟。

  • 侵组词

上例展现了一个常见的超参数调优场景:首先将数据拟合到内存中,然后再去操练单个分顾又铭类器。可是,超参数调优所需的拟合使命数很快就会添加。下图展现了运用 sk-dist 运转格网查找的流程:

关于 Ibotta 传统机器学习的实践运用,咱们常常发现自己处于以下相似状况:运用多个简略的分类器对中小型数据(100k~1M)进行屡次迭代,妄图处理超参数调优、调集模型和多类别问题。

现在的处理方案

现在,散布式的传统机器学习元估量操练有两个干流处理方案。第一个,也是最简略的一个:运用 joblib 完成 scikit-learn 内置元估量器的并行化。这和 sk-dist 十分相似,可是该办法却存在一个很大的限要素:处理功用遭到单机资源的约束。沪指,开源sk-dist,超参数调优仅需3.4秒,sk-learn操练速度进步100倍,principle即便在一台具有数百个内核的机器上实施并行化,它的功用与运用 spark 的 sk-dist 比较,也要差劲许多。这是由于 Spark 具有履行器的精细内存标准,优异的容错才干,以及本钱操控选项,例如为作业节点运用专门的实例。

另一个现存的处理方案是 S成人动画park ML。它是Spark的本地机器学习库,支撑许多与 scikit-learn 相同的算法,用于分类和回归问题。它还具有树调集和网格查找等元估量,以及对多类别问题的支撑。尽管这听起来很完美,好像能够处理散布式 scikit-learn 机器学习问题,可是它并不能用咱们感兴趣的并行办法进行操练。

如上图所示,Sp稻城亚丁在哪里ark ML 将针铃声下载对散布在许多履行程序上的数据操练单个模型。当数据量很大,而且不合适单机内存时,该办法很有用。可是,当数据很小时,scikit-learn 或许在单机上体现欠佳。此外,当操练随机森林模型时,Spark ML 会按次序操练每个决策树。不管分配给使命的资源有多大,该使命的挂起时刻都将与决策树的数量成线性份额。

关于网格查找,Spark ML 选用了并行参数,该参数将并行操练单个模型。可是,每个独自的模型仍在跨履行器的散布数据上进行操练。假如朴实沿着模型的维度而波旬不是数据的散布,那么使命的总并行功用只能发挥一小部分。

因而,咱们期望有一个新的处理方案,将咱们的数据散布在与 Spark ML不同的维度上。当咱们运用小型或中型数据时,将数据拟合到内存中将不再是问题。在随机森林的比如中,咱们期望将操练数据完整地派送给每个履行器,在每个履行器上拟合一个独立的决策树,并沪指,开源sk-dist,超参数调优仅需3.4秒,sk-learn操练速度进步100倍,principle将那些拟合好的决策树回收,然后集成随机森林。经过沿着该维度实施并行化,履行速度能够比串行分发数据和操练决策树快几个数量级。网格查找和多类别等其他元估量技能也应该选用这种相似的并行办法。

sk-dist 的特色

鉴于这些现有处理方案的局限性,sk-dist 友谊年月应时而生。sk-dist 最重要的是分发模型,而不是数据。

尽管 sk-dist 首要重视元估量器的散布式操练,d但它还包含运用 Spark 进行 scikit-learn 模型散布式猜测的模块、几个无需运用 Spark 的前/后处理 scikit-learn 改换器、以及运用或不运用Spark 的灵敏的特征编码器。

  • 散布式操练:运用 Spark 分发元估量器操练。支撑以下算法:运用网格查找和随机查找的超参数调优,运用随机森林的树集成,其他树和随机树嵌入,以及一对多、一对一的多类别问题战略。

  • 散布式猜测:运用 Spark DataFrames 分配拟合后的 scikit-learn 估量器进行猜测。经过便携式的 scikit-learn 估量器,该办法使得大标准的散布式猜测成kylee为或许。这些估量器能够与 Spark 一同运用,也能够不与 Spark 沪指,开源sk-dist,超参数调优仅需3.4秒,sk-learn操练速度进步100倍,principle一同运用。

  • 特征编码:运用 Encoderizer 对特征进行灵敏编码。Encoderizer 能够运用或不运用Spark 并行化。它将揣度数据类型和形状,主动挑选并运用最佳的默许特征改换器,对数据进行编码。作为一个彻底可定制的特征联合编码器,它还具有运用 Spark 进行散布式改换的附加优势。

散布式操练:运用 Spark 分发元估量器操练。支撑以下算法:运用网格查找和随机查找的超参数调优,运用随机森林的树集成,其他树和随机树嵌入,以及一对多、一对一的多类别问题战略。

散布式猜测:运用 Spark DataFrames 分配拟战国策合后的 scikit-learn 估量器进行猜测。经过便携式的 scikit-learn 估量器,该办法使得大标准的散布式猜测成为或许。这些估量器能够与 Spark 一同运用,也能够不与 Spark 一同运用。

特征编码:运用 Enco刘泓君derizer 对特征进行灵敏编码。Encoderizer 能够运用或不运用Spark 并行化。它将揣度数据类型和形状,主动挑选并运用最佳的默许特征改换器,对数据进行编码。作为一个彻底可定制的特征联合编码器,它还具有运用 Spark 进行散布式改换的附加优势。

sk-dist 的适用景象

并非一切的机器学习问题都合适运用 sk-dist,以下是决议是否运用 sk-dist 的一些辅导准则:

  • 传统的机器学习: 广义线性模型,随机梯度下降,最近邻,决策树和朴素贝叶斯等办法与 sk-dist 合作杰出。这些模型都已在 scikit-learn 中集成,用户能够运用 sk-dist 元估量器直接完成。

  • 中小型数据:大数据无法与 sk-dist 一同运用。值得留意的是,操练散布的维度是沿着模型的轴,而不是数据。数据不只需求合适每个履行器的内存,还要小到能够播送。根成功精细据 Spark 的装备,最大播送量或许会遭到约束。

  • Spark 的运用:sk-dist 的中心功用需求运转Spark。关于个人或小型数据科学团队而言,从经济上来讲或许并不可行。此外,为了以经济有用的办法充分利用 sk-dist,需求对 Spark 进行一些调整和装备,这要求运用者具有一些 Spark 的基础知识。

传统的机器学习: 广义线性模型,随机梯度下降,最近邻,决策树和朴素贝叶斯等办法与 sk-dist 合作杰出。这些模型都已在 scikit-learn 中集成,用户能够运用 sk-dist 元估量器直接完成。

中小型数据:大数据无法与 sk-dist 一同运用。值得留意的是,操练散布的维度是沿着模型的轴,而不是数据。数据不只需求合适每个履行器的内存,还要小到能够播送。一见钟情依据 玺怎样读Spark 的装备,最大播送量或许会遭到约束。

Spark 的运用:sk-dist 的中心功用需求运转Spark。关于个人或小型数据科学团队而言,从经济上来讲或许并建筑学不可行。此外,为了以经济有用的办法充分利用 sk-dist,需求对 Spark 进行一些调整和装备,这要求运用者具有一些 Spark 的基础知识。

值得引起留意的是,尽管神经网络和深度学习在技能上能够与 sk-dist 一同运用,但这些技能需求很多的操练数据,有时需求专门的硬件设备才干作业。深度学习不是 sk-dist 的方针,由于它违反了上面的(1)和(2)。作为代替技能, Amazon SageMaker 能够合作神经网络或深度学习进行运用。

原文:

https://medium.com/building-ibotta/train-sklearn-100x-faster-bec530fc1f45

(*本文为AI科技大本营原创文章,转载请联络微信 1092722531)