Hyperopt概念
本文描述了你需要知道的一些概念使用分布式Hyperopt。
的例子说明如何使用Hyperopt砖,明白了与Hyperopt Hyperparameter调优。
fmin ()
你使用fmin ()
执行Hyperopt运行。的理由fmin ()
表中所示;看到Hyperopt文档为更多的信息。如何使用每个参数的例子,请参阅笔记本电脑的例子。
参数名称 |
描述 |
---|---|
|
目标函数。Hyperopt调用这个函数的值生成hyperparameter空间提供的参数。这个函数可以返回损失作为标量值或在一个字典Hyperopt文档详情)。这个函数通常包含代码模型训练和损失计算。 |
|
定义了hyperparameter空间搜索。Hyperopt在这个空间是如何定义提供极大的灵活性。你可以选择一个分类选择等算法,或概率分布均匀和日志等数值。 |
|
Hyperopt搜索算法用于搜索hyperparameter空间。最常用的是 |
|
hyperparameter设置尝试(模型)的数量。 |
|
许多hyperparameter设置Hyperopt应该提前产生。因为Hyperopt TPE生成算法可以花一些时间,它可以帮助增加这超出的默认值1,但一般不大于 |
|
一个 |
|
一个可选的早期停止函数来确定 |
的SparkTrials
类
SparkTrials
是一个砖开发的API,允许你分发Hyperopt Hyperopt代码运行不作其他变化。SparkTrials
加速单机优化分配试验引发工人。
请注意
SparkTrials
设计为单机并行化计算毫升scikit-learn等模型。为模型创建分布式ML算法如MLlib或Horovod,不要使用SparkTrials
。在这种情况下,模型建立过程是自动并行集群,您应该使用默认Hyperopt类试用
。
本节描述如何配置参数传递给SparkTrials
和实施方面的SparkTrials
。
SparkTrials
和MLflow
砖运行时毫升支持日志MLflow从工人。你可以添加自定义日志代码的目标函数传递给Hyperopt。
SparkTrials
日志优化结果嵌套MLflow运行如下:
主要或父运行:调用
fmin ()
记录为主要运行。如果有一个活跃的运行,SparkTrials
这个活跃日志运行,不结束运行时fmin ()
的回报。如果没有积极运行,SparkTrials
创建一个新的运行时,日志,并结束之前运行fmin ()
的回报。孩子:每个hyperparameter设置测试记录(“审判”)作为一个孩子的主要运行下运行。MLflow日志记录从工人也存储在相应的孩子。
当调用fmin ()
,砖建议积极MLflow运行管理;也就是说,包装的调用fmin ()
在一个与mlflow.start_run ():
声明。这将确保每一个fmin ()
调用记录到一个单独的MLflow主要运行,并使它容易日志额外的标签,运行参数或指标。
请注意
当你打电话fmin ()
多次在同一活跃MLflow运行,MLflow这些调用相同的主要运行日志。为记录参数和标签解决名称冲突,MLflow附加一个UUID名称与冲突。
当伐木工人,您不需要显式地管理运行的目标函数。调用mlflow.log_param (“param_from_worker”,x)
目标函数的日志给孩子一个参数运行。您可以登录参数、指标、标签、目标函数和工件。