轻量级追踪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
- Databricks
- OpenTelemetry
- Amazon SageMaker
- Nebius
MLflow 是一个完全开源的项目,允许您在自己的基础设施中自托管 MLflow 服务器。如果您想完全控制自己的数据并且在使用基于云的服务方面受到限制,这是一个很好的选择。
在自托管模式下,您将负责运行追踪服务器实例并根据您的需求进行扩展。我们强烈建议使用基于 SQL 的追踪服务器,其建立在高性能数据库之上,以最大限度地减少操作开销并确保高可用性。
设置步骤
- 安装 MLflow 服务器:
pip install mlflow[extras]
- 配置后端存储(推荐 PostgreSQL/MySQL)
- 配置工件存储(S3、Azure Blob、GCS 等)
- 启动服务器:
mlflow server --backend-store-uri postgresql://... --default-artifact-root s3://...
有关详细指南,请参阅追踪服务器设置指南。
用于 GenAI 的 Databricks Lakehouse 监控是使用 MLflow Tracing 监控 GenAI 应用程序的首选解决方案。它提供对强大、功能齐全的监控仪表板的访问,以实现卓越运营和质量分析。
无论您的应用程序是否托管在 Databricks 上,都可以使用用于 GenAI 的 Lakehouse 监控。
MLflow Tracing 基于 OpenTelemetry 追踪规范,这是一种行业标准的可观察性框架,使其成为监控 GenAI 应用程序的供应商中立解决方案。
如果您正在使用 OpenTelemetry 作为可观察性技术栈的一部分,则无需任何额外的服务 onboarding 即可使用 MLflow Tracing。只需配置 OTLP 端点,MLflow 就会将追踪导出到您现有的可观察性平台。
设置示例
export OTEL_EXPORTER_OTLP_TRACES_ENDPOINT="http://your-collector:4317/v1/traces"
export OTEL_SERVICE_NAME="genai-app"
有关详细设置说明,请参阅OpenTelemetry 集成文档。
Amazon SageMaker 上的 MLflow 是 AWS 作为 SageMaker 平台一部分提供的完全托管服务,包括追踪和其他 MLflow 功能,例如模型注册表。
MLflow Tracing 为追踪 Amazon Bedrock 提供了一行解决方案,使其成为监控由 AWS 和 Amazon Bedrock 提供支持的 GenAI 应用程序的最佳解决方案。
支持的功能
轻量级 SDK 包含监控 GenAI 应用程序的所有基本追踪功能。点击下面的卡片了解每个受支持功能的更多信息。
MLflow Tracing SDK 支持与所有最流行的 LLM/GenAI 库(包括 OpenAI、Anthropic、LangChain、LlamaIndex、Hugging Face、DSPy 以及任何符合 OpenAI API 格式的 LLM 提供商)进行一行集成。这种自动追踪功能使您能够以最少的精力监控您的 GenAI 应用程序,并轻松在不同库之间切换。
MLflow Tracing SDK 提供了一个简单直观的 API,用于手动检测您的 GenAI 应用程序。手动检测和自动追踪可以一起使用,允许您追踪包含自定义代码的高级应用程序,并对追踪行为进行细粒度控制。
通过使用自定义标签注释追踪,您可以为追踪添加更多上下文以对其进行分组,并简化以后搜索它们的过程。当您想要追踪跨多个请求会话运行的应用程序或跟踪特定用户交互时,这非常有用。
使用强大的类 SQL 语法,根据执行时间、状态、标签、元数据和其他属性搜索和过滤追踪。非常适合调试问题、分析性能模式和监控生产应用程序。
配置异步日志记录、处理大容量追踪以及与企业可观察性平台集成。包括全面的生产部署模式和扩展追踪基础设施的最佳实践。
生产配置示例
以下是为生产使用设置轻量级 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 项目 - 可重现的 ML 项目格式
- MLflow 配方 - 预定义的 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 | ~1000MB | 20+ 包 | 开发、实验、完整的 ML 生命周期 |
mlflow-tracing | ~5MB | 5-8 包 | 生产追踪、监控、可观察性 |
轻量级 SDK 比完整的 MLflow 包小 95%,非常适合
- 容器部署
- 无服务器函数
- 边缘计算
- 生产微服务
- CI/CD 流水线
总结
MLflow Tracing SDK 提供了一个针对生产优化的解决方案,用于监控 GenAI 应用程序,具有以下特点:
- 最小占用空间,实现快速部署
- 完整的追踪功能,实现全面监控
- 灵活的后端选项,从自托管到企业平台
- 从完整 MLflow 包轻松迁移
- 生产就绪功能,包括异步日志记录和错误处理
无论您是运行小型原型还是大规模生产系统,轻量级 SDK 都能提供您所需的可观察性,而不会带来不必要的开销。