跳到主要内容

轻量级跟踪 SDK 针对生产环境进行了优化

MLflow 提供了一个名为 mlflow-tracing 的轻量级跟踪 SDK 包,其中仅包含用于 GenAI 应用程序跟踪和监控的核心功能。该包专为生产环境而设计,在这些环境中,最小化依赖项和部署大小至关重要。

为何使用轻量级 SDK?

🏎️ 更快的部署

该软件包的大小和依赖项明显小于完整的 MLflow 包,从而可以在 Docker 容器、无服务器函数和云应用程序等动态环境中实现更快的部署速度。

🔧 简化的依赖项管理

较少的依赖项意味着在跟上依赖项更新、安全补丁和上游库可能发生的重大更改方面的工作量更少。它还降低了依赖项冲突和不兼容的可能性。

📦 增强的可移植性

由于依赖项更少,MLflow Tracing 可以无缝地部署到不同的环境和平台,而无需担心兼容性问题。

🔒 降低安全风险

每个依赖项都可能引入安全漏洞。通过减少依赖项的数量,MLflow Tracing 可以最大限度地减少攻击面并降低安全漏洞的风险。

安装

使用 pip 安装轻量级 SDK

pip install mlflow-tracing
警告

请勿将完整的 mlflow 包与轻量级 mlflow-tracing SDK 一起安装,否则可能会导致版本冲突和命名空间解析问题。

快速入门

以下是一个使用轻量级 SDK 和 OpenAI 将跟踪记录到远程 MLflow 服务器上的实验的简单示例

import mlflow
import openai

# Set the tracking URI to your MLflow server
mlflow.set_tracking_uri("http://your-mlflow-server:5000")
mlflow.set_experiment("genai-production-monitoring")

# Enable auto-tracing for OpenAI
mlflow.openai.autolog()

# Use OpenAI as usual - traces will be automatically logged
client = openai.OpenAI()
response = client.chat.completions.create(
model="gpt-4o-mini", messages=[{"role": "user", "content": "What is MLflow?"}]
)

print(response.choices[0].message.content)

选择您的后端

轻量级 SDK 可与各种可观察性平台配合使用。选择您偏好的选项,并按照说明设置您的跟踪后端。

MLflow 是一个完全开源的项目,允许您在自己的基础架构中自托管 MLflow 服务器。如果您希望完全控制自己的数据并受限于使用基于云的服务,这是一个绝佳的选择。

在自托管模式下,您将负责运行跟踪服务器实例并根据您的需求进行扩展。我们强烈建议在高性能数据库之上使用基于 SQL 的跟踪服务器,以最大限度地减少运营开销并确保高可用性。

设置步骤

  1. 安装 MLflow 服务器:pip install mlflow[extras]
  2. 配置后端存储(推荐使用 PostgreSQL/MySQL)
  3. 配置工件存储(S3、Azure Blob、GCS 等)
  4. 启动服务器:mlflow server --backend-store-uri postgresql://... --default-artifact-root s3://...

有关详细指南,请参阅跟踪服务器设置指南

OSS Tracing

支持的功能

轻量级 SDK 包含监控 GenAI 应用程序的所有核心跟踪功能。单击下方的卡片以了解有关每项支持功能的更多信息。

生产配置示例

以下是为生产用途设置轻量级 SDK 的完整示例

import mlflow
import os
from your_app import process_user_request

# Configure MLflow for production
mlflow.set_tracking_uri(os.getenv("MLFLOW_TRACKING_URI", "http://mlflow-server:5000"))
mlflow.set_experiment(os.getenv("MLFLOW_EXPERIMENT_NAME", "production-genai-app"))

# Enable automatic tracing for your LLM library
mlflow.openai.autolog() # or mlflow.langchain.autolog(), etc.


@mlflow.trace
def handle_user_request(user_id: str, session_id: str, message: str):
"""Production endpoint with comprehensive tracing."""

# Add production context to trace
mlflow.update_current_trace(
tags={
"user_id": user_id,
"session_id": session_id,
"environment": "production",
"service_version": os.getenv("SERVICE_VERSION", "1.0.0"),
}
)

try:
# Your application logic here
response = process_user_request(message)

# Log success metrics
mlflow.update_current_trace(
tags={"response_length": len(response), "processing_successful": True}
)

return response

except Exception as e:
# Log error information
mlflow.update_current_trace(
tags={
"error": True,
"error_type": type(e).__name__,
"error_message": str(e),
},
)
raise

不包含的功能

轻量级包中不提供以下 MLflow 功能

  • MLflow 跟踪服务器和 UI - 使用完整的 MLflow 包运行服务器
  • 运行管理 API - mlflow.start_run()mlflow.log_metric() 等。
  • 模型日志记录和评估 - 模型序列化和评估框架
  • 模型注册表 - 模型版本控制和生命周期管理
  • MLflow Projects - 可重现的 ML 项目格式
  • MLflow Recipes - 预定义的 ML 工作流
  • 其他 MLflow 组件 - 与跟踪无关的功能

对于这些功能,请使用完整的 MLflow 包:pip install mlflow

从完整 MLflow 迁移

如果您目前正在使用完整的 MLflow 包并希望切换到轻量级 SDK 进行生产

1. 更新依赖项

# Remove full MLflow
pip uninstall mlflow

# Install lightweight SDK
pip install mlflow-tracing

2. 更新导入语句

大多数跟踪功能保持不变

# These imports work the same way
import mlflow
import mlflow.openai
from mlflow.tracing import trace

# These features are NOT available in mlflow-tracing:
# import mlflow.sklearn # ❌ Model logging
# mlflow.start_run() # ❌ Run management
# mlflow.log_metric() # ❌ Metric logging

3. 更新配置

专注于与跟踪相关的配置

# Configure tracking URI (same as before)
mlflow.set_tracking_uri("http://your-server:5000")
mlflow.set_experiment("your-experiment")


# Tracing works the same way
@mlflow.trace
def your_function():
# Your code here
pass

软件包大小比较

软件包大小依赖项用例
mlflow~1000MB20+ 个软件包开发、实验、完整的 ML 生命周期
mlflow-tracing~5MB5-8 个软件包生产跟踪、监控、可观察性

轻量级 SDK 比完整的 MLflow 包小 95%,使其成为以下场景的理想选择:

  • 容器部署
  • 无服务器函数
  • 边缘计算
  • 生产微服务
  • CI/CD 管道

总结

MLflow Tracing SDK 提供了一个针对生产环境优化的解决方案,用于监控 GenAI 应用程序,具有

  • 最小化占用空间,实现快速部署
  • 完整跟踪功能,实现全面的监控
  • 灵活的后端选项,从自托管到企业平台
  • 易于从完整 MLflow 包迁移
  • 生产就绪功能,包括异步日志记录和错误处理

无论您是运行小型原型还是大规模生产系统,轻量级 SDK 都能提供您所需的可观察性,而不会产生您不需要的开销。