宣布推出 MLflow 3
开源MLflow社区已达到一个重要的里程碑。今天,我们发布了MLflow 3,它为数百万开发者信赖的ML操作平台带来了生产级的生成式AI功能。
这不仅仅是又一次功能更新。MLflow 3 从根本上扩展了开源机器学习工具的可能性,解决了生成式AI部署中可观测性和质量方面的挑战,这些挑战曾让部署感觉像是一次冒险。
为什么GenAI会打破传统的MLOps
传统的机器学习遵循可预测的模式。您拥有带有真实标签的数据集、清楚地表明成功或失败的指标以及水平扩展的部署管道。GenAI不仅因其强大的功能而具有颠覆性,还因为它在衡量和确保质量与稳定性方面引入了根本性的变化。
考虑一个简单的问题:“您如何知道您的RAG系统是否正常工作?”在传统ML中,您会根据测试集检查准确性。在GenAI中,您正在处理
- 复杂的执行流程,包括多个LLM调用、检索和工具交互
- 主观的输出质量,其中“正确”可能意味着数十种不同的有效响应
- 延迟和成本问题,这些问题可能会影响用户体验
- 调试的噩梦,当多步推理链中出现问题时
目前的解决方案?大多数团队从不同的供应商那里拼凑监控工具、评估脚本和部署管道。结果是工作流程碎片化,关键信息在系统之间丢失。
GenAI基础设施的另一种方法
MLflow 3采用了一种不同的方法。我们没有构建另一个专门的GenAI平台,而是扩展了MLflow久经考验的基础,以处理生成式AI的独特需求,同时保持与传统ML工作流程的兼容性。
这意味着您可以使用相同的工具来检测Transformer训练管道和多代理RAG系统,通过相同的注册表部署它们,并使用统一的可观测性基础设施来监控它们。
通过MLflow Tracing实现深度可观测性
MLflow 3的核心是覆盖整个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跟踪会捕获
- 用于查询处理的初始LLM调用
- 带有嵌入式计算的向量数据库检索
- 文档排名和选择逻辑
- 最终答案生成和令牌使用情况
- 所有中间输入、输出和计时信息
- 详细而全面的错误消息,包括堆栈跟踪(如果发生任何错误)
这创建了一个完整的执行时间线,您可以在出现问题时深入研究。再也不用猜测为什么您的RAG系统返回了不相关的文档,或者为什么响应时间会飙升。
系统化的质量评估
评估GenAI质量传统上意味着不可扩展的手动审查过程。MLflow 3包含一个全面的评估框架,可以系统地评估质量维度。
评估工具支持直接评估(MLflow调用您的应用程序生成新跟踪)和答题卡评估(用于预先计算的输出)。您还可以使用@scorer装饰器为特定领域的需求构建自定义评分器,以完全自定义您的评估需求。
应用程序生命周期管理
GenAI应用程序不仅仅是模型——它们是复杂的系统,包括提示、检索逻辑、工具集成和编排代码。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版本时,您部署的是与您测试过的模型权重、提示、检索逻辑和依赖项完全相同的组合。不再有“在开发环境中有效”的部署意外。
增强的传统ML和深度学习
虽然GenAI功能是主要亮点,但MLflow 3为传统的机器学习和深度学习工作流程带来了重大改进
增强的模型注册表:处理GenAI应用程序的相同版本控制和部署基础设施现在为所有模型类型提供了更好的 lineage 跟踪。深度学习从业者受益于改进的检查点管理和实验组织。
统一评估框架:评估系统扩展到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开发更加系统化和可靠的重大一步。但这仅仅是开始。开源社区继续通过新的集成、评估指标和部署模式推动创新。
如何参与
- 贡献代码:我们欢迎各种规模的贡献,从错误修复到新集成
- 分享用例:通过记录您的MLflow实现来帮助他人学习
- 报告问题:通过报告错误和请求功能来帮助我们改进
- 参与讨论:参与技术讨论和路线图规划
AI开发的未来是统一、可观测和可靠的。MLflow 3今天就将这个未来带给了开源社区。
准备好尝试MLflow 3了吗?探索完整文档,了解可能实现的功能。
MLflow是一个Apache 2.0许可下的开源项目,由全球ML社区的贡献构建。
