工程的博客

自动超参数调优、缩放和跟踪:按需网络研讨会和常见问题解答现已可用!

2019年7月18日 工程的博客

分享这篇文章

在数据库试试这个笔记本

6月20日,我们团队举办了一场网络直播研讨会数据库上的自动超参数调优、缩放和跟踪——与软件工程师Joseph Bradley和Databricks高级产品经理Yifan Cao合作。

自动超参数调优,缩放和跟踪Databricks网络研讨会

自动化机器学习(AutoML)最近受到了极大的关注,因为它能够缩短数据科学团队的实现价值时间,并最大限度地提高模型的预测性能。然而,要达到这种理想状态可能是一个复杂且耗费资源的过程。

在本次网络研讨会中,我们介绍了:

  • Databricks上提供的AutoML产品的概况
  • 最流行的超参数调优技术以及实现这些技术的开源工具。bob下载地址
  • 我们在Databricks中为这些工具构建的改进,包括与MLflow的集成,特别是针对Apache PySpark MLlib和Hyperopt。

我们使用以下笔记本和教程演示了这些概念:

如果你想免费访问Databricks统bob体育亚洲版一分析平台bob体育客户端下载试一下我们的笔记本,你可以访问免费试用

最后,我们进行了问答环节,以下是问答环节。

问:有没有云平台可供我们进行实验?bob体育客户端下载如果是这样,我们如何进入?

Databricks AutoML特性在Azure Databricks和AWS中都可用。要开始,请按照我们的指示注册一个免费试用

问:我们期望从超参数调优中获得多少精度收益?

执行超参数调优的精度收益取决于模型、超参数和其他因素。您可以期望从初始超参数调优中获得最大的收益,但随着您花费更多时间进行调优,收益会递减。例如,在max_eval=50的情况下运行Hyperopt所带来的准确度飞跃,可能比将max_eval从50增加到100所带来的飞跃要大得多。

问:Hyperopt可以应用于scikit-learn, TensorFlow吗?

是的。我们的分布式Hyperopt + MLflow特性适用于单节点机器学习训练代码,不受底层ML库的影响。Hyperopt可以接收包含单机scikit-learn、TensorFlow或其他ML代码的用户函数。注意,对于分布式机器学习训练,请考虑使用Apache Spark MLlib,它在Databricks的MLflow中被自动跟踪。

问:开源到底是什么?bob下载地址

我们正在通过“SparkTrials”使用Apache Spark进行开源分布式Hyperopt。对MLflow的自动跟踪仍然是databicks特有的特性。

问:你能详细说明什么是条件超参数调优吗?它将如何帮助模型搜索?

条件超参数调优是指某些超参数的搜索依赖于其他超参数的值的调优。例如,当调优线性模型的正则化时,可以在正则化参数“lambda”的一个范围内搜索L2正则化,而在不同的“lambda”范围内搜索L1正则化。这种技术有助于模型搜索,因为不同的模型有不同的超参数。例如,对于一个分类问题,你可以考虑在逻辑回归和随机森林之间进行选择。在同一个Hyperopt搜索中,您可以测试这两种算法,搜索与每个算法相关的不同超参数,例如逻辑回归的正则化和随机森林的树数。

问:MLflow自动选择最好的模型,并使其作为父运行和其他运行作为子?

我们的MLflow与MLlib和Hyperopt的集成会自动选择最好的模型和结构运行在父子层次结构中。需要明确的是,这个集成有两个处理不同方面的部分:(a) MLflow仅用于记录和跟踪,而(b) MLlib和Hyperopt包含选择最佳模型的调优逻辑。因此,MLlib和Hyperopt比较模型,选择最佳模型,并决定如何在MLflow运行时跟踪模型。

问:我可以设置一个作为超参数减慢/变化的计划学习速率吗?

是的,但是减速的逻辑需要在您的自定义ML代码中。一些深度学习库支持缩小学习率:例如,https://www.tensorflow.org/api_docs/python/tf/compat/v1/train/exponential_decay

问:我们能在MLflow跟踪UI中看到所有用于模型的特性吗?

默认情况下,这些特性不会被记录,但是您可以向日志特性名称中添加自定义MLflow日志代码。为此,我们建议在主运行下记录特性名称,以便进行调优。如果特性被记录为一长串名称,那么最好将它们记录为MLflow标记或工件,因为它们支持比Databricks中的MLflow参数更大/更长的值。

问:MLflow能够处理自动化的特性工程吗?

您可以轻松地安装第三方库(如Featuretools)来自动进行特性工程,并将生成的特性记录到MLflow

问:MLflow如何帮助执行迁移学习?

迁移学习有很多种类型,所以很难给出一个单一的答案。与本网络研讨会主题最相关的迁移学习类型是使用一个模型的超参数调优结果来对另一个模型进行暖启动调优。MLflow可以通过提供一个知识存储库来帮助理解过去的超参数和性能,帮助用户选择合理的超参数和将来要搜索的范围来实现这一点。将过去的结果应用到新的调优运行中目前必须手动完成。

问:这些功能在社区版中可用吗?

目前没有。

问:MLflow自动跟踪在Scala中可用吗?

目前没有。如果有足够的客户需求,我们会增加。

额外的资源:

文档:

博客:

视频:

要开始使用MLflow,请遵循mlflow.org或查看发布代码Github。我们最近还创建了一个松弛的通道MLflow以及实时问题,你可以跟随@MLflow在Twitter上。我们很高兴听到您对概念和代码的反馈!

免费试用Databricks
看到所有工程的博客的帖子