跳到主要内容

使用 MLflow 跟踪集成您的应用程序

提示

不熟悉 MLflow 跟踪?请查看快速入门指南以开始使用。

本页提供了将 GenAI 应用程序与 MLflow 跟踪集成的综合指南。

1. 安装

mlflow-tracing 添加到您的 Python 环境中,以最少的依赖项启用跟踪功能。

pip install mlflow-tracing
信息

mlflow-tracing Python 包不包含其他 MLflow 功能,例如自托管跟踪服务器、评估能力、提示管理等。如果您想使用 MLflow 的全部功能,请安装完整的 MLflow 包。我们建议在生产应用程序中使用 mlflow-tracing 包,以保持最小的依赖项和包占用空间。

pip install mlflow

2. 将您的应用程序与 MLflow 连接

对于本地开发或个人使用,本地托管 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.
);

3. 集成您的应用程序逻辑

MLflow 提供了不同的方法来集成您的应用程序逻辑。请按照以下链接了解每种集成方法的更多信息,以集成您的应用程序

⚙️ 常见模式

生产考量

MLflow Tracing 已为生产环境做好准备,但为了确保跟踪系统的可扩展性和可靠性,我们建议遵循以下最佳实践

  1. 启用 异步日志记录 并设置适当的队列大小和超时。
  2. 使用轻量级的 mlflow-tracing 包,以最大程度地减小包的占用空间和依赖项。
  3. 使用 托管 MLflow 服务 以减少运营开销并确保跟踪系统的可扩展性。
  4. 使用自托管 MLflow 时,请确保使用 **SQL 后端** 以及像 PostgreSQL 这样可扩展的数据库。默认的文件系统后端存在可扩展性限制,不推荐用于生产环境。

异步应用程序

异步编程是提高应用程序吞吐量的有效工具,特别是对于通常受 I/O 限制的基于 LLM 的应用程序。MLflow Tracing 原生 支持集成异步应用程序

多线程应用程序

多线程是并行化应用程序中 I/O 密集型操作的常用策略。MLflow Tracing 支持使用上下文传播的 多线程应用程序

管理用户会话

许多基于 LLM 的应用程序被部署为基于聊天的应用程序,其中每个用户会话都是一个独立的线程。按用户会话对跟踪进行分组是一种常见做法。MLflow Tracing 支持 管理用户会话

PII 数据脱敏

跟踪可能包含敏感数据,例如原始用户输入、内部文档内容等。MLflow Tracing 支持使用灵活的屏蔽规则、自定义函数以及与外部 PII 屏蔽库的集成来 屏蔽 PII 数据

收集用户反馈

用户反馈是改进应用程序用户体验的宝贵信息来源。MLflow Tracing 支持 收集用户对跟踪的反馈,以有效跟踪和分析反馈。