Files
esh-pfi-infrastructure/stacks/coder-seat/README.md
T

67 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# coder-seat
The fleet's small code-completion model on **nh3-ml1** (CT 109 on nh3-pve, RTX
2000E Ada): **Qwen/Qwen2.5-Coder-1.5B** (the BASE model, used for
fill-in-the-middle), vLLM v0.24.0, `:8020`. It shares the card with TEI
embed/rerank (`stacks/embed-rerank`).
Moved from fv-ml1's `vllm` stack on 2026-09-25 (Prime: utility seats off the
Blackwells). It was chosen for Zed edit-predictions by a deep-research pass on
2026-07-27 (Apache-2.0).
| | |
|---|---|
| endpoint | `http://10.100.50.80:8020/v1/completions` (FIM: `<\|fim_prefix\|>…<\|fim_suffix\|>…<\|fim_middle\|>`) |
| served name | `qwen2.5-coder-1.5b` |
| gateway | `coder-fast` → `hosted_vllm/qwen2.5-coder-1.5b` (ana-docker:4000) |
| revision | `df3ce67c0e24480f20468b6ef2894622d69eb73b` (pinned; same as fv-ml1 and HF main on 2026-09-25) |
| memory | 0.33 of 16,380 MiB ≈ 5.4 GB, the same absolute budget as on fv-ml1 |
## ❌ NOT DEPLOYED. Decision (Prime, 2026-09-26 0000): the seat stays on fv-ml1
The nh3-ml1 copy was built, checked for parity, measured, and then removed (container,
image, model cache). It was the same quality but **about 5× slower** on the 50 W
Ada. That lag would reach Zed edit-predictions, and moving it would only have freed
6.3 GB on an fv-ml1 GPU that already had about 20 GB spare. The live seat is still
`stacks/vllm` on fv-ml1. This stack is kept as the tested recipe in case the
calculation changes (a faster card, or speculative decoding).
**Speed, measured on each box** (3 interleaved reps each; fv-ml1 GPU 1 read 0%
before and after):
| workload | nh3-ml1 | fv-ml1 |
|---|---|---|
| time to first token (1 token), p50 | 20.3–20.9 ms | 7.9–9.7 ms |
| FIM completion (1,500-char prefix, 64 tokens), p50 | **1,020–1,089 ms** | 198–206 ms |
| decode, tokens/s | 62.7–63.2 | 337.6–337.7 |
**Parity: same quality, different kernels.** The test uses 40 FIM prompts from
this repo's scripts, with the file's real next 200 characters teacher-forced
(2,215 tokens). Every run is a fresh prefill (`cache_salt`).
- Each host repeats itself bit-exactly: the floor is |Δlogprob| 0 and top-1
agreement 1.0 on both.
- Across hosts, per-token |Δlogprob| has median 0.049 and p99 1.72, and top-1
agreement is 0.966. The cause is Blackwell vs Ada kernels plus the fp8 KV
cache. The positive control (suffix dropped) gives median 1.46 and 0.58.
- **Against the real code there is no difference.** Mean logprob is −1.6095
(nh3) vs −1.6178 (fv), a paired difference of +0.008 ± 0.019 SE. The true-token
top-1 rate is 0.739 vs 0.742 (−0.002 ± 0.003).
- ⚠ Greedy exact-match is not a usable parity test for this seat. Same-host
greedy repeats matched only 30–38%, because run B hit the prefix cache and
took a numerically different path, and near-tie tokens cascade.
## Consumers
Everything goes through the gateway alias `coder-fast`. **Zed edit-predictions**
reach it through `stacks/zed-fim-proxy` on ana-docker. The proxy injects a
`coder-fast`-scoped virtual key and forwards to LiteLLM `:4000`, so only the
gateway entry holds this seat's address. It saw 20 requests in the 7 days before
the move.
## Deploy
```bash
scripts/deploy-stack.sh nh3-ml1 coder-seat
ssh nh3-ml1 'cd /opt/docker/compose/coder-seat && cp -n .env.example .env && docker compose config -q && docker compose up -d'
```