Arize Phoenix 实操:4 步定位你的模型到底在哪漂移了
【免费下载链接】phoenixAI Observability & Evaluation项目地址: https://gitcode.com/gh_mirrors/phoenix13/phoenix
模型上线后总有这种时刻:整体准确率掉了几个点,但你说不出是哪一类样本在拖后腿。翻推理日志逐条看?记录动辄上万条,没人看得过来。Arize Phoenix 的模型推理分析就是为此设计的:它用 UMAP 投影把上万条推理结果压进一张可交互的二维散点图,漂移和低性能聚类一眼就能看见。不管是传统 CV 模型,还是 LLM 应用的检索输出,只要推理结果能落成一张带嵌入向量的表,这套流程都适用。你需要准备的只有两样:一张推理记录表(嵌入向量、预测标签、真实标签、时间戳)和一个 Python 环境。本文以计算机视觉的动作识别数据集为例走一遍完整流程。
装包、读数据,一气呵成
分析之前,数据得先进内存。这一节从干净环境做到 DataFrame 就绪。先装主包和 embeddings 附加组件,后者是让 UMAP 投影跑起来的前提:
%pip install -Uq "arize-phoenix[embeddings]"装完后读取一份示例训练集并预览结构。这里每一行对应一条推理记录,包含图像嵌入向量、预测动作、真实动作和时间戳:
import pandas as pd import phoenix as px train_df = pd.read_parquet( "http://storage.googleapis.com/arize-assets/phoenix/datasets/unstructured/cv/human-actions/human_actions_training.parquet" ) print(train_df.head())此时终端会打印出前 5 行。确认嵌入、预测标签、真实标签、时间戳四类字段都在,就可以进入下一步。
数据建模:告诉 Phoenix 每列是什么
Phoenix 不会自己猜你的列名,得先用 Schema 把表结构描述一遍:哪列是时间戳、哪列是预测标签、哪列是真实标签、嵌入向量列和原始数据链接列如何配对,一次说清楚。
image_embedding = px.EmbeddingColumnNames( vector_column_name="image_vector", link_to_data_column_name="url" ) train_schema = px.Schema( timestamp_column_name="prediction_ts", prediction_label_column_name="predicted_action", actual_label_column_name="actual_action", embedding_feature_column_names={"image_embedding": image_embedding}, )Schema 建好后,把 DataFrame 包装成 Inferences 对象,name 参数就是后续界面上显示的标签。
train_ds = px.Inferences(dataframe=train_df, schema=train_schema, name="training")到这里,你手里有了一个 Phoenix 能理解的推理数据集,接下来把它放到屏幕上。
30 秒拉起本地可视化
对象就绪后,剩下的就是启动。一行代码拉起本地服务并自动打开浏览器:
session = px.launch_app(primary=train_ds)页面加载后,顶部是推理流量曲线,下方是记录列表,点击单条记录能进详情查看输入、输出和原始数据链接。这一步推理数据可视化的本质是把表变成图——Phoenix 是一个开源的模型可观测性工具,拉起的是本地服务,用完关掉即可。
训练集当基准,生产集做主视图
漂移分析需要两份数据并排站立。生产数据通常没有真实标签,建 Schema 时省掉 actual_label 字段即可,其余照抄训练集:读 parquet、建 Schema、包装 Inferences。两份对象都准备好后,只剩一个关键调用:
session = px.launch_app(primary=prod_ds, reference=train_ds)页面打开后,生产数据是主视图,训练数据是基准。这就是训练集 vs 生产集对比最常用的姿势:Phoenix UMAP 投影把两类数据点叠在同一个二维空间里,按数据集来源着色。如果生产数据明显"漂"出了训练数据的聚集区,你要找的漂移就在这里。
两个工作流:定位漂移,导出再训练数据
页面起来之后,分析通常沿两条线走:一条找到漂移在哪,一条把找到的问题变成再训练数据。
第一条线是定位漂移,也是标准的模型漂移检测流程。先按"数据集来源"着色,确认两份数据在空间上的分离程度;再切换到"正确率"着色,看漂移的聚类是不是恰好就是预测错的样本。圈中一个聚类后按时间戳过滤,能看出漂移从什么时候开始——是换了数据源,还是模型更新过。点进聚类里的单条记录,在详情里核对代表样本,你写出的结论会是"这一类场景失效了",而不是"准确率降了一点"。
第二条线是从聚类到再训练。套索圈选低性能聚类后直接导出选中数据,因为 Schema 里已经把向量列和原始数据链接了,导出拿到的是带原始数据、可直接用于再训练或微调的样本批次。新一轮模型上线后,再放进同一个对比视图,验证漂移聚类是否收敛回训练分布即可。如果你想把这套对比变成例行工作,Phoenix 还可以结合 Arize 平台接入线上监控,这里不展开。
下一步,把你的真实生产日志接进来,看看漂移到底集中在哪类样本上;顺便想一个问题:如果推理数据只有输入文本、没有嵌入向量,这套流程还能怎么跑?
【免费下载链接】phoenixAI Observability & Evaluation项目地址: https://gitcode.com/gh_mirrors/phoenix13/phoenix
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考