Por Que Observabilidade em LLMs?
- Debug: LLMs são caixas pretas — ver o que entra e sai de cada camada da pipeline
- Custos: Monitorar gastos por API (tokens de entrada/saída por endpoint)
- Qualidade: Rastrear latências, taxa de erros, qualidade das respostas
- Feedback: Coletar thumbs-up/down do usuário para dados de preferência
LangFuse
- URL: langfuse.com
- Open-source: Sim (self-hostável)
- Features: Traces, spans, prompts versionados, scores, datasets, playground
- Integração:
langfuse SDK para Python/JS; integrações com LangChain, LlamaIndex, OpenAI
- Quando usar: Self-hosted; open-source; privacy-first
- Auto-host: Docker compose; PostgreSQL
from langfuse.openai import openai # drop-in replacement
response = openai.chat.completions.create(...) # auto-traced
Phoenix (Arize)
- URL: phoenix.arize.com · github.comArize-aiphoenix
- Open-source: Sim
- Features: Traces (OpenTelemetry), evals automáticos, datasets, embeddings explorer
- Integração: OpenTelemetry-native; funciona com qualquer LLM
- Diferencial: Evals integrados (hallucination, relevância, toxicidade)
Helicone
- URL: helicone.ai
- Modelo: Proxy reverso — troca
openai.com por oai.helicone.ai
- Features: Custos, latências, rate limiting, caching, usuário tracking
- Zero-code: Só muda a URL base
- Quando usar: Monitoramento de custos de API sem código
Braintrust
- URL: braintrustdata.com
- Foco: Evals + datasets + tracing integrados
- Diferencial: CI/CD para evals — roda benchmark a cada PR
PromptLayer
- URL: promptlayer.com
- Foco: Versionamento de prompts + tracing
- Quando usar: Times com muitos prompts em produção
Weights & Biases (Wandb)
- URL: wandb.ai
- Foco primário: Treino de modelos (curvas de loss, hiperparâmetros, artifacts)
- LLM features: Prompt versioning, traces, evals, Weave framework
- Quando usar: Já usa wandb para treino; também quer monitorar produção
MLflow
- URL: mlflow.org (Linux Foundation)
- Open-source: Sim (self-hostável)
- Features: Experiment tracking, model registry, serving, tracing (LLM)
- Backend: PostgreSQL + S3/MinIO para artifacts
- Quando usar: Stack totalmente open-source; integração com Spark/Databricks
Pipeline de Dados
datatrove (HuggingFace)
- URL: github.comhuggingfacedatatrove
- Foco: Processamento de dados de pré-treino em larga escala
- Features: Leitores (Common Crawl, Parquet, JSON), filtros, deduplicação, writers
- Paralelismo: Nativo; processa petabytes de dados
- Uso: FineWeb foi construído com datatrove
HuggingFace Datasets
- URL: huggingface.codocsdatasets
- Features: Arrow format, streaming, map/filter paralelos, pushtohub
- Integração: PyTorch DataLoader, JAX, Spark
- Deduplicação: MinHash LSH via
datasets.dedup
datasketch
- URL: github.comekzhudatasketch
- Algoritmos: MinHash LSH, HyperLogLog, TopK
- Uso: Deduplicação near-duplicate em datasets de texto/código
PyTorch Profiler
with torch.profiler.profile(activities=[ProfilerActivity.CPU, ProfilerActivity.CUDA]) as prof:
model(x)
print(prof.key_averages().table(sort_by="cuda_time_total"))
- Identifica bottlenecks: qual op consome mais tempo/memória
NVIDIA Nsight Systems / Nsight Compute
- Nsight Systems: Timeline de CPU+GPU; visualização de streams e gaps
- Nsight Compute: Profiling por kernel; roofline analysis
- Uso: Identificar se estamos memory-bound ou compute-bound
torch.cuda.memory_summary()
print(torch.cuda.memory_summary(device=None, abbreviated=False))
- Rastreia onde a VRAM está sendo consumida
Métricas de Produção
Latência
| Métrica |
Descrição |
| TTFT |
Time To First Token — até o primeiro token aparecer |
| TBT / ITL |
Time Between Tokens / Inter-Token Latency |
| E2E Latency |
Do request ao último token |
| P50P90P99 |
Percentis — P99 mostra o "pior caso" real |
Throughput
| Métrica |
Descrição |
| tokens/segundo |
Geração por segundo no servidor |
| requests/segundo |
Capacidade de requests simultâneos |
| tokenssegundoGPU |
Eficiência de hardware |
Custo
| Métrica |
Cálculo |
| $/1M tokens |
Preço de API ou custo de hardware amortizado |
| tokenshoraGPU |
Para calcular ROI do hardware |
| MFU (Model FLOP Utilization) |
FLOPS efetivos / FLOPS teóricos |
OpenTelemetry para LLMs
- Padrão emergente: OpenTelemetry Semantic Conventions for LLMs (OTEL SIG)
- Atributos:
gen_ai.system, gen_ai.model, gen_ai.input.tokens, gen_ai.output.tokens
- Exporters: Jaeger, Zipkin, Prometheus, OTLP (para Phoenix, Grafana, etc.)
Stack de Observabilidade Recomendado para Kode
Desenvolvimento: LangFuse self-hosted (traces + prompts versionados)
Treino: W&B (loss curves, artifacts, evals)
Produção: LangFuse (traces) + Prometheus/Grafana (métricas)
Custos: Helicone (se usando API OpenAI/Anthropic)
Evals contínuos: Phoenix (RAGAS score, hallucination detection)