在 MLflow 中使用自定义 PyFunc 部署高级 LLM
注意
从 MLflow 3.0.0 开始,我们推荐使用 ResponsesAgent
而不是 ChatModel
。请参阅 ResponsesAgent 简介 以了解更多详情。
高级大型语言模型(LLM),例如 MPT-7B 指令转换器,结构复杂且其要求与传统 MLflow 风格不符。这需要更深入的理解和对自定义解决方案的需求。
注意
本教程使用 mlflow.pyfunc.PythonModel
类来创建自定义 PyFunc 模型,以构建自定义 GenAI 解决方案。建议使用更新的 mlflow.pyfunc.ChatModel
类来构建自定义实现,因为它们具有简化的开发体验和更简单的部署方法。要了解更多信息,请参阅使用 ChatModel 构建 GenAI 应用程序的指南。
提示
MLflow 2.12.2 引入了“来自代码的模型”功能,它通过脚本序列化大大简化了自定义模型的序列化和部署过程。虽然本教程作为参考点很有价值,但我们强烈建议将自定义模型实现迁移到这种新范例。您可以在来自代码的模型指南中了解更多关于来自代码模型的信息。
本教程内容概要
本指南旨在提供有关使用 MLflow 部署高级 LLM 的见解,重点是使用自定义 PyFunc 来解决挑战
- LLM 的世界:LLM 简介,特别是像 MPT-7B 指令转换器这样的模型。我们将深入探讨它们的复杂性、重要性以及与部署相关的挑战。
- 为什么 LLM 部署需要自定义 PyFunc?:我们将探讨在 LLM 背景下需要自定义 PyFunc 的原因。它们如何提供一座桥梁,确保 LLM 可以无缝部署,同时遵守 MLflow 的标准?
- 管理复杂行为:自定义 PyFunc 如何帮助处理 MLflow 默认风格无法满足的复杂模型行为和依赖项。
- 接口数据操作:深入探讨自定义 PyFunc 如何允许操作接口数据以生成提示,从而简化 RESTful 环境中的最终用户交互。
- 为 LLM 部署设计自定义 PyFunc:关于如何使用自定义 PyFunc 定义、管理和部署 LLM 的分步演练。我们将了解如何设计一个 pyfunc 来满足 LLM 的要求和行为,然后如何使用 MLflow 部署它。
- 传统 LLM 部署的挑战:识别尝试使用 MLflow 内置功能部署高级 LLM 时的问题和限制。了解为什么在这种情况下自定义 PyFunc 变得必不可少。
通过本指南的结束,您将深入了解如何在 MLflow 中使用自定义 PyFunc 部署高级 LLM。您将体会到自定义 PyFunc 在简化和高效复杂部署中的作用。