MLflow 真实世界体验

数据挖掘 毫升流 毛毛虫
2021-09-19 11:20:33

有人可以总结一下 MLflow 的真实世界部署经验吗?我们有一些 ML 模型(例如 LightGBM、tensorflow v2 等)并且希望避免使用 SageMaker 之类的框架(由于客户要求)。因此,我们正在研究托管 ML 模型以进行推理的各种方法。延迟是一项对我们非常重要的关键性能指标。MLflow 对我们来说似乎是一个不错的选择。

如果 MLflow 的用户可以分享他们的经验,将不胜感激。

1个回答

我目前在我的公司使用 MLflow 和 Databricks,到目前为止,我认为管理模型版本、跟踪模型指标和构建从开发/实验/培训状态到生产的模型工作流是相当不错的。我不确定它是否可以被视为一个独立的工具,这意味着您应该将它与 Azure Databricks(我目前使用的)之类的东西结合起来。您可以在每次运行或模型训练后自定义您可能希望记录的标签、指标或工件,这是一种很好的方式,如下所示: 在此处输入图像描述

您还可以将几个运行实验可视化为:

在此处输入图像描述 (这些模型用于示例的抖动,因此度量值未优化) 并将生成的模型文件(例如泡菜文件)存储在相应的位置: 在此处输入图像描述

生成后,您可以通过 databricks UI(以防您最终使用它)或通过 mlflow 代码注册您的最佳模型,如下所示(这里我注册最后一个,您应该选择具有最佳首选指标的模型,其中 mlflow 也直接为您提供选项): 在此处输入图像描述

以便稍后加载并使用您的模型进行预测。一旦您对某个模型感到满意,您就可以对其进行转换: 在此处输入图像描述

我喜欢的另一个不错的功能是它为您提供最常用框架的自定义模块,如 scikitlearn、xgboost、keras 等

并构建一个容器映像,部署它……但这是另一个更长的话题。

当然,您也可以在其他第三方甚至本地使用 MLflow。

关于性能点,您是指推理本身还是其他一些延迟来源?您可以通过 SPARK UDF(在我的情况下为 PySPARK)信息对您的模型进行推断,以防您需要尽可能快的多个预测或仅用于批量推断。