宣布推出 MLflow 3
MLflow 开源社区迎来了一个重要的里程碑。今天,我们发布了 MLflow 3,它为数百万开发人员信赖的机器学习运维平台带来了生产就绪的生成式AI能力。
这不仅仅是又一次功能更新。MLflow 3 从根本上扩展了开源机器学习工具的可能性,解决了生成式AI部署中可观测性和质量方面的挑战,这些挑战曾让部署感觉像是一次冒险。
为什么生成式AI会颠覆传统MLOps
传统的机器学习遵循可预测的模式。你有带真实标签的数据集、能清晰指示成功或失败的指标,以及可横向扩展的部署管道。生成式AI的颠覆性不仅在于其强大的功能,还在于它对如何衡量和确保质量及稳定性引入了根本性的改变。
考虑一个简单的问题:“你如何判断你的RAG系统是否正常工作?”在传统机器学习中,你会对照测试集检查准确性。但在生成式AI中,你面临的是
- 复杂的执行流程,涉及多次LLM调用、检索和工具交互
- 主观的输出质量,其中“正确”可能意味着几十种不同的有效响应
- 延迟和成本问题,这些问题可能决定用户体验的成败
- 调试噩梦,当多步骤推理链中的深层环节出错时
目前的解决方案?大多数团队将来自不同供应商的监控工具、评估脚本和部署管道拼凑在一起。结果是工作流程碎片化,关键信息在系统之间丢失。
生成式AI基础设施的另辟蹊径
MLflow 3 采取了一种不同的方法。我们没有再构建一个专门的生成式AI平台,而是扩展了MLflow经过实战检验的基础,以处理生成式AI的独特需求,同时保持与传统机器学习工作流的兼容性。
这意味着你可以使用相同的工具来监测一个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,还支持计算机视觉、自然语言处理(NLP)和表格数据模型的自定义指标。团队现在可以标准化不同模型类型的评估流程。
改进的部署工作流:质量门和自动化测试功能适用于任何MLflow模型,无论是scikit-learn分类器还是多模态基础模型。
立即开始
MLflow 3 现已可用,旨在与你现有的机器学习基础设施协同工作。以下是如何开始:
安装与设置
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开发更加系统化和可靠方面迈出了重要一步。但这仅仅是个开始。开源社区将继续通过新的集成、评估指标和部署模式来推动创新。
如何参与
- 贡献代码:我们欢迎各种规模的贡献,从bug修复到新集成
- 分享用例:通过记录你的MLflow实现来帮助他人学习
- 报告问题:通过报告错误和请求功能来帮助我们改进
- 加入讨论:参与技术讨论和路线图规划
AI开发的未来是统一、可观测和可靠的。MLflow 3 今天将这一未来带给了开源社区。
准备好尝试MLflow 3了吗? 浏览完整文档,了解更多可能性。
MLflow 是一个基于 Apache 2.0 许可证的开源项目,由全球机器学习社区贡献构建。