使用 MLflow 中的自定义 PyFuncs 部署高级 LLM
注意
从 MLflow 3.0.0 开始,我们推荐使用 ResponsesAgent 而非 ChatModel。更多详情请参阅 ResponsesAgent 简介。
像 MPT-7B instruct transformer 这样的大型语言模型 (LLM) 非常复杂,它们的需求与传统的 MLflow 风格不符。这要求更深入的理解和定制解决方案的需求。
注意
本教程利用 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 默认风格无法满足的复杂模型行为和依赖项。
- 接口数据操作:深入了解自定义 PyFuncs 如何允许操作接口数据以生成提示,从而简化 RESTful 环境中的最终用户交互。
- 为 LLM 部署定制自定义 PyFuncs:关于如何使用自定义 PyFunc 定义、管理和部署 LLM 的分步指南。我们将研究如何设计一个 *pyfunc* 以满足 LLM 的要求和行为,然后是如何使用 MLflow 进行部署。
- 传统 LLM 部署的挑战:认识到在使用 MLflow 的内置功能尝试部署高级 LLM 时存在的问题和限制。了解在这些情况下为什么自定义 PyFuncs 变得至关重要。
在本指南结束时,您将对如何使用自定义 PyFuncs 在 MLflow 中部署高级 LLM 有深入的了解。您将体会到自定义 PyFuncs 在使复杂部署流程化和高效化方面所起的作用。