5分钟上手Arize Phoenix:如何做模型推理分析与可视化
【免费下载链接】phoenixAI Observability & Evaluation项目地址: https://gitcode.com/gh_mirrors/phoenix13/phoenix
Arize Phoenix 是一款开源的 LLM 可观测性工具,它的模型可视化能力能把 LLM、CV、表格模型的推理结果变成一张交互式点云。打开页面,你就能看到模型哪里在变差、是哪些样本出了问题。不用自己搭仪表盘,也不用先写 SQL。
模型上线后,你会遇到的3种真实情况
- 线上数据分布逐渐偏离训练数据,指标看着没变,但找不到原因,这就是模型漂移
- 一批低性能样本在嵌入空间里聚成一团,平均指标暴露不了问题
- 检索场景里某些查询取回了错误文档,召回率怎么调都不涨
快速上手:装、读、开,三步走
一条命令装依赖 📦
先装带 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" ) train_df.head()告诉 Phoenix 每列怎么读
数据列都读进来了,但它不知道哪列是时间戳、哪列是预测、哪列是真实标签,用 px.Schema 显式告诉它。
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": px.EmbeddingColumnNames( vector_column_name="image_vector", link_to_data_column_name="url", ), }, )| 字段 | 作用 |
|---|---|
| timestamp_column_name | 时间戳列,做时序分析用 |
| prediction_label_column_name | 模型预测的标签列 |
| actual_label_column_name | 真实标签列 |
| embedding_feature_column_names | 嵌入特征:向量列与原始数据链接列(本例是图片 url) |
看懂可视化界面:UMAP 投影视图里看什么 🧭
把 DataFrame 和 Schema 包在一起,一行代码就能启动。📊
train_ds = px.Inferences(dataframe=train_df, schema=train_schema, name="training") session = px.launch_app(primary=train_ds)页面打开后先看 UMAP 视图:每个点就是一次推理结果。二维平面上靠得近的样本,在高维嵌入空间里本来就相近。聚成一团的点,往往是一类样本,模型对附近样本的判断通常也接近。
界面分成图表、表格等多个子视图,可以随意筛选和切换。
着色维度怎么选
着色维度决定了你在页面上能看到什么:
- 按数据集名着色,看训练和生产怎么混合
- 按对错着色,看错例集中在哪
- 按时间着色,看分布是否在漂移
用套索工具圈聚类 🎯
看到可疑区域,用套索工具把那一圈聚起来,能看到圈内的原始样本、标签和时间分布。定位问题的第一步,永远是先圈再查。
一行代码打开训练 vs 生产对比视图 🔗
生产数据通常没有真实标签,Schema 只留时间戳、预测和嵌入:
prod_df = pd.read_parquet( "http://storage.googleapis.com/arize-assets/phoenix/datasets/unstructured/cv/human-actions/human_actions_training.parquet" ) prod_schema = px.Schema( timestamp_column_name="prediction_ts", prediction_label_column_name="predicted_action", embedding_feature_column_names={ "image_embedding": px.EmbeddingColumnNames( vector_column_name="image_vector", link_to_data_column_name="url", ), }, )然后把训练数据作 reference、生产数据作 primary:
prod_ds = px.Inferences(dataframe=prod_df, schema=prod_schema, name="production") session = px.launch_app(primary=prod_ds, reference=train_ds)primary 是主分析对象,reference 是基准。两套数据的点投到同一个 UMAP 平面后,看两组点的相对位置:生产点整体离开训练簇,就是模型漂移的信号;有生产点落在训练分布之外,那是“未见区域”,模型在那里表现最不可靠。
从洞察到行动:导出、再训练还是升级
圈出问题聚类后,直接把这一组样本导出来:带嵌入向量、原始数据链接、标签和时间戳。导出的是普通表格文件,可以直接喂给下游训练流程。怎么用,看情况:
- 漂移小、样本量不大:直接并入训练集再训练
- 漂移是系统性的:用新收集的线上数据做微调
- 数据连续且量大:本地分析不够用,该接 Arize 平台了 🚀
Arize 平台在 Phoenix 之上多了四类能力:
- 实时推理监控
- 大规模数据处理
- 监控告警
- 企业级权限管理
数据与接口和 Phoenix 无缝集成,不用重新埋点。项目里 docs/phoenix/ 还有更多用法示例与集成文档。
下次指标掉了,你能不能回答“掉在哪类样本上”,而不只是“掉了”?
【免费下载链接】phoenixAI Observability & Evaluation项目地址: https://gitcode.com/gh_mirrors/phoenix13/phoenix
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考