跳到主要内容

宣布推出 MLflow 3

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

开源 MLflow 社区已达到一个重要里程碑。今天,我们发布了 MLflow 3,它为数百万开发人员信赖的 ML Ops 平台带来了生产级的生成式 AI 功能。

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

为什么 GenAI 会打破传统 MLOps

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

考虑一个简单的问题:“您如何知道您的 RAG 系统是否正常工作?”在传统 ML 中,您会对照测试集检查准确性。在 GenAI 中,您正在处理

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

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

GenAI 基础设施的不同方法

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

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

MLflow Tracing 实现深度可观测性

MLflow 3 的核心是全面的 Tracing,它可以跨越整个 GenAI 生态系统。与捕获基本输入和输出的日志框架不同,MLflow Tracing 提供了对复杂执行流程的分层可见性。

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 Tracing 会捕获

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

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

系统化的质量评估

评估 GenAI 质量传统上意味着手动审查流程,而这些流程无法扩展。MLflow 3 包括一个全面的评估框架,可以系统地评估质量维度。

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

应用程序生命周期管理

GenAI 应用程序不仅仅是模型——它们是复杂的系统,涉及提示、检索逻辑、工具集成和编排代码。MLflow 3 将这些应用程序视为一流的 artifact,可以原子化地进行版本控制、注册和部署。

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 版本时,您部署的是与您测试时完全相同的模型权重、提示、检索逻辑和依赖项的组合。不再有“在开发环境中有效”的部署意外。

增强的传统 ML 和深度学习

虽然 GenAI 功能是头条新闻,但 MLflow 3 为传统的机器学习和深度学习工作流带来了显著的改进

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

统一的评估框架:评估系统扩展到 GenAI 之外,支持计算机视觉、NLP 和表格数据模型的自定义指标。团队现在可以跨不同模型类型标准化评估流程。

改进的部署工作流:质量门和自动化测试功能适用于任何 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 代表着使 GenAI 开发更系统化和可靠的重大进步。但这仅仅是开始。开源社区通过新的集成、评估指标和部署模式持续推动创新。

如何参与

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

AI 开发的未来是统一的、可观测的、可靠的。MLflow 3 今天就将这个未来带给了开源社区。


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

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