有人可以总结一下 MLflow 的真实世界部署经验吗?我们有一些 ML 模型(例如 LightGBM、tensorflow v2 等)并且希望避免使用 SageMaker 之类的框架(由于客户要求)。因此,我们正在研究托管 ML 模型以进行推理的各种方法。延迟是一项对我们非常重要的关键性能指标。MLflow 对我们来说似乎是一个不错的选择。
如果 MLflow 的用户可以分享他们的经验,将不胜感激。
有人可以总结一下 MLflow 的真实世界部署经验吗?我们有一些 ML 模型(例如 LightGBM、tensorflow v2 等)并且希望避免使用 SageMaker 之类的框架(由于客户要求)。因此,我们正在研究托管 ML 模型以进行推理的各种方法。延迟是一项对我们非常重要的关键性能指标。MLflow 对我们来说似乎是一个不错的选择。
如果 MLflow 的用户可以分享他们的经验,将不胜感激。
我目前在我的公司使用 MLflow 和 Databricks,到目前为止,我认为管理模型版本、跟踪模型指标和构建从开发/实验/培训状态到生产的模型工作流是相当不错的。我不确定它是否可以被视为一个独立的工具,这意味着您应该将它与 Azure Databricks(我目前使用的)之类的东西结合起来。您可以在每次运行或模型训练后自定义您可能希望记录的标签、指标或工件,这是一种很好的方式,如下所示:
您还可以将几个运行实验可视化为:
(这些模型用于示例的抖动,因此度量值未优化)
并将生成的模型文件(例如泡菜文件)存储在相应的位置:
生成后,您可以通过 databricks UI(以防您最终使用它)或通过 mlflow 代码注册您的最佳模型,如下所示(这里我注册最后一个,您应该选择具有最佳首选指标的模型,其中 mlflow 也直接为您提供选项):
以便稍后加载并使用您的模型进行预测。一旦您对某个模型感到满意,您就可以对其进行转换:
我喜欢的另一个不错的功能是它为您提供最常用框架的自定义模块,如 scikitlearn、xgboost、keras 等
并构建一个容器映像,部署它……但这是另一个更长的话题。
当然,您也可以在其他第三方甚至本地使用 MLflow。
关于性能点,您是指推理本身还是其他一些延迟来源?您可以通过 SPARK UDF(在我的情况下为 PySPARK)信息对您的模型进行推断,以防您需要尽可能快的多个预测或仅用于批量推断。