跳到主要内容

宣布推出 MLflow 3

·阅读时长 6 分钟
MLflow maintainers
MLflow 维护者

MLflow 开源社区已达成一项重要里程碑。今天,我们发布了 MLflow 3,它为数百万开发者信赖的 ML 运维平台带来了生产就绪的生成式 AI 能力。

这不仅仅是又一次功能更新。MLflow 3 从根本上扩展了开源机器学习工具的可能性,解决了生成式AI部署中可观测性和质量方面的挑战,这些挑战曾让部署感觉像是一次冒险。

为何生成式 AI 打破传统 MLOps

传统机器学习遵循可预测的模式。您拥有带有真实标签的数据集、清晰指示成功或失败的指标以及可水平扩展的部署管道。生成式 AI 不仅因其强大的功能而具有颠覆性,而且还引入了衡量和确保质量和稳定性的基础性变革。

考虑一个简单的问题:“您如何知道您的 RAG 系统是否正常运行?” 在传统 ML 中,您会通过测试集检查准确性。在生成式 AI 中,您正在处理

  • 复杂的执行流,涉及多个大型语言模型(LLM)调用、检索和工具交互
  • 主观的输出质量,其中“正确”可能意味着几十种不同的有效响应
  • 延迟和成本问题,这些问题可能决定用户体验的成败
  • 当多步推理链深处出现问题时的调试噩梦

当前的解决方案?大多数团队从不同的供应商那里拼凑监控工具、评估脚本和部署管道。结果是工作流程支离破碎,关键信息在系统之间丢失。

生成式 AI 基础设施的不同方法

MLflow 3 采用了一种不同的方法。我们没有构建另一个专门的生成式 AI 平台,而是扩展了 MLflow 经过实战检验的基础,以处理生成式 AI 的独特要求,同时保持与传统 ML 工作流的兼容性。

这意味着您可以使用相同的工具来检测 Transformer 训练管道和多代理 RAG 系统,通过相同的注册表部署它们,并使用统一的可观测性基础设施来监控它们。

MLflow 追踪带来的深度可观测性

MLflow 3 的核心是全面的追踪,它适用于整个生成式 AI 生态系统。与捕获基本输入和输出的日志框架不同,MLflow 追踪提供了复杂执行流的分层可见性。

import mlflow
from langchain.chains import RetrievalQA
from langchain_community.vectorstores import Chroma

# Instrument your entire application with one line
mlflow.langchain.autolog()

@mlflow.trace(name="customer_support")
def answer_question(question, customer_tier="standard"):
vectorstore = Chroma.from_documents(documents, embeddings)
qa_chain = RetrievalQA.from_chain_type(
llm=ChatOpenAI(temperature=0),
retriever=vectorstore.as_retriever(search_kwargs={"k": 3}),
return_source_documents=True
)

# Tracing captures the full execution tree automatically
result = qa_chain({"query": question})

# Add business context to traces
mlflow.update_current_trace(
tags={
"customer_tier": customer_tier,
"question_category": classify_question(question)
}
)

return result["result"]

使其功能强大的是自动检测。当 answer_question() 执行时,MLflow 追踪会捕获:

  • 用于查询处理的初始 LLM 调用
  • 带有嵌入计算的向量数据库检索
  • 文档排序和选择逻辑
  • 最终答案生成及 token 使用情况
  • 所有中间输入、输出和时间信息
  • 如果发生任何错误,提供详细而全面的错误消息,包括堆栈跟踪

这创建了一个完整的执行时间线,您可以在出现问题时深入探究。不再需要猜测您的 RAG 系统为什么返回不相关的文档或为什么响应时间飙升。

系统化质量评估

传统上,评估生成式 AI 质量意味着无法扩展的手动审查过程。MLflow 3 包含一个全面的评估框架,可以系统地评估质量维度。

评估工具支持直接评估(MLflow 调用您的应用程序生成新的跟踪)和答题纸评估(用于预计算的输出)。您还可以使用 @scorer 装饰器为特定领域的需求构建自定义评分器,以完全自定义您的评估需求。

应用程序生命周期管理

生成式 AI 应用程序不仅仅是模型——它们是涉及提示、检索逻辑、工具集成和编排代码的复杂系统。MLflow 3 将这些应用程序视为可原子版本化、注册和部署的一等工件。

import mlflow.pyfunc

class CustomerServiceBot(mlflow.pyfunc.PythonModel):
def load_context(self, context):
# Load all components of your GenAI application
self.llm = load_model_from_artifacts(context.artifacts["llm_config"])
self.vector_store = initialize_vector_store(context.artifacts["knowledge_base"])
self.prompt_template = load_prompt_template(context.artifacts["prompt_template"])

def predict(self, context, model_input):
# Your application logic
query = model_input["query"][0]
relevant_docs = self.vector_store.similarity_search(query, k=3)

formatted_prompt = self.prompt_template.format(
query=query,
context="\n".join([doc.page_content for doc in relevant_docs])
)

response = self.llm.predict(formatted_prompt)
return {"response": response, "sources": [doc.metadata for doc in relevant_docs]}

# Package and version the complete application
with mlflow.start_run():
model_info = mlflow.pyfunc.log_model(
artifact_path="customer_service_bot",
python_model=CustomerServiceBot(),
artifacts={
"llm_config": "configs/llm_config.yaml",
"knowledge_base": "data/knowledge_embeddings.pkl",
"prompt_template": "prompts/customer_service_v2.txt"
},
pip_requirements=["openai", "langchain", "chromadb"],
signature=mlflow.models.infer_signature(example_input, example_output)
)

# Register in model registry for deployment
registered_model = mlflow.register_model(
model_uri=model_info.model_uri,
name="customer_service_bot",
tags={"version": "v2.1", "eval_score": "0.87"}
)

这种方法确保当您部署客户服务机器人的 2.1 版本时,您部署的正是您测试过的模型权重、提示、检索逻辑和依赖项的完全相同的组合。不再有“在开发环境中可以运行”的部署意外。

增强型传统机器学习与深度学习

尽管生成式 AI 能力是主要亮点,但 MLflow 3 对传统机器学习和深度学习工作流进行了重大改进

增强型模型注册表:处理生成式 AI 应用程序的相同版本控制和部署基础设施现在为所有模型类型提供更好的谱系跟踪。深度学习从业者受益于改进的检查点管理和实验组织。

统一评估框架:评估系统超越了生成式 AI,支持计算机视觉、自然语言处理和表格数据模型的自定义指标。团队现在可以标准化不同模型类型的评估过程。

改进的部署工作流:质量门和自动化测试功能适用于任何 MLflow 模型,无论是 scikit-learn 分类器还是多模态基础模型。

立即开始

MLflow 3 现已推出,旨在与您现有的 ML 基础设施协同工作。以下是入门方法

安装与设置

pip install -U mlflow

第一步

import mlflow

# Create your first GenAI experiment
mlflow.set_experiment("my_genai_prototype")

# Enable automatic tracing for openai (choose any tracing integration to enable auto-tracing for any of the 20+ supported tracing integrations)
mlflow.openai.autolog()

# Your existing GenAI code will now generate traces automatically
# No additional instrumentation required for supported libraries

未来的发展

MLflow 3 代表着在使生成式 AI 开发更系统化和可靠方面迈出了重要一步。但这仅仅是个开始。开源社区将继续通过新的集成、评估指标和部署模式来推动创新。

如何参与

  • 贡献代码:我们欢迎各种规模的贡献,从错误修复到新集成
  • 分享用例:通过记录您的 MLflow 实现来帮助他人学习
  • 报告问题:通过报告错误和请求功能来帮助我们改进
  • 加入讨论:参与技术讨论和路线图规划

人工智能开发的未来是统一的、可观测的、可靠的。MLflow 3 今天将这一未来带给了开源社区。


准备好尝试 MLflow 3 了吗? 探索完整文档,了解其功能。

MLflow 是一个基于 Apache 2.0 许可证的开源项目,由全球 ML 社区的贡献构建。