使用 MLflow 构建自定义 Python 函数模型
MLflow 提供了多种预定义模型类型,但在某些情况下,您可能希望超越这些类型,构建更符合自身需求的内容。这时,自定义 PyFuncs 就派上用场了。
MLflow 2.12.2 引入了“代码模型”功能,该功能通过使用脚本序列化极大地简化了自定义模型的序列化和部署过程。虽然本教程可作为参考,但我们强烈建议您将自定义模型实现迁移到此新模式。您可以在 代码模型指南 中了解更多关于代码模型的信息。
本教程内容概要
本指南旨在帮助您深入了解 PyFuncs 的细节,解释其“为什么”、“是什么”以及“如何”进行操作。
-
命名模型类型:在深入自定义领域之前,了解 MLflow 中现有的命名类型至关重要。这些预定义类型简化了模型跟踪和部署,但可能无法满足所有用例。
-
揭秘自定义 PyFuncs:自定义 PyFuncs 到底是什么?它与命名类型有何不同?您何时应该使用它?我们将涵盖
-
预/后处理:将预处理或后处理步骤集成到模型预测管道中。
-
不支持的库:您可能正在使用 MLflow 尚未支持的冷门或新发布的 ML 库。没关系,自定义 PyFuncs 可以解决这个问题。
-
外部引用:通过将引用外部化,避免序列化问题并简化模型部署。
-
-
自定义 PyFuncs 入门:我们将从最简单的示例开始,阐明自定义 PyFunc 所必需的核心组件和抽象方法。
-
处理不支持的库:提高复杂性,我们将演示如何使用自定义 PyFuncs 将不支持库中的模型集成到 MLflow 中。
-
重写默认推理方法:有时,默认方法并非您想要的。我们将向您展示如何重写模型的推理方法,例如,使用
predict_proba而非predict。
在本教程结束时,您将清晰地了解如何在 MLflow 中利用自定义 PyFuncs 来满足特定需求,从而在不牺牲易用性的前提下确保灵活性。