跳到主要内容

在 MLflow 中使用自定义 PyFuncs 部署高级 LLM

注意

从 MLflow 3.0.0 开始,我们建议使用 ResponsesAgent 而不是 ChatModel。 有关更多详细信息,请参阅ResponsesAgent 介绍

高级大型语言模型 (LLM),例如 MPT-7B instruct transformer,非常复杂,并且具有与传统 MLflow Flavors 不一致的要求。 这需要更深入的理解和自定义解决方案。

注意

本教程利用 mlflow.pyfunc.PythonModel 类来创建一个自定义 PyFunc 模型,用于构建自定义 GenAI 解决方案。建议使用较新的 mlflow.pyfunc.ChatModel 类来构建自定义实现,因为它简化了开发体验并且更易于部署。 要了解更多信息,请参阅使用 ChatModel 构建 GenAI 应用程序指南

提示

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

本教程内容概要

本指南旨在深入了解如何使用 MLflow 部署高级 LLM,重点是使用自定义 PyFuncs 来应对挑战

  • LLM 世界:LLM 简介,特别是像 MPT-7B instruct transformer 这样的模型。 我们将深入研究它们的复杂性、重要性以及与其部署相关的挑战。
  • 为什么为 LLM 部署使用自定义 PyFuncs?:我们将探讨在 LLM 环境中需要自定义 PyFuncs 的原因。 它们如何提供桥梁,确保 LLM 可以无缝部署,同时遵守 MLflow 的标准?
    • 管理复杂行为:自定义 PyFuncs 如何帮助处理 MLflow 默认 Flavors 无法处理的复杂模型行为和依赖项。
    • 接口数据操作:深入了解自定义 PyFuncs 如何允许操作接口数据以生成提示,从而简化 RESTful 环境中的最终用户交互。
  • 为 LLM 部署制作自定义 PyFuncs:关于如何使用自定义 PyFunc 定义、管理和部署 LLM 的分步演练。 我们将研究如何设计一个 *pyfunc* 来解决 LLM 的需求和行为,然后如何使用 MLflow 部署它。
  • 传统 LLM 部署的挑战:识别尝试使用 MLflow 的内置功能部署高级 LLM 时的问题和限制。 了解为什么自定义 PyFuncs 在这种情况下变得至关重要。

在本指南结束时,您将深入了解如何使用自定义 PyFuncs 在 MLflow 中部署高级 LLM。 您将了解自定义 PyFuncs 在简化复杂部署和提高效率方面的作用。

探索教程