60 minutes · 4 sub-sections: The Decision Matrix · No-Telemetry & Air-Gap · Apple Silicon/MLX · Production Patterns
You arrive with a quantized model from FT19. This module answers: what do you run it with — and what are the rules when the deployment is sensitive?
Pillar 6 — Quantize & Deploy
Every serving decision collapses to three questions:
| Variable | The question | Determines |
|---|---|---|
| 1. Audience | One dev? A team? Hundreds of users? | Runtime (1 user) vs server (concurrent) |
| 2. Hardware | CUDA? Apple Silicon? CPU? ROCm? | Which runtimes are even options |
| 3. Telemetry posture | Open? Regulated? Air-gap? | What you may operationally run |
There is no "best" runtime. There is the runtime your variables point at.
The rest — TGI, localai, SGLang, TensorRT-LLM — fills in around these four.
PagedAttention
KV cache in paged blocks (like OS virtual memory). Eliminates the fragmentation that wastes 60–80% of KV-cache memory — packs more sequences in the same VRAM.
Continuous batching
Insert new requests into running batches at every token step. GPUs stay saturated; tail latency bounded. 5–10× over static batching.
Tensor parallelism splits a too-big model across GPUs — a flag (--tensor-parallel-size N), not a recompile.
base_url.
Point OTEL_EXPORTER_OTLP_ENDPOINT at your own collector on 127.0.0.1 — or leave unset and traces are no-ops.
The honest limitation: Apple Silicon / CPU support is limited. vLLM is built around CUDA. Macs want MLX.
ollama pull; once models are local, block the network and bind OLLAMA_HOST=127.0.0.1.| Runtime | Network posture |
|---|---|
| llama.cpp | Single binary, no network code path for telemetry. Safe by construction. |
| vLLM | OTel-native — emits to YOUR collector. Safe by configuration. |
| Ollama | Needs net only for pull. Safe once configured + loopback bound. |
The same recipe works for any runtime:
This recipe is the bridge to Pillar 7 (FT21, FT22).
Best DX in the field. Privacy policy: "We don't see your prompts when you run locally." True — but three caveats:
OLLAMA_HOST=0.0.0.0 exposes an unauthenticated API. Public-internet Ollama is routinely scraped.| Concurrent users | Ollama p95 | vLLM p95 |
|---|---|---|
| 1 | ~1s | ~0.6s |
| 3 | ~4s | ~0.8s |
| 5 ← the ceiling | 18s+ | ~1.2s |
| 10+ | 60s+ / unusable | ~2s |
Same hardware, same model. The shape is the deployment decision.
If your fleet is Macs, the runtime is MLX, not vLLM.
Why MLX
Apple's array framework, built for unified memory + Metal. CUDA runtimes can't exploit it.
WWDC25 session 298: Apple-endorsed local serving path.
4-bit recommendation
~75% size reduction, minimal quality loss. Pull pre-quantized from mlx-community on HF.
~143 tok/s on Qwen3-VL-4B on current M-series.
| Pattern | The rule |
|---|---|
| Bind loopback | 127.0.0.1 by default. Expose to network only deliberately, with auth. |
| OpenAI-compatible API | Standardize on /v1/chat/completions. Swap base_url dev↔prod — no code change. |
| Concurrency + queueing | vLLM/TGI have it built in. Reverse proxy (nginx/envoy) enforces per-client limits. |
| Observability | OTel for vLLM, Prometheus for TGI. Metrics to YOUR collector. See the latency tail. |
OLLAMA_HOST=0.0.0.0 without auth. Known, repeatedly-exploited attack surface. The Oligo CVEs make raw exposure actively dangerous. Loopback + reverse proxy.
Next: FT21 — HIPAA and BAA Elimination