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