在数据科学项目中,经常专注于构建预测模型并使用数据来实现这一目标。每个人都对构建一个能够接近完美模拟现实世界商业场景的机器学习模型感到兴奋和专注。然而,在追求这一结果的过程中,往往会忽略数据科学项目的其他各个方面,尤其是操作方面。由于机器学习项目本质上是迭代的,跟踪所有因素、配置和结果本身就可能成为一个非常艰巨的任务。
随着数据科学团队的增长和分布,团队之间的有效协作变得至关重要。将在本文中探讨的开源工具,即DVC Studio和MLFlow,将通过自动跟踪每次迭代的变化/结果来帮助解决这些挑战。此外,这两个工具都提供了一个非常互动的用户界面,结果被整齐地展示出来,当然,用户界面也是可以定制的!
只需要掌握机器学习的基础知识、Python和版本控制账户,例如Github。在本文中,将使用Kaggle的南非心脏病数据集来运行实验。目标变量将是CHD(冠状动脉心脏病)。
注意:将使用相同的数据集并构建相同的模型,以简化DVC Studio和MLflow用例。目标是理解这两个工具的特性,而不是微调模型构建。
DVC是一个可以插入到像Github、Gitlab、Bitbucket等版本控制工具中的开源工具/库,用于导入机器学习项目进行实验和跟踪。该工作室有一个用户界面来跟踪实验/指标。要了解更多关于DVC的信息,请探索其features
。
pip install dvc
应该可以完成安装。有关在Windows版本上安装的更多信息,请参考install DVC
。可以从Github下载/克隆代码以快速参考。可以从Github
下载/克隆代码以快速参考。
将加载数据集,进行分割,然后进行模型构建步骤。所有的代码/文件都可以在src文件夹下找到——为了保持博客的相对简短,这里跳过代码的详细说明。可以从blog
访问完整的代码和说明。
在进一步讨论之前,让先看一下DVC中是如何跟踪实验和KPI的。
如上所述,输出在控制台中,绝对不是互动的,那么对于机器学习模型至关重要的图表呢?是否有办法根据定义的阈值过滤结果?例如:如果需要查看准确度高于0.7的实验。唯一的方法是编写一段代码来过滤特定数据。这就是DVC工作室使其变得非常简单和互动的地方。将在下一节中查看用户界面。
按照以下步骤设置DVC工作室。
步骤1:导航到URL https://studio.iterative.ai
,使用Github登录,将能够看到右上角的Add a view
。
步骤2:应该将GitHub仓库映射到DVC工作室,点击Configure Git Integration Settings
。
步骤3:一旦完成步骤2,它将打开Git集成部分。选择仓库并提供访问权限。
步骤4:一旦映射完成,仓库将可用于创建视图,如下所示。
步骤5:完成上述步骤后,点击仓库并打开跟踪器。
选择选择的模型,点击Compare
以查看结果。
有两种方法可以运行实验。
1. 进行所有更改并将代码提交到Github仓库。DVC工作室会自动将指标拉取到工作室进行跟踪。
2. 另一种方法是在DVC工作室UI上进行更改,运行实验,然后推送到Github。
MLflow是一个用于跟踪机器学习实验的开源工具。与DVC工作室类似,它有助于协作,进行各种实验和分析。要了解更多关于MLflow的信息,请探索其features
。
可以从Github
访问代码仓库进行下载/克隆。安装mlflow和其他用于模型构建的库,设置配置文件以提高代码的可读性。文件可以在MLflow文件夹下找到。
最后和当前的指标被跟踪并列出,如下所示快照。如果迭代次数增加,那么跟踪变化和结果指标将变得具有挑战性,将会花费大量时间跟踪变化和结果指标,而不是专注于提高模型性能。
路径 指标 旧值 新值 变化
reportscores.json 逻辑准确性 0.62069 0.65517 0.03448
reportscores.json roc_auc 0.65093 0.72764 0.07671
reportscores.json 测试分数 62.06897 65.51724 3.44828
reportscores.json 训练分数 71.96532 74.27746 2.31214
MLflow为提供了一个不错的MLflowUI
,它帮助在UI上跟踪一切。一旦准备好运行实验(classification.py),指标就会被跟踪并在UI上显示,如下代码命令所示。
mlflow ui
## 这是输出
INFO:waitress:Serving on http://127.0.0.1:5000 URL是本地主机的,通过点击URL,将能够在UI上查看结果。UI非常用户友好,人们可以轻松导航和探索相关指标。下面用红框突出显示的部分显示了感兴趣的指标跟踪。
在本文中,对MLOps进行了概述,并使用开源工具DVC Studio和MLflow进行了实现。这些MLOps工具使跟踪变化和模型性能变得轻松,以便可以更多地专注于特定领域的调整和模型性能。