使用 MLflow Tracing 检测您的应用
刚接触 MLflow Tracing?请查阅快速入门指南开始使用。
本页面为使用 MLflow Tracing 检测您的 GenAI 应用程序提供了全面的指南。
1. 安装
- Python
- JS/TS
将 mlflow-tracing
添加到您的 Python 环境中,以最少的依赖项启用追踪功能。
pip install mlflow-tracing
npm install mlflow-tracing
mlflow-tracing
Python 包不包含其他 MLflow 功能,例如自托管追踪服务器、评估功能、提示管理等。如果您想使用 MLflow 的全部功能,请安装完整的 MLflow 包。我们建议在生产应用程序中使用 mlflow-tracing
包,以保持依赖项和包的体积最小化。
pip install mlflow
2. 将您的应用程序与 MLflow 连接
- 自托管 MLflow (本地)
- 远程 MLflow
- Databricks
- OpenTelemetry
对于本地开发或个人使用,本地托管 MLflow 是一个不错的选择。虽然不建议在生产环境中使用,但这是最快的入门方式。为了记录追踪数据,我们建议使用 SQL 后端以获得更好的性能。
要启动本地 MLflow 服务器,请在您的终端中运行以下命令。或者,您可以使用官方 Docker 镜像来运行服务器。
# Replace sqlite:/// part with your preferred database URI.
mlflow server --host 127.0.0.1 --port 5000 --backend-store-uri sqlite:///mlruns.db
然后,在您的应用程序中,使用以下代码配置追踪 URI 并设置一个活动的实验
Python
import mlflow
mlflow.set_tracking_uri("http://127.0.0.1:5000")
mlflow.set_experiment("<your-experiment-name>")
JS/TS
import * as mlflow from "mlflow-tracing";
mlflow.init(
trackingUri: "http://127.0.0.1:5000",
experimentId: "<your-experiment-id>", // If no experiment is created yet, create it on UI first.
);
当您已经有一个远程 MLflow 服务器在运行时(无论是自托管还是基于云的托管 MLflow),您可以通过配置追踪 URI 将您的应用程序连接到它。
Python
import mlflow
mlflow.set_tracking_uri("https://<your-mlflow-server>:<port>")
mlflow.set_experiment("<your-experiment-name>")
JS/TS
import * as mlflow from "mlflow-tracing";
mlflow.init(
trackingUri: "https://<your-mlflow-server.com>:<port>",
experimentId: "<your-experiment-id>", // If no experiment is created yet, create it within the MLflow UI first.
);
这些步骤描述了如何使用 Databricks 个人访问令牌。MLflow 也支持其他Databricks 支持的身份验证方法。
如果您在 Databricks 上进行追踪,请使用 Databricks CLI 或以下环境变量配置您的身份验证
export DATABRICKS_HOST="https://your-workspace.databricks.com"
export DATABRICKS_TOKEN="your-databricks-token"
然后,在您的应用程序中设置追踪 URI 和目标实验,以将追踪数据存储在 MLflow 中。
Python
mlflow.set_tracking_uri("databricks")
mlflow.set_experiment("<your-experiment-name>")
JS/TS
import * as mlflow from "mlflow-tracing";
mlflow.init(
trackingUri: "databricks",
experimentId: "<your-experiment-id>",
);
MLflow 追踪与 OpenTelemetry 兼容,允许您将追踪数据导出到与 OpenTelemetry 兼容的监控后端。
安装 OpenTelemetry 协议 (OTLP) 导出器
pip install opentelemetry-exporter-otlp
然后,配置以下环境变量
export OTEL_EXPORTER_OTLP_TRACES_ENDPOINT="http://your-otel-collector.com:4317/v1/traces"
您的监控后端可能需要额外的设置才能启用追踪导出。请参阅OpenTelemetry 集成以获取其他配置和各供应商设置文档的链接。
目前,OpenTelemetry 导出仅支持 Python SDK。
3. 检测您的应用程序逻辑
MLflow 提供了不同的方法来检测您的应用程序逻辑。请点击以下链接,了解每种方法的更多信息,以检测您的应用程序

自动追踪
仅用一行代码即可检测您的应用程序。

手动追踪
用几行代码检测任何 Python 代码,具有完全的控制和灵活性。

Typescript SDK
使用 MLflow Tracing Typescript SDK 检测您的 Node.js 应用程序。
⚙️ 常见模式
生产考量
MLflow Tracing 已准备好用于生产环境,但为了确保追踪系统的可扩展性和可靠性,我们推荐以下最佳实践
- 启用异步日志记录并设置适当的队列大小和超时。
- 使用轻量级的
mlflow-tracing
包,以最小化包的体积和依赖项。 - 使用托管的 MLflow 服务以减少运维开销并确保追踪系统的可扩展性。
- 当使用自托管的 MLflow 时,请确保使用带有可扩展数据库(如 PostgreSQL)的 **SQL 后端**。默认的基于文件的后端存在可扩展性限制,不建议在生产环境中使用。
异步应用程序
异步编程是提高应用程序吞吐量的有效工具,特别是对于通常受 I/O 限制的基于 LLM 的应用程序。MLflow Tracing 原生支持检测异步应用程序。
多线程应用程序
多线程是应用程序中并行化 I/O 密集型操作的常用策略。MLflow Tracing 使用上下文传播来支持多线程应用程序。
管理用户会话
许多基于 LLM 的应用程序被部署为基于聊天的应用程序,其中每个用户会话都是一个独立的线程。按用户会话对追踪数据进行分组是一种常见做法。MLflow Tracing 支持管理用户会话。
编辑 PII 数据
追踪数据可能包含敏感数据,如原始用户输入、内部文档内容等。MLflow Tracing 支持使用灵活的掩码规则、自定义函数以及与外部 PII 掩码库集成来编辑 PII 数据。
收集用户反馈
用户反馈是改善应用程序用户体验的宝贵信息来源。MLflow Tracing 支持收集关于追踪数据的用户反馈,以有效跟踪和分析反馈。