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

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

小技巧

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

本教程包含什么内容?

本指南旨在带你深入了解 PyFuncs 的复杂性,解释其原因、内容和方法:

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

  • 自定义 PyFuncs 解密: 究竟什么是自定义 PyFunc?它与命名风格有何不同,以及何时你会想要使用一个?我们将涵盖:

    • 预处理/后处理:将预处理或后处理步骤集成到模型的预测管道中。

    • 不支持的库:也许你正在使用一个利基市场或新发布的ML库,而MLflow尚未支持。不用担心,自定义的PyFuncs可以解决这个问题。

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

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

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

  • 覆盖默认推理方法:有时,默认设置并非你所需要的。我们将展示如何覆盖模型的推理方法,例如,使用 predict_proba 而不是 predict

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