启动与MLflow的DAGsHub集成
DAGsHub很高兴向现有用户推出它与MLflow的新集成。这意味着他们现在可以在一个一致的环境中管理MLflow实验,以及他们的代码和数据集。对于那些已经熟悉MLflow的人,不再需要复杂的设置,现在可以比较不同实验的运行,并提供一个更托管的MLflow解决方案。
如果您只对集成细节感兴趣,您可以滚动到下面关于使用DAGsHub的MLflow的部分。
否则,继续阅读以获得MLflow的概述,MLflow的一些好处和差距,以及关于DAGsHub和MLflow的集成的细节
什么是MLflow
MLflow是一个管理ML生命周期的开源平台,包括实验、可再现性、部署和一个中心模型注册中心
每天大约有60K的下载,8K星在GitHub - MLflow是一个开源工具,最初由Databricks推出,自2018年推出以来已经获得了很大的人气。它帮助数据科学家管理机器学习生命周期的多个阶段。其中一个阶段是“实验跟踪”——这是一个公认的术语,用于记录模型每次运行时的结果变化。MLflow为收集这些实验提供的解决方案被称为“MLflow Tracking”。其他工具也提供了强大的功能,我推荐阅读这篇文章实验跟踪工具的比较为了更深入地了解它们之间的区别。
MLflow的用途是什么?为什么它是实验跟踪的首选解决方案
它有最大的社区
一个由机器学习从业者和公司组成的大型社区已经采用MLflow作为解决方案。这通常是一个强有力的指标,表明一个工具正在做正确的事情。一个大的社区意味着更多的教程,更多的在线问答,或者在GitHub上针对用户遇到的常见问题的开放问题。MLflow已经有290个贡献者,据报道,超过200家公司在他们的工作流程中使用它,这对这类项目来说意义重大。这为MLflow在未来的许多年里继续开发和使用提供了一种安全感
简单的和开源
开源工具是个人、研究人员和非营利组织的必需品。这为他们提供了免费的解决方案、社区支持和最大的灵活性。MLflow无疑是目前实现这一承诺的热门应用之一。跟踪API设计良好,具有全面而简单的客户端库,提供简单的手动日志功能,如:
#开始运行mlflow.start_run() #记录hyper-param mlflow.log_param() #记录度量mlflow.log_metric()
它还为大多数常见的高级机器学习框架提供了自动日志记录功能,包括Scikit-learn、Tensorflow、Keras、XGBoost、FastAI、PyTorch等。
例如Scikit-learn:
mlflow.sklearn.autolog()
它的设置相对容易——为了开始跟踪实验,你所需要的就是安装一个客户端库(即python库),并在代码中使用日志API调用。
为了预览实验或比较结果,你需要在命令提示符中运行一个本地的基于web的用户界面:
#启动mlflow web ui
你会在浏览器中获取它http://localhost:5000
.
实时跟踪
“实时”意味着你可以在代码运行时跟踪性能或任何指标,这在你想要观察损失的时候特别有用,例如,如果它没有收敛,就在中间停止训练。实时日志是一把双刃剑,因为它不是保证重现性.这将实验跟踪工具的领域分为两部分。有些(如MLflow)将跑步训练的开始阶段作为基准。其他人——就像"-在培训结束时查看存储库的状态,作为需要签入和访问的时间点。
MLflow缺少什么,使它成为一个明显的选择
设置远程服务器很困难
为小型团队或开源项目设置一个持久的远程服务器涉及到技术问题,而且成本很高。
首先,您需要设置一台外部世界可访问的联机机器,最好具有可读的持久URL。
其次,由于您不希望任何人能够查看或记录服务器上的实验,因此需要管理访问控制。您可以通过支持身份验证的中间服务器运行调用,然后通过与服务器本身的通信来实现这一点。如果您希望能够添加用户、删除用户并提供对项目的公共访问,您需要围绕它构建一个完整的系统。不幸的是,这些复杂性将是许多交易的破坏者。如果你最终设法解决了这些问题,你仍然需要向云提供商支付运行机器的费用,你可能不会为你正在研究的论文或开源的人脸检测项目这样做。这就是MLflow实验可能永远不会出现在本地机器或内部网络之外的原因。
UI缺乏灵活性
Mlflow的用户界面提供了一个主菜单,您可以在不同的实验之间进行选择和切换。“实验”是一组用户可以定义为层次结构的“运行”。你可以自己决定是为每个项目创建一个实验,还是为同一个项目创建多个实验。您可以选择多个运行并在它们之间进行比较,但不能在不同实验的运行之间进行比较。
对于每次运行,您可以选择您记录的图形,并将它们显示在单独的页面中,但您不能在单个摘要页面中一次性预览它们。
缺乏上下文和连接性
假设您已经安装了MLflow服务器,并记录了多个项目中使用它的实验。现在,您希望与您的同事共享项目的状态。您需要向她发送一个到存储库的链接,一个到MLflow服务器的链接,并指定这个特定项目的实验。另一种常见的情况是,当你想在工作场所之外的社区发布你的研究结果。您需要找到一种方法来应用前面描述的证书管理,以便只有他们才能查看项目。此外,你的MLflow UI在整个项目中是不可发现的。您可以在存储库中放入一个链接Readme.md
文件,但是前面提到的访问问题仍然适用。
与DAGsHub MLflow
连接到项目的其他部分
现在有MLflow跟踪结合DAGsHub,您终于可以以一种有意义的方式管理MLflow实验。项目的所有组件现在都连接起来了。换句话说,您的存储库主页现在将包含您的代码、数据管道和所有MLflow实验。
您可以比较实验,查看一个有趣的实验,并轻松地查看生成实验的代码和数据集,只需单击一次。正如在谈论MLflow的UI时提到的,比较不同实验的运行需要打开两个不同的窗口。现在情况已经不同了。现在可以对不同的实验进行比较,当然,还可以在一个地方看到所有度量图。
最小的设置
首先,你需要这样做dota雷竞技,创建一个存储库,并向它推送代码。然后,在存储库主页上,您将得到一个用于MLflow的跟踪URI。
你现在要做的,假设你已经很熟悉了如何使用MLflow,将该URI设置为跟踪URI,或者使用环境变量MLFLOW_TRACKING_URI
或者在代码中添加以下代码行:
设置mlflow远程服务器mlflow.set_tracking_uri("//www.kkolawyers.com//.mlflow")
如果您想记录参数和指标,您需要具有对存储库的写权限—AKA是贡献者。MLflow客户机支持基本身份验证,为了指定凭证,您需要使用环境变量MLFLOW_TRACKING_USERNAME
而且MLFLOW_TRACKING_PASSWORD
.
就是这样,你可以记录你的实验,并与公众分享这个示例项目.如果您的存储库是私有的,那么实验当然也是私有的。
将您的项目分发出去,并与任何人共同编写它
我们在DAGsHub的任务之一是降低进入的门槛开源的机器学习生命周期工具。我们用DVC做到了,现在我们用MLflow做到了。我们让用户决定如何利用他们喜欢的各个方面。我们相信,为社区提供一个专业管理工作的解决方案,而不需要DevOps知识,这将使开源、可复制数据科学不仅仅是幻想。
总结
我们已经看到,MLflow被广泛采用,开源且直接,但在没有任何DevOps知识的情况下,免费使用它有一些困难。通过将MLflow连接到任何存储库,以及专用的MLflow远程服务器,您现在可以利用DAGsHub进行实时日志记录。这里有一个视频链接如何使用MLflow与DAGsHub.请随时联系我们社区聊天如果您有问题,或者希望我们支持更多的MLflow功能。