Zum Hauptinhalt springen

🔁 MLflow - OSS LLM Observability und Evaluierung

Was ist MLflow?

MLflow ist eine End-to-End Open-Source MLOps-Plattform für Experiment-Tracking, Model Management, Evaluierung, Observability (Tracing) und Deployment. MLflow befähigt Teams, LLM-Anwendungen kollaborativ und effizient zu entwickeln und zu verfeinern.

Die Integration von MLflow mit LiteLLM unterstützt fortschrittliche Observability, die mit OpenTelemetry kompatibel ist.

Erste Schritte

MLflow installieren

pip install mlflow

Um das automatische Tracing von MLflow für LiteLLM zu aktivieren

import mlflow

mlflow.litellm.autolog()

# Alternative, you can set the callback manually in LiteLLM
# litellm.callbacks = ["mlflow"]

Da MLflow Open-Source und kostenlos ist, ist keine Anmeldung oder API-Schlüssel erforderlich, um Traces zu protokollieren!

import litellm
import os

# Set your LLM provider's API key
os.environ["OPENAI_API_KEY"] = ""

# Call LiteLLM as usual
response = litellm.completion(
model="gpt-4o-mini",
messages=[
{"role": "user", "content": "Hi 👋 - i'm openai"}
]
)

Öffnen Sie die MLflow-UI und navigieren Sie zum Tab Traces, um protokollierte Traces anzuzeigen

mlflow ui

Tool-Aufrufe tracen

Die MLflow-Integration mit LiteLLM unterstützt das Tracing von Tool-Aufrufen zusätzlich zu den Nachrichten.

import mlflow

# Enable MLflow auto-tracing for LiteLLM
mlflow.litellm.autolog()

# Define the tool function.
def get_weather(location: str) -> str:
if location == "Tokyo":
return "sunny"
elif location == "Paris":
return "rainy"
return "unknown"

# Define function spec
get_weather_tool = {
"type": "function",
"function": {
"name": "get_weather",
"description": "Get the current weather in a given location",
"parameters": {
"properties": {
"location": {
"description": "The city and state, e.g., San Francisco, CA",
"type": "string",
},
},
"required": ["location"],
"type": "object",
},
},
}

# Call LiteLLM as usual
response = litellm.completion(
model="gpt-4o-mini",
messages=[
{"role": "user", "content": "What's the weather like in Paris today?"}
],
tools=[get_weather_tool]
)

Evaluierung

Die MLflow LiteLLM-Integration ermöglicht es Ihnen, qualitative Bewertungen von LLMs durchzuführen, um Ihre GenAI-Anwendung zu evaluieren und/oder zu überwachen.

Besuchen Sie das Tutorial "LLMs evaluieren" für eine vollständige Anleitung, wie Sie Evaluations-Suiten mit LiteLLM und MLflow ausführen.

Traces an OpenTelemetry-Kollektoren exportieren

MLflow-Traces sind mit OpenTelemetry kompatibel. Sie können Traces an jeden OpenTelemetry-Kollektor (z. B. Jaeger, Zipkin, Datadog, New Relic) exportieren, indem Sie die Endpoint-URL in den Umgebungsvariablen setzen.

# Set the endpoint of the OpenTelemetry Collector
os.environ["OTEL_EXPORTER_OTLP_TRACES_ENDPOINT"] = "https://:4317/v1/traces"
# Optionally, set the service name to group traces
os.environ["OTEL_SERVICE_NAME"] = "<your-service-name>"

Weitere Details finden Sie in der MLflow-Dokumentation.

LiteLLM-Trace mit Ihrem Anwendungs-Trace kombinieren

LiteLLM ist oft Teil größerer LLM-Anwendungen, wie z. B. agentenbasierter Modelle. MLflow Tracing ermöglicht es Ihnen, benutzerdefinierten Python-Code zu instrumentieren, der dann mit LiteLLM-Traces kombiniert werden kann.

import litellm
import mlflow
from mlflow.entities import SpanType

# Enable MLflow auto-tracing for LiteLLM
mlflow.litellm.autolog()


class CustomAgent:
# Use @mlflow.trace to instrument Python functions.
@mlflow.trace(span_type=SpanType.AGENT)
def run(self, query: str):
# do something

while i < self.max_turns:
response = litellm.completion(
model="gpt-4o-mini",
messages=messages,
)

action = self.get_action(response)
...

@mlflow.trace
def get_action(llm_response):
...

Dieser Ansatz generiert einen einheitlichen Trace, der Ihren benutzerdefinierten Python-Code mit LiteLLM-Aufrufen kombiniert.

Support