Evidently UI 工作空间管理实战教程
前言
在机器学习模型监控和数据分析领域,Evidently 是一个强大的开源工具,它可以帮助数据科学家和工程师跟踪模型性能、数据质量以及数据漂移等问题。本教程将重点介绍如何使用 Evidently 的工作空间(Workspace)功能来组织和管理项目、报告和监控运行结果。
工作空间基础概念
工作空间是 Evidently 中的核心组织单元,它类似于一个容器,用于存储和管理所有相关的项目和报告。通过工作空间,用户可以:
- 创建多个项目来分类管理不同模型或数据集的监控任务
- 保存和检索历史监控报告
- 可视化分析监控指标随时间的变化趋势
- 与团队成员共享监控结果
本地工作空间操作
1. 创建工作空间
首先,我们需要初始化一个本地工作空间:
from evidently.ui.workspace import Workspace
# 创建工作空间目录
ws = Workspace.create("workspace")
这会在当前目录下创建一个名为"workspace"的文件夹,用于存储所有项目数据。
2. 项目管理
在工作空间中,我们可以创建和管理多个项目:
# 创建新项目
project = ws.create_project("我的第一个项目")
# 添加项目描述
project.description = "用于演示Evidently功能的示例项目"
ws.update_project(project)
项目创建后,我们可以进行各种操作:
# 列出所有项目
projects = ws.list_projects()
# 按名称搜索项目
found_projects = ws.search_project("我的第一个项目")
# 删除项目
ws.delete_project(project.id)
3. 使用ProjectModel创建项目
除了简单创建,还可以使用ProjectModel进行更精细的项目配置:
from evidently.ui.workspace import ProjectModel
project_model = ProjectModel(
name="高级配置项目",
description="使用ProjectModel创建的项目示例"
)
project = ws.add_project(project_model)
报告与监控运行
1. 创建报告
Evidently 报告可以包含各种指标和测试。下面创建一个简单的报告,检查某列的最小值是否大于5:
from evidently.tests import gt
from evidently import Report
from evidently.metrics import MinValue
report = Report(metrics=[MinValue(column="col", tests=[gt(5)])])
2. 运行报告并保存结果
生成一些测试数据并运行报告:
import pandas as pd
data = pd.DataFrame({"col": [6, 10, 15]})
run_result = report.run(data)
# 将运行结果保存到项目中
ws.add_run(project.id, run_result)
3. 管理运行记录
我们可以查看、检索和删除运行记录:
# 列出项目中的所有运行
runs = ws.list_runs(project.id)
# 加载特定运行
from evidently.core.report import Snapshot
snapshot = Snapshot.load_model(ws.get_run(project.id, runs[0]))
# 删除运行
ws.delete_run(project.id, runs[0])
4. 模拟时间序列监控
为了演示监控功能,我们可以生成多个时间点的运行记录:
import random
import datetime
for i in range(1, 5):
data = pd.DataFrame({"col": [i + random.randint(-2, 2) for _ in range(3)]})
run = report.run(data, timestamp=datetime.datetime.now() + datetime.timedelta(days=-2 + i))
ws.add_run(project.id, run)
使用Evidently UI服务
1. 启动UI服务
可以通过命令行启动Evidently UI服务:
evidently ui
或者在Python中直接启动:
import subprocess
process = subprocess.Popen(["evidently", "ui"], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
服务启动后,可以通过浏览器访问 http://127.0.0.1:8000 查看可视化界面。
2. 远程工作空间
如果需要连接远程Evidently服务,可以使用RemoteWorkspace:
from evidently.ui.workspace import RemoteWorkspace
remote_ws = RemoteWorkspace("http://127.0.0.1:8000")
remote_project = remote_ws.search_project("我的第一个项目")[0]
创建监控仪表板
Evidently提供了强大的可视化功能,可以创建自定义仪表板:
from evidently.sdk.models import PanelMetric
from evidently.sdk.panels import line_plot_panel
remote_project.dashboard.add_panel(
line_plot_panel(
title="最小值监控",
values=[
PanelMetric(
legend="最小值",
metric="MinValue",
metric_labels={"column": "col"},
),
],
size="full",
)
)
这个面板会显示"col"列的最小值随时间的变化趋势。
最佳实践建议
-
项目组织:为不同的模型或数据集创建单独的项目,保持监控任务的清晰分离
-
命名规范:使用一致的命名规则,便于后期搜索和管理
-
定期清理:定期归档或删除不再需要的运行记录,避免存储空间过度增长
-
描述文档:为项目添加详细的描述信息,方便团队成员理解项目用途
-
自动化监控:将Evidently集成到CI/CD流程中,实现自动化模型监控
通过本教程,您应该已经掌握了Evidently工作空间的基本使用方法。在实际应用中,可以根据项目需求灵活组合这些功能,构建适合自己团队的模型监控体系。