MLflow 跟踪 - 生成 AI 可观测性

MLflow 跟踪是一项功能强大的功能,可为第一代 AI 应用程序(包括基于代理的复杂系统)提供 端到端可观测性 。 它记录输入、输出、中间步骤和元数据,让你全面了解应用的行为方式。

跟踪功能可以让您:

  • 调试和了解应用程序
  • 监视性能和优化成本
  • 评估和增强应用程序质量
  • 确保可审核性和合规性
  • 将追踪功能与许多常用的第三方框架集成

追踪网关视频

你想要开始追踪吗?

请参阅快速入门,亲自动手体验:

本地 IDE:跟踪快速入门 Databricks Notebook:跟踪入门指南

只需几行代码,即可轻松启动 MLflow 追踪功能。 mlflow.openai.autolog() 自动跟踪应用程序中的每个 OpenAI 调用 - 不需要其他代码更改:

import mlflow
import openai
import os # Added for environment variable configuration

# Configure Databricks Authentication (if running outside Databricks)
# If running in a Databricks notebook, these are not needed.
# os.environ["DATABRICKS_HOST"] = "https://your-workspace.databricks.com"
# os.environ["DATABRICKS_TOKEN"] = "your-databricks-token"

# Configure OpenAI API Key (replace with your actual key)
# os.environ["OPENAI_API_KEY"] = "your-api-key-here"

# Enable automatic tracing for OpenAI - that's it!
mlflow.openai.autolog()

# Set up MLflow tracking
mlflow.set_tracking_uri("databricks")
mlflow.set_experiment("/Shared/my-genai-app")

# Your existing OpenAI code works without any changes
client = openai.OpenAI()
response = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[{"role": "user", "content": "Explain MLflow Tracing"}],
    max_tokens=100
)

# Traces are automatically captured and logged to MLflow!

小窍门

如果在 Databricks 笔记本中运行,mlflow.set_tracking_uri("databricks")mlflow.set_experiment() 的调用不是必需的——系统会自动为您配置 MLflow。

调试和了解应用程序

MLflow 跟踪提供对应用程序行为的深入见解,从而跨不同环境提供完整的调试体验。 通过捕获 完整的请求响应周期(输入/输出跟踪) 和执行 ,可以可视化和了解应用程序的逻辑和决策过程。

检查 每个中间步骤的输入、输出和元数据 (例如检索、工具调用、LLM 交互)以及关联的 用户反馈质量评估 结果,可以:

  • 在开发中:深入了解 GenAI 库抽象下发生的情况,帮助准确确定问题或意外行为发生的位置。
  • 在生产中:实时监视和调试问题。 跟踪捕获错误,并可能包括操作指标,例如每个步骤的延迟,这有助于进行快速诊断。

MLflow 跟踪提供开发和生产之间的统一体验:您可以对应用程序进行一次监控配置,跟踪将在这两个环境中一致工作。 这样就可以在您首选的环境中无缝浏览代码跟踪(无论是在 IDE、笔记本,还是生产监控仪表板),消除了在多个工具之间切换或在繁杂的日志中搜索的麻烦。

跟踪错误屏幕截图

监视性能和优化成本

了解和优化 GenAI 应用程序的性能和成本至关重要。 通过 MLflow 跟踪,可以在应用程序执行的每个步骤中捕获和监视关键作指标 ,例如延迟、成本(例如令牌使用情况)和资源利用率

这允许你:

  • 跟踪和识别复杂管道中的性能瓶颈。
  • 监视资源利用率,确保高效作。
  • 通过了解资源或令牌的使用位置来优化成本效益。
  • 确定代码或模型交互中性能改进的领域。

此外,MLflow 跟踪与 OpenTelemetry 兼容,这是行业标准可观测性规范。 通过此兼容性,可以将跟踪数据导出到现有可观测性堆栈中的各种服务。 有关更多详细信息 ,请参阅“将跟踪导出到其他服务 ”。

评估和增强应用程序质量

系统地评估和提高 GenAI 应用程序的质量是一个核心挑战。 MLflow 跟踪帮助您将用户反馈和质量评估的结果(来自 LLM 评委或自定义指标)直接附加并跟踪到您的跟踪记录。

这样就可以在整个应用程序的生命周期内进行全面的质量评估:

  • 在开发过程中:使用人工审阅者或 LLM 评委评估跟踪,以便:
    • 衡量准确性、相关性和其他质量方面。
    • 在反复调整提示、模型或检索策略的过程中跟踪质量改进。
    • 确定质量问题中的模式(例如导致响应不佳的特定查询类型)。
    • 对应用程序进行数据驱动的改进。
  • 在生产中:通过以下方法实时监视和评估质量:
    • 跨部署跟踪质量指标(派生自用户反馈和评估结果)。
    • 识别突然的质量下降或倒退。
    • 触发严重质量问题的警报。
    • 帮助维护服务质量协议(SLA)。

可以探索评估过程和生产监测中的追踪,以确定质量问题的根源,例如,RAG 系统中文档检索不足或某个特定模型的性能退化。 追踪信息使你能够详细分析这些问题并快速迭代。

此外,跟踪对于 生成高质量评估数据集非常有用。 通过捕获实际用户交互及其结果,可以:

  • 根据实际使用模式策展代表性测试用例。
  • 构建涵盖各种方案的综合评估集。
  • 使用此数据微调模型或改进检索机制。

MLflow LLM 评估相结合时,MLflow 提供了一种无缝体验,用于评估和提高应用程序的质量。

跟踪评估

确保可审核性和合规性

使用 MLflow 跟踪可以捕获应用程序的每次执行,并创建详细的审核线索,了解每个输出的生成方式。 这对于在 GenAI 应用程序中保持透明度、问责和合规性至关重要。

通过完全了解执行流(包括使用的所有输入、输出、中间步骤和参数),可以:

  • 跟踪并验证所有输出的源。
  • 提供符合性要求的证据。
  • 为特定请求启用对应用程序行为的全面即席分析。
  • 通过检查过去的踪迹来调试历史故障。

此全面的日志记录可确保你拥有必要的内部审核或外部法规需求记录。

跟踪参数

广泛的框架支持和扩展性

MLflow 追踪旨在与现有的 GenAI 开发工作流相适应,并尽量减少阻力。 它即插即用地与20 多个常用的 GenAI 库和框架集成,包括 OpenAI、LangChain、LlamaIndex、DSPy、Anthropic 等。 对于其中许多,可以使用单行代码(例如, mlflow.openai.autolog())启用跟踪。

有关支持库的完整列表以及如何使用它们,请参阅 “自动跟踪 ”部分和 “集成”页

这种广泛的支持意味着你可以利用你已使用的工具,在没有重大代码更改的情况下获得可观测性。 对于自定义组件或不支持的库,MLflow 还提供功能强大的 手动跟踪 API

MLflow 版本控制建议

虽然跟踪功能在 MLflow 2.15.0+ 中可用,但强烈建议安装 MLflow 3(特别是 3.1 或更高版本(如果使用 mlflow[databricks])来获取最新一代 AI 功能。

对于只需要跟踪的生产环境,请考虑该 mlflow-tracing 包。 若要使用 Databricks 进行开发和试验,请使用 mlflow[databricks]>=3.1

后续步骤

继续您的旅程,并参考这些推荐的行动和教程。

参考指南

浏览本指南中提到的概念和功能的详细文档。