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:模型管理
LoggedModel 是一个一流实体,表示实验中的 AI 模型、代理或 GenAI 应用。它在整个开发生命周期中提供模型工件、执行追踪、评估指标和元数据统一追踪。
LoggedModel 的主要特性
LoggedModel 作为连接的中心枢纽
- 模型工件和配置参数
- 开发和生产中的执行追踪
- 评估指标和性能评估
- 版本历史和部署追踪
创建 LoggedModels
- 直接模型日志
- 活动模型模式
- 外部模型引用
通过直接记录模型创建 LoggedModel
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}")
使用活动模型模式进行自动追踪链接
# Set active model for automatic trace association
mlflow.set_active_model(name="customer_support_agent")
# Enable autologging
mlflow.langchain.autolog()
# All traces will be automatically linked to the active model
response = your_model.invoke({"messages": "Hello!"})
引用存储在 MLflow 外部的模型
# Create external model reference
external_model = mlflow.create_external_model(
name="production_model_v2",
model_type="agent",
params={"version": "2.1", "endpoint": "api.example.com"},
)
LoggedModel 的优势
统一追踪:所有与模型相关的工件、追踪和指标都组织在单个实体下,提供了模型行为和性能的完整可见性。
自动追踪链接:当使用活动模型模式时,所有执行追踪都会自动与 LoggedModel 关联,消除了手动追踪开销。
版本管理:LoggedModel 支持不同模型迭代的系统化版本控制和比较,实现数据驱动的模型选择。
评估集成:评估指标和结果直接链接到 LoggedModel,提供全面的性能评估。
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!"}]
)
使用 MLflow 追踪 API 进行细粒度控制
@mlflow.trace
def my_custom_function(input_data):
# Your custom logic here
result = process_data(input_data)
return result
追踪的目的
追踪能够实现
- 可观测性:深入了解应用程序性能
- 调试:了解执行流程以解决问题
- 质量评估:评估响应质量随时间的变化
- 人工审查:为专家标注提供数据
评估:质量判断
评估(Assessments)是附加到追踪的定性或定量判断,用于理解和提高 GenAI 应用的质量。一个追踪可以有多个评估,主要是反馈(Feedback)或预期(Expectations)。
反馈评估
反馈(Feedback)捕获对追踪的评估,包括
- 🏷️ 名称 - 开发者定义的类别(例如,
relevance
、correctness
) - ⭐ 分数 - 评估(例如,竖起/向下大拇指、数值评分)
- 💭 理由 - 分数的可选文本解释
# 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],
)
评估过程
- 新应用版本处理评估数据集中的输入
- MLflow 为每个输入生成一个新的追踪
- 配置的评分器用反馈注释追踪
- 所有带注释的追踪都存储在评估运行中
标注会话:人工审查
标注会话(Labeling Sessions)组织追踪以供人工审查,通常通过 MLflow UI 进行。领域专家可以浏览这些追踪并添加反馈作为评估。
# Create a labeling session
session = mlflow.genai.create_labeling_session(name="quality-review-session")
完整数据模型结构
所有组件都在一个实验中运行,形成一个全面的层次结构
开始使用
要开始使用 MLflow 数据模型
- 🧪 为您的 GenAI 应用设置一个实验
- 🤖 创建或设置 LoggedModel 以组织您的模型追踪
- 🔄 为您的 LLM 库启用自动追踪
- 🎯 为您的质量指标定义自定义评分器
- 📋 从代表性示例创建评估数据集
- 🚀 运行评估以比较不同版本
- 👥 审查追踪并根据需要添加人工反馈
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]
)
后续步骤
- 🤖 LoggedModel 指南:学习全面的模型生命周期管理
- 🔄 自动追踪:了解如何为您的 LLM 库启用自动追踪
- 🛠️ 自定义追踪:为您的应用程序添加手动插桩
- 📊 评估指南:深入了解评估工作流
- 🖥️ MLflow UI:在网页界面中探索追踪和结果
MLflow 全面的数据模型支持对 GenAI 应用进行系统化的观察、调试、评估和改进,为构建高质量、可靠和可维护的 GenAI 系统奠定了基础。