专为生产环境优化的轻量级追踪 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 是一个完全开源的项目,允许您在自己的基础设施中自托管 MLflow 服务器。如果您想完全控制数据并且受限于使用基于云的服务,这是一个很好的选择。
在自托管模式下,您将负责运行追踪服务器实例并根据您的需求进行扩展。我们强烈建议在高性能数据库之上使用基于 SQL 的追踪服务器,以最大程度地减少操作开销并确保高可用性。
设置步骤
- 安装 MLflow 服务器:
pip install mlflow[extras]
- 配置后端存储(推荐 PostgreSQL/MySQL)
- 配置构件存储(S3、Azure Blob、GCS 等)
- 启动服务器:
mlflow server --backend-store-uri postgresql://... --default-artifact-root s3://...
有关详细指导,请参阅追踪服务器设置指南。
Databricks Lakehouse Monitoring for GenAI 是使用 MLflow Tracing 监控 GenAI 应用程序的首选解决方案。它提供了一个强大、功能齐全的监控仪表板,用于卓越运营和质量分析。
无论您的应用程序是否托管在 Databricks 上,都可以使用 Lakehouse Monitoring for GenAI。
MLflow Tracing 基于 OpenTelemetry 追踪规范构建,OpenTelemetry 是行业标准的可观测性框架,使其成为监控 GenAI 应用程序的与供应商无关的解决方案。
如果您正在使用 OpenTelemetry 作为可观测性技术堆栈的一部分,则无需任何额外的服务入职即可使用 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 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 | ~1000MB | 20+ 个软件包 | 开发、实验、完整 ML 生命周期 |
mlflow-tracing | ~5MB | 5-8 个软件包 | 生产追踪、监控、可观测性 |
轻量级 SDK 比完整的 MLflow 软件包小 95%,非常适合:
- 容器部署
- 无服务器函数
- 边缘计算
- 生产微服务
- CI/CD 管道
总结
MLflow Tracing SDK 提供了一个为生产环境优化的解决方案,用于监控 GenAI 应用程序,其特点是:
- 占用空间小,实现快速部署
- 完整的追踪能力,实现全面监控
- 灵活的后端选项,从自托管到企业级平台
- 从完整 MLflow 软件包易于迁移
- 生产就绪功能,包括异步日志记录和错误处理
无论您是运行小型原型还是大规模生产系统,轻量级 SDK 都能提供您所需的可观测性,而没有不必要的开销。