使用 MLflow 跟踪集成您的应用程序
不熟悉 MLflow 跟踪?请查看快速入门指南以开始使用。
本页提供了将 GenAI 应用程序与 MLflow 跟踪集成的综合指南。
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 Personal Access Token。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 Protocol (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 时,请确保使用 **SQL 后端** 以及像 PostgreSQL 这样可扩展的数据库。默认的文件系统后端存在可扩展性限制,不推荐用于生产环境。
异步应用程序
异步编程是提高应用程序吞吐量的有效工具,特别是对于通常受 I/O 限制的基于 LLM 的应用程序。MLflow Tracing 原生 支持集成异步应用程序。
多线程应用程序
多线程是并行化应用程序中 I/O 密集型操作的常用策略。MLflow Tracing 支持使用上下文传播的 多线程应用程序。
管理用户会话
许多基于 LLM 的应用程序被部署为基于聊天的应用程序,其中每个用户会话都是一个独立的线程。按用户会话对跟踪进行分组是一种常见做法。MLflow Tracing 支持 管理用户会话。
PII 数据脱敏
跟踪可能包含敏感数据,例如原始用户输入、内部文档内容等。MLflow Tracing 支持使用灵活的屏蔽规则、自定义函数以及与外部 PII 屏蔽库的集成来 屏蔽 PII 数据。
收集用户反馈
用户反馈是改进应用程序用户体验的宝贵信息来源。MLflow Tracing 支持 收集用户对跟踪的反馈,以有效跟踪和分析反馈。