Plan v0.2'nin Faz 0 çıktısı. Yazılan sıraya göre:
- cobra tabanlı CLI iskeleti; server/agent/ctl komutları henüz stub.
- internal/sim: OpenAI uyumlu sahte inference engine. Router'ı GPU olmadan
gerçekçi koşullarda test edebilmek için gerçek bir engine'in router
açısından önemli davranışlarını modeller:
* continuous batching ve KV blok muhasebesi (head-of-line blocking dahil)
* zincirlenmiş blok hash'leri + LRU ile otomatik prefix cache
* batch büyüdükçe artan token gecikmesi
* istemci koptuğunda isteğin düşürülüp blokların bırakılması
* vLLM metrik adlarıyla /metrics (plan §7.6 engine kontratı)
- Testler: prefix hash zincirlemesi, LRU tahliyesi, iptal propagasyonu,
kuyruklama, SSE formatı, usage/cached_tokens, metriklerin gerçek
Prometheus parser'ıyla okunabilirliği.
- Gitea Actions CI: gofmt, vet, race detector.
Modül yolu gitea.mynodes.xyz/ilker/llmgw; `make rename` ile değiştirilebilir.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2.2 KiB
2.2 KiB
llmgw
Çoklu InfiniBand fabric ve heterojen GPU için tek binary LLM gateway.
Kendi GPU sunucularında çalışan LLM'leri (vLLM / SGLang) tek bir OpenAI uyumlu uç noktadan sunar. Tasarım dokümanı: llmgw-plan.md.
Durum
| Faz | Kapsam | Durum |
|---|---|---|
| 0 | İskelet + sim-engine | ✅ |
| 1 | Statik router (filter/score/pick, streaming proxy) | ⬜ |
| 1.5 | Admission control (öncelik bantları) | ⬜ |
| 2 | Agent: GPU/IB keşfi, tek-node engine | ⬜ |
| 3 | Control plane: katalog, scheduler, reconciler | ⬜ |
| 4 | Multi-node & fabric farkındalığı | ⬜ |
| 5 | Tenancy, prefix affinity, bench | ⬜ |
Kurulum
make build # bin/llmgw
make test # birim testleri
make race # yarış dedektörüyle
sim-engine
Gerçek bir inference engine'in router açısından önemli davranışlarını simüle eder; GPU olmadan geliştirme ve test yapabilmek için. Modellediği şeyler:
- continuous batching (sınırlı eşzamanlı dizi sayısı)
- KV cache blok muhasebesi; blok yetmediğinde kuyruğa alma (head-of-line blocking dahil)
- otomatik prefix cache (zincirlenmiş blok hash'leri + LRU) ve cache hit'in TTFT'ye etkisi
- batch büyüdükçe token başına gecikmenin artması
- istemci koptuğunda isteğin batch'ten düşürülüp blokların bırakılması
- vLLM metrik adlarıyla
/metrics
./bin/llmgw sim-engine --listen :8000 --model llama-3.3-70b
curl -N localhost:8000/v1/chat/completions \
-H 'content-type: application/json' \
-d '{"messages":[{"role":"user","content":"merhaba"}],"max_tokens":8,"stream":true}'
Yük/gecikme davranışını ayarlamak için: --max-num-seqs, --num-gpu-blocks,
--prefill-tps, --decode-tps, --batch-contention, --prefix-cache-blocks.
Kaos testleri için: --fail-rate, deterministik koşu için --seed.
Engine metrik kontratı
Router'ın yönlendirme yapabilmesi için bir engine'in vermesi zorunlu üç metrik (plan §7.6). sim-engine bunları gerçek vLLM adlarıyla yayınlar:
vllm:num_requests_running
vllm:num_requests_waiting
vllm:kv_cache_usage_perc
Modül yolu
gitea.mynodes.xyz/ilker/llmgw. Değiştirmek için:
make rename NEW=git.ornek.com/ekip/llmgw