跳到主要内容

使用 MLflow 构建自定义 Python 函数模型

MLflow 提供了各种预定义的模型风格,但在某些情况下,您希望超越这些风格,制作适合您需求的东西。这时自定义 PyFunc 就派上用场了。

提示

MLflow 2.12.2 引入了“代码模型”功能,它通过使用脚本序列化大大简化了自定义模型的序列化和部署过程。虽然本教程作为参考点很有价值,但我们强烈建议将自定义模型实现迁移到这种新范式。您可以在代码模型指南中了解有关代码模型的更多信息。

本教程内容概要

本指南旨在引导您了解 PyFunc 的复杂性,解释其原因、内容和方法。

  • 命名模型风格:在深入自定义领域之前,了解 MLflow 中现有的命名风格至关重要。这些预定义的风格简化了模型跟踪和部署,但它们可能无法涵盖所有用例。

  • 自定义 PyFunc 揭秘:自定义 PyFunc 究竟是什么?它与命名风格有何不同,何时会使用它?我们将介绍

    • 预处理/后处理:将预处理或后处理步骤作为模型预测管道的一部分集成。

    • 不支持的库:您可能正在使用 MLflow 尚未支持的某个小众或新发布的 ML 库。别担心,自定义 PyFuncs 为您提供了解决方案。

    • 外部引用:通过外部化引用来避免序列化问题并简化模型部署。

  • 自定义 PyFunc 入门:我们将从最简单的示例开始,阐明自定义 PyFunc 的核心组件和必要的抽象方法。

  • 处理不支持的库:为了增加复杂性,我们将演示如何使用自定义 PyFuncs 将来自不受支持的库的模型集成到 MLflow 中。

  • 覆盖默认推理方法:有时,默认值不是您想要的。我们将向您展示如何覆盖模型的推理方法,例如,使用 predict_proba 而不是 predict

在本教程结束时,您将清楚地了解如何在 MLflow 中利用自定义 PyFuncs 来满足特殊需求,确保灵活性而又不影响易用性。