从零到一:在本地环境搭建Arize Phoenix模型监控平台
1. 为什么选择本地部署Phoenix当你训练了一个机器学习模型并部署到生产环境后最头疼的问题是什么对我来说就是模型在线上环境的表现和线下测试时完全不同。你可能也遇到过这种情况测试集上准确率95%的模型上线后效果却大打折扣。这时候就需要一个像Arize Phoenix这样的模型监控平台。Phoenix最大的优势在于它能实时追踪模型的表现。想象一下这就像给你的模型装了一个行车记录仪不仅能记录每次预测的结果还能分析模型在哪些情况下容易出错。我在实际项目中用过Phoenix后发现它特别适合以下几种场景大语言模型(LLM)的对话追踪和评估传统机器学习模型的性能漂移检测特征分布变化的监控模型预测结果的可视化分析本地部署的好处是显而易见的。首先你的数据不会离开内网环境这对金融、医疗等对数据安全要求高的行业特别重要。其次你可以完全自定义监控指标不受SaaS平台的限制。我最近帮一个客户在本地部署Phoenix后他们终于可以放心地监控那些包含敏感信息的模型了。2. 环境准备与依赖安装2.1 基础环境配置在开始之前我们需要准备一个干净的工作环境。我推荐使用Python 3.10或更高版本这是Phoenix官方测试最充分的版本。如果你习惯用conda管理环境可以这样操作conda create -n phoenix python3.10 conda activate phoenix对于国内用户我强烈建议先配置好pip的国内镜像源这能大幅提升后续依赖安装的速度。我在清华大学的镜像源上实测下载速度能提升5-10倍pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple2.2 获取Phoenix代码Phoenix的源代码托管在GitHub上我们可以直接克隆官方仓库git clone https://github.com/Arize-ai/phoenix.git cd phoenix如果你在内网环境工作可能会遇到GitHub访问问题。这时候可以尝试先在能访问外网的机器上下载zip包再转移到内网环境。我帮不少企业客户这样操作过虽然麻烦点但确实可行。3. Docker部署实战3.1 配置Docker环境Phoenix官方提供了docker-compose配置文件这让本地部署变得非常简单。但在启动之前有几点需要注意首先检查你的Docker版本是否支持compose v3格式docker --version docker-compose --version我在Ubuntu 22.04上测试时发现默认安装的Docker版本可能较旧建议先升级到最新版。如果遇到权限问题记得把当前用户加入docker组sudo usermod -aG docker $USER newgrp docker3.2 启动Phoenix服务一切就绪后启动服务只需要一行命令docker-compose up -d这个命令会启动两个容器一个PostgreSQL数据库和一个Phoenix主服务。第一次运行时需要下载镜像视网络情况可能需要等待几分钟。我在测试时发现如果网络不稳定可能会导致下载中断这时候可以尝试重启命令。启动完成后可以用以下命令检查服务状态docker-compose ps正常情况下你应该看到类似这样的输出NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS phoenix-db-1 postgres docker-entrypoint.s… db 5 minutes ago Up 5 minutes 0.0.0.0:5432-5432/tcp phoenix-phoenix-1 phoenix-phoenix /usr/bin/python3.11… phoenix 5 minutes ago Up 5 minutes 0.0.0.0:6006-6006/tcp, 0.0.0.0:4317-4317/tcp4. 配置与验证4.1 关键环境变量设置要让Phoenix正常工作有几个环境变量必须正确配置。特别是当你想监控大语言模型时API相关的配置尤为重要import os # 设置Phoenix监听地址和端口 os.environ[PHOENIX_HOST] 0.0.0.0 os.environ[PHOENIX_COLLECTOR_ENDPOINT] http://localhost:6006 os.environ[PHOENIX_PORT] 6006 # 如果你要监控OpenAI API调用 os.environ[OPENAI_API_KEY] 你的API密钥 os.environ[OPENAI_BASE_URL] https://api.openai.com/v1这里有个容易踩坑的地方PHOENIX_COLLECTOR_ENDPOINT必须和Phoenix服务实际监听的地址完全一致。我在测试时曾经因为这里配置了127.0.0.1而服务实际运行在0.0.0.0上导致数据无法正常上报。4.2 安装Python依赖在Jupyter notebook中工作时需要安装以下依赖包%pip install arize-phoenix arize-phoenix-evals openai openinference-instrumentation-openai opentelemetry-sdk opentelemetry-exporter-otlp国内用户可能会遇到opentelemetry相关包下载慢的问题。这时候可以临时使用豆瓣源%pip install -i https://pypi.doubanio.com/simple/ opentelemetry-sdk opentelemetry-exporter-otlp4.3 初始化追踪器这是整个配置中最关键的一步需要正确初始化OpenTelemetry追踪器from opentelemetry import trace as trace_api from opentelemetry.sdk import trace as trace_sdk from opentelemetry.sdk.trace.export import SimpleSpanProcessor from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter as HTTPSpanExporter from openinference.instrumentation.openai import OpenAIInstrumentor # 创建Phoenix的Span处理器 span_processor SimpleSpanProcessor( HTTPSpanExporter(endpointhttp://localhost:6006/v1/traces) ) # 配置追踪器 tracer_provider trace_sdk.TracerProvider() tracer_provider.add_span_processor(span_processor) trace_api.set_tracer_provider(tracer_provider) # 自动监控OpenAI API调用 OpenAIInstrumentor().instrument()这段代码做了三件事1) 设置数据上报到本地的Phoenix服务2) 配置基本的追踪器3) 启用对OpenAI API的自动监控。我在实际使用中发现如果忘记调用instrument()方法API调用就不会被记录这点要特别注意。5. 实战测试与监控5.1 发起测试请求配置完成后我们可以发起一个测试请求来验证监控是否正常工作from openai import OpenAI client OpenAI() response client.chat.completions.create( modelgpt-3.5-turbo, messages[{role: user, content: 用中文写一首关于春天的诗}], max_tokens100, ) print(response.choices[0].message.content)如果一切正常你应该能在Phoenix的Web界面看到这次API调用的详细记录。默认情况下Phoenix的Web界面运行在6006端口直接在浏览器访问http://localhost:6006即可。5.2 排查常见问题在实际部署过程中有几个常见问题需要注意端口冲突如果6006端口被占用可以在docker-compose.yml中修改端口映射。我建议把左边的端口号改成你想要的比如8080:6006。数据库权限有时候PostgreSQL容器会因为权限问题启动失败。这时候可以尝试删除旧的数据库卷重新启动docker-compose down -v docker-compose up -d网络连接如果你在内网环境使用代理需要确保Docker能正确使用代理设置。可以在~/.docker/config.json中配置代理信息。数据延迟有时候监控数据会有几秒钟的延迟显示这是正常现象。如果超过1分钟还看不到数据才需要检查配置。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2416193.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!