feat(engines): add ExLlamaV3 backend via TabbyAPI#168
Conversation
1a37556 to
f8345da
Compare
|
Rebased onto current main. Note: be37a00 stripped the vestigial |
Live hardware validation — RTX 5090 (Blackwell, SM 12.0)Dogfooded this branch end-to-end on a real workstation: RTX 5090 32GB, CUDA 12.8 driver, TabbyAPI checkout at Full lifecycle through the controller: Perf (from the controller-captured launch log): first request 17.8 T/s (kernel warmup), warmed generation 514.9 T/s on the 1B @ 4bpw. TabbyAPI stdout streams into the standard per-recipe log file and Two real bugs found and fixed by the dogfood run:
Recipe used, for reproduction: {
"id": "llama32-1b-exl3",
"backend": "exllamav3",
"model_path": "/home/terp/models/exl3/Llama-3.2-1B-Instruct-exl3-4.0bpw",
"host": "127.0.0.1", "port": 8189,
"extra_args": { "model-dir": "/home/terp/models/exl3", "disable-auth": "true" }
}Env: |
|
This is exactly how a fifth engine should land — everything inside an |
Summary
The repo description promises "Control panel for VLLM, Sglang, llama.cpp, exllamav3" — this delivers the missing fourth engine as a fifth
EngineSpec."exllamav3"to theBackend/EngineBackendunions;selected_runtime_target_idsnow keys offEngineBackendinstead of an inline union.specs/exllamav3-spec.ts): launches TabbyAPI viapython <tabby_api_dir>/main.py --host --port --model-name <basename(model_path)>, reusing the existing (previously dead)tabby_api_dirconfig key. Health path/health. Python resolution follows the mlx/sglang pattern (env override → managed venv → python3). Install follows the llama.cpp pattern: env-configured command viaLOCAL_STUDIO_EXLLAMAV3_UPGRADE_CMD, clear message when unset.SystemRuntimeInfo.backends.exllamav3reports dir presence + python version. Docker image pattern registered for target discovery./environments(no official pinned Docker image) and managed-venv installs (TabbyAPI is a checkout, not a pip package).Test plan
bun test tests/controller/integration/exllamav3-spec.test.ts— 6/6 (buildCommand shape, unconfigured-dir error, extra_args passthrough, detectInvocation, served-model-name extraction, install-unconfigured error)bun run typecheck(controller + cli),tsc --noEmit+typecheck:desktop(frontend)check:quality)