云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

对象存储_数据库名称_返现

小七 141 0

尝试使用Hyperopt笔记本复制下面列出的步骤,并观看我们的按需网络研讨会以了解更多信息。Hyperopt是Python中用于调整机器学习模型的最流行的开源库之一。我们很高兴地宣布Hyperopt 0.2.1支持通过Apache Spark进行分布式调优。新的SparkTrials类允许您在Spark集群中扩展超参数调优,SparkTrials由Joseph Bradley、Hanyu Cui、Lu Wang、Weichen Xu和Liang Zhang(Databricks)与Max Pumperla(Konduit)合作,共同促成更快的调谐和更好的模型。什么是Hyperopt?Hyperopt是一个为Python编写的开源超参数优化库。截至2019年10月,每月下载超过445000个PyPI,Github上有3800多个stars,它具有强大的应用和社区支持。对于数据科学家来说,Hyperopt提供了一个通用的API来搜索超参数和模型类型。Hyperopt提供了两种调整算法:随机搜索和Parzen估计量的贝叶斯方法树。对于开发人员来说,Hyperopt为算法和计算后端提供了可插拔的api,我们利用这种可插拔性编写了一个由apachespark提供支持的新的计算后端。用Spark缩小Hyperopt使用新的SparkTrials类,您可以告诉Hyperopt在Spark集群中分发一个调优作业。最初在Databricks中开发的这个用于超参数调优的API使许多Databricks客户能够分发计算复杂的调优作业,现在它已经被用于开放源码的Hyperopt项目在最新版本中。超参数调整和模型选择通常需要训练成百上千个模型。SparkTrials并行运行这些训练任务的批处理,每个Spark执行器上都有一个,允许进行大规模的横向扩展来进行调整。要将SparkTrials对象与Hyperopt一起使用,只需将SparkTrials对象传递给Hyperopt的fmin()函数:从hyperopt import SparkTrials最佳超参数=fmin(fn=训练功能,space=搜索空间,算法=超光速热塑性弹性体,最大评估值=64,试验=SparkTrials())有关代码的完整示例,请查看SparkTrials上的Hyperopt文档。在幕后,fmin()将生成新的超参数设置以进行测试并将其传递给ParkTrials。下图显示了SparkTrials如何在集群上异步运行这些任务:(a)Hyperopt的主逻辑在Spark驱动程序上运行,计算新的超参数设置。(B)当工人准备好执行新任务时,Hyperopt启动该超参数设置的单个任务Spark作业。(C) 在这个任务中,在一个Spark执行器上运行,将执行用户代码来训练和评估新的ML模型。(D)完成后,Spark任务将返回结果,包括损失,给驱动程序。Hyperopt使用这些新结果来为将来的任务计算更好的超参数设置。由于SparkTrials在一个Spark worker上适合并评估每个模型,因此它仅限于调整单机ML模型和工作流,例如scikit learn或single machine TensorFlow。对于分布式ML算法,如Apache Spark MLlib或Horovod,可以使用Hyperopt的默认Trials类。在实践中使用斯巴克特里尔SparkTrials有两个关键参数:parallelism(要运行的最大并行测试数,默认为Spark executor的数量)和timeout(fmin允许占用的最长时间(以秒为单位,默认为无)。timeout提供了一种预算机制,允许对调优所需的时间进行限制。parallelism参数可以与fmin()的max_evals参数一起设置,使用下图中所述的指导原则。Hyperopt将批量测试超参数的max_evals total设置。如果parallelism=max_evals,则Hyperopt将随机搜索:它将选择所有的超参数设置进行独立测试,然后并行评估它们;如果parallelism=1,则Hyperopt可以充分利用自适应算法,如Parzen估计的树,迭代地探索超参数空间:每个新的超参数将根据之前的结果选择测试的设置。将并行度设置在1和max_evals之间允许您在可伸缩性(更快地获得结果)和适应性(有时会得到更好的模型)之间进行权衡。为了说明调整的好处,我们使用最近网络研讨会上的Pythorch工作流,在MNIST数据集上运行了Hyperopt with SparkTrials。我们的工作流程训练了一个基本的深度学习模型来预测手写数字,并且我们调整了3个参数:批大小、学习率,这是在AWS上的Databricks集群上运行的,p2.xlarge workers和Databricks运行时5.5ml。在下面的图中,我们将max_evals设置为128个,并改变了worker的数量。正如预期的那样,更多的worker(更大的并行性)允许更快的运行时间,同时实现线性扩展。然后,我们将超时时间固定在4分钟,并改变工人的数量,重复这个实验几次。下面的图表显示了损失(负对数似然,其中"180m"="0.180")与工人数量的关系;蓝色的点是单独的试验,红线是一条黄土曲线,显示了趋势。一般来说,模型性能随着我们使用更大的并行性而提高,因为这允许我们测试更多的超参数设置。请注意,由于Hyperopt在搜索中使用了随机化,所以在不同的试验中行为是不同的。Hyperopt 0.2.1入门SparkTrials现在可以在hyperopt0.2.1(在PyPi项目页面上提供)和Databricks运行时(5.4及更高版本)中提供。要了解有关Hyperopt的更多信息并查看示例和演示,请访问:项目文件Github.io页面,包括完整的代码示例AWS和Azure的Databricks文档中的示例笔记本Hyperopt还可以与MLflow结合以跟踪实验和模型。您可以通过Github项目页面参与进来:在Github问题页面上报告开源问题为Github上的Hyperopt做出贡献相关资源https://pypi.org/project/hyperopt/http://hyperopt.github.io/hyperopt/scaleout/spark/https://databricks.com/product/managed-mlflowhttps://databricks.com/blog/2019/06/07/hyperparameter-tuning-with-mlflow-apache-spark-mllib-and-hyperopt.html.bgtxt_灰色{背景:f7f7f7;填充:.35rem;字体系列:Menlo,摩纳哥,康乐仕,"Courier New",monospace;字体-尺寸:10磅;}免费试用Databricks。今天就开始吧