🔁 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
- Für fortgeschrittene Nutzung und Integrationen des Tracings besuchen Sie die MLflow Tracing-Dokumentation.
- Bei Fragen oder Problemen mit dieser Integration, bitte ein Issue eröffnen auf unserem Github Repository!