使用 MLflow 构建自定义 Python 函数模型
MLflow 提供了多种预定义的模型风格,但在某些情况下,您可能希望超越这些预定义风格,并根据自己的需求定制模型。这时,自定义 PyFuncs 就派上用场了。
MLflow 2.12.2 引入了“代码模型”功能,它通过脚本序列化极大地简化了自定义模型的序列化和部署过程。虽然本教程作为参考很有价值,但我们强烈建议将自定义模型实现迁移到这个新范例。您可以在代码模型指南中了解更多关于代码模型的信息。
本教程内容概要
本指南旨在引导您深入了解 PyFuncs 的复杂性,解释其“为什么”、“是什么”以及“如何使用”。
-
命名模型风格(Flavors):在我们深入自定义领域之前,了解 MLflow 中现有的命名风格至关重要。这些预定义风格简化了模型跟踪和部署,但可能无法涵盖所有用例。
-
自定义 PyFuncs 揭秘:自定义 PyFunc 究竟是什么?它与命名风格有何不同,以及何时应该使用它?我们将涵盖以下内容:
-
前处理/后处理:将前处理或后处理步骤集成到模型的预测管道中。
-
不受支持的库:也许您正在使用 MLflow 尚未支持的小众或最新发布的机器学习库。不用担心,自定义 PyFuncs 可以满足您的需求。
-
外部引用:通过外部化引用来避免序列化问题并简化模型部署。
-
-
自定义 PyFuncs 入门:我们将从最简单的示例开始,阐明自定义 PyFunc 所需的核心组件和抽象方法。
-
处理不受支持的库:我们将提高复杂度,演示如何使用自定义 PyFuncs 将来自不受支持的库的模型集成到 MLflow 中。
-
覆盖默认推理方法:有时,默认方法可能不是您想要的。我们将向您展示如何覆盖模型的推理方法,例如,使用
predict_proba
而非predict
。
通过本教程,您将清楚地了解如何在 MLflow 中利用自定义 PyFuncs 来满足特殊需求,确保灵活性而不牺牲易用性。