AdaptLoop closes the MLOps loop on top of my gateway. Production LLM signals land on Redpanda, Bytewax aggregates them into Postgres, we curate a holdout-safe Parquet set, fine-tune a LoRA adapter, gate promotion with lag and eval checks, register it in MLflow, route
base_model + adapter_idback into LLMOps, and canary-watch Staging with automatic rollback if error rate or p95 blows up.
Resume arc: domain product → graph/knowledge AI → inference platform → closed-loop adaptation.
make interviewThat script:
- Prints this talk track
- Shows Redis lag / aggregates
- Promotes an existing run to Staging (or uses
smoke_lora) - Injects a canary fault and shows auto-rollback
Full rebuild (2–4 min): make demo
[LLMOps traces]──┐
[Synthetic EPC]──┼──► Redpanda ──► Bytewax ──► Redis + Postgres
│ │
│ ▼
│ MinIO Parquet
│ (train / holdout / review)
│ │
│ ▼
│ LoRA (PEFT) ──► MLflow
│ │
└◄── adapter_routes ◄── promote gate ◄── canary
| Question | Answer |
|---|---|
| How do you stop train/serve skew? | One shared normalization + chat template module; golden-file unit tests; same hash in curation and training. |
| What if production labels are poisoned? | Pydantic validation; needs_review samples never enter train.parquet — they go to review_queue. Holdout never trains. |
| Won’t lag make you promote on stale data? | Promote gate reads Redis produced − processed and refuses if lag > N. |
| What if the new adapter hurts live traffic? | Staging + Redis SLO canary → auto-rollback; gateway also sticky-hashes canary_percent of alias traffic to Staging. |
| Do you only use exact match? | No — holdout scores exact match, token F1, and an offline LLM-judge rubric (optional API judge). |
| Artifact | Where |
|---|---|
| Event contract | docs/EVENT_CONTRACT.md |
| SQL examples | SELECT source, count(*) FROM training_examples GROUP BY source |
| Holdout split | .artifacts/datasets/*/manifest.json |
| Adapter | .artifacts/runs/*/adapter or MinIO adaptloop-checkpoints |
| Registry | http://localhost:5001 — Staging / Archived after canary |
| Gateway route | GET /v1/admin/adapter-routes (LLMOps) + X-Adapter-Id header |
- One domain (
epc_qa), LoRA only — no full pretrain. - Smoke demos use a tiny HF model on CPU; production path is Qwen2.5-3B.
- Gateway remaps alias → base model and echoes
adapter_id; applying LoRA weights needs a custom inference backend (called out as follow-on).