首页
/ Evidently UI 工作空间管理实战教程

Evidently UI 工作空间管理实战教程

2025-07-07 06:38:44作者:羿妍玫Ivan

前言

在机器学习模型监控和数据分析领域,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"列的最小值随时间的变化趋势。

最佳实践建议

  1. 项目组织:为不同的模型或数据集创建单独的项目,保持监控任务的清晰分离

  2. 命名规范:使用一致的命名规则,便于后期搜索和管理

  3. 定期清理:定期归档或删除不再需要的运行记录,避免存储空间过度增长

  4. 描述文档:为项目添加详细的描述信息,方便团队成员理解项目用途

  5. 自动化监控:将Evidently集成到CI/CD流程中,实现自动化模型监控

通过本教程,您应该已经掌握了Evidently工作空间的基本使用方法。在实际应用中,可以根据项目需求灵活组合这些功能,构建适合自己团队的模型监控体系。