跳到主要内容

MLflow 数据模型

MLflow 的数据模型提供了一种结构化的方法来开发和管理生成式 AI (GenAI) 应用程序,通过组织您如何记录、调试和评估它们以实现质量、成本和延迟目标。这种结构化方法解决了可复现性、质量评估和迭代开发中的关键挑战。

概述

MLflow 数据模型由几个相互关联的实体组成,它们协同工作以支持您的 GenAI 应用程序开发工作流

🧪 实验 (Experiment) - 您的 GenAI 应用程序的根容器

🤖 已记录模型 (LoggedModel) - 一个包含集成跟踪功能的、表示您的 AI 模型或代理的一级实体

🔍 跟踪 (Trace) - 单个应用程序执行的输入、输出和中间步骤的日志

📊 评估 (Assessments) - 对跟踪的质量判断,分为反馈 (Feedback) 或预期 (Expectations)

🎯 评分器 (Scorers) - 产生反馈的自动化评估函数的定义

📋 评估数据集 (Evaluation Datasets) - 用于离线测试的精选输入集合(和可选的预期)

🚀 评估运行 (Evaluation Runs) - 针对评估数据集运行应用程序版本的结果,包含新的、已评分的跟踪

🏷️ 标注会话 (Labeling Sessions) - 为人工审查而组织的跟踪集合

MLflow 实验

一个 实验 (Experiment) 是每个独立应用程序或用例的顶级容器。它包含开发和生产中的所有跟踪以及数据模型中的所有其他实体。我们建议为每个应用程序创建一个单独的实验。

设置实验

import mlflow

# Create or set an experiment
mlflow.set_experiment("my-genai-app")

# Or create explicitly
experiment = mlflow.create_experiment("my-genai-app")

MLflow 已记录模型:模型管理

一个 已记录模型 (LoggedModel) 是一个一级实体,代表您在实验中的 AI 模型、代理或 GenAI 应用程序。它在整个开发生命周期中提供模型工件、执行跟踪、评估指标和元数据的统一跟踪。

已记录模型的主要功能

已记录模型作为连接以下各项的中心枢纽:

  • 模型工件和配置参数
  • 开发和生产中的执行跟踪
  • 评估指标和性能评估
  • 版本历史和部署跟踪

创建已记录模型

通过直接记录您的模型来创建已记录模型

import mlflow

# Log a model with comprehensive metadata
logged_model = mlflow.langchain.log_model(
lc_model=your_chain,
name="customer_support_agent",
params={"temperature": 0.1, "max_tokens": 2000},
model_type="agent",
input_example={"messages": "How can I help you?"},
)

print(f"Model ID: {logged_model.model_id}")

已记录模型的优势

统一跟踪:所有与模型相关的工件、跟踪和指标都组织在单个实体下,提供模型行为和性能的完整可见性。

自动跟踪链接:当使用活动模型模式时,所有执行跟踪都会自动与已记录模型关联,从而消除了手动跟踪的开销。

版本管理:已记录模型支持不同模型迭代的系统化版本控制和比较,从而实现数据驱动的模型选择。

评估集成:评估指标和结果直接链接到已记录模型,提供全面的性能评估。

MLflow 跟踪:基础

核心概念是跟踪 (Trace):您的 GenAI 应用程序的单个完整执行(例如,用户请求或 API 调用)。

如何生成跟踪

跟踪通过以下方式生成:

只需一行代码即可为 20 多个流行的 LLM SDK 启用自动跟踪

import mlflow

# Enable automatic tracing for OpenAI
mlflow.openai.autolog()

# Your existing code works unchanged
from openai import OpenAI

client = OpenAI()
response = client.chat.completions.create(
model="gpt-4", messages=[{"role": "user", "content": "Hello!"}]
)

跟踪的目的

跟踪能够实现:

  • 可观测性:深入了解应用程序性能
  • 调试:理解执行流程以解决问题
  • 质量评估:随时间评估响应质量
  • 人工审查:为专家标注提供数据

评估:质量判断

评估 (Assessments) 是附加到跟踪的定性或定量判断,用于理解和改进 GenAI 应用程序的质量。一个跟踪可以有多个评估,主要包括反馈 (Feedback) 或预期 (Expectations)。

反馈评估

反馈 (Feedback) 捕获对跟踪的评估,并包括:

  • 🏷️ 名称 (Name) - 开发者定义的类别(例如,relevance(相关性)、correctness(正确性))
  • 分数 (Score) - 评估(例如,点赞/踩,数值评分)
  • 💭 理由 (Rationale) - 分数的可选文本解释
# Log feedback programmatically
mlflow.log_feedback(
trace_id="trace-123",
name="relevance",
value=4,
rationale="Response was highly relevant to the question",
)

预期评估

预期 (Expectations) 是跟踪的真实标签(例如,expected_facts(预期事实)、expected_response(预期响应))。这些主要用于离线评估,以将应用程序输出与已知正确答案进行比较。

评分器:自动化质量测量

评分器 (Scorers) 是程序化评估跟踪质量并生成反馈的函数。它们可以是:

基于代码的启发式方法

def check_response_length(trace):
"""Custom scorer to check if response is appropriate length"""
response = trace.outputs.get("response", "")
if 50 <= len(response) <= 500:
return {"score": 1, "rationale": "Response length is appropriate"}
else:
return {"score": 0, "rationale": "Response too short or too long"}

LLM 判官

from mlflow.metrics import genai

# Use built-in LLM judge
relevance_metric = genai.relevance()

# Evaluate traces with the metric
results = mlflow.genai.evaluate(
predict_fn=your_model, data=evaluation_data, scorers=[relevance_metric]
)

评估数据集和运行

MLflow 通过评估数据集和评估运行提供系统化的离线测试。

评估数据集

一个评估数据集 (Evaluation Dataset) 是一个精选的示例输入集合,用于评估和改进应用程序性能

# Create an evaluation dataset
dataset = mlflow.data.from_dict(
{
"inputs": ["What is MLflow?", "How do I log metrics?"],
"expectations": {
"expected_outputs": ["MLflow is...", "To log metrics..."],
},
}
)

# Register the dataset
mlflow.log_input(dataset, context="evaluation")

评估运行

一个评估运行 (Evaluation Run) 存储针对评估数据集运行新应用程序版本的结果

# Run evaluation
results = mlflow.genai.evaluate(
predict_fn=your_model,
data=evaluation_dataset,
scorers=[relevance_metric, accuracy_metric],
)

评估流程:

  1. 新应用程序版本处理来自评估数据集的输入
  2. MLflow 为每个输入生成一个新的跟踪
  3. 配置的评分器用反馈标注跟踪
  4. 所有标注的跟踪都存储在评估运行中

标注会话:人工审查

标注会话 (Labeling Sessions) 组织跟踪以供人工审查,通常通过 MLflow UI 进行。领域专家可以浏览这些跟踪并附加反馈作为评估。

# Create a labeling session
session = mlflow.genai.create_labeling_session(name="quality-review-session")

完整数据模型结构

所有组件都在一个实验中运行,形成一个全面的层次结构

开始使用

开始使用 MLflow 数据模型:

  1. 🧪 为您的 GenAI 应用程序设置实验
  2. 🤖 创建或设置已记录模型以组织您的模型跟踪
  3. 🔄 为您的 LLM 库启用自动跟踪
  4. 🎯 为您的质量指标定义自定义评分器
  5. 📋 从代表性示例创建评估数据集
  6. 🚀 运行评估以比较不同版本
  7. 👥 审查跟踪并根据需要添加人工反馈
import mlflow

# 1. Set up experiment
mlflow.set_experiment("my-genai-app")

# 2. Create LoggedModel
logged_model = mlflow.langchain.log_model(
lc_model=your_model, name="my_agent", params={"temperature": 0.1}
)

# 3. Enable tracing with active model
mlflow.set_active_model(name="my_agent")
mlflow.langchain.autolog()

# 4. Your app code runs normally
# Traces are automatically captured and linked to LoggedModel

# 5. Evaluate and iterate
results = mlflow.genai.evaluate(
predict_fn=your_model, data=evaluation_data, scorers=[your_custom_scorers]
)

后续步骤

MLflow 全面的数据模型支持 GenAI 应用程序的系统化观测、调试、评估和改进,为构建高质量、可靠和可维护的 GenAI 系统奠定基础。