Aligns with the UI page Diagnostics (/diagnostics) and GET /health.
- Open http://<host>:14563/diagnostics.
- Click Run health check — overall status and per-component cards.
- Click Readiness probe — whether the host is ready to take traffic.
Components reported by HealthService:
| Component | Healthy means | Degraded / unhealthy clues |
|---|---|---|
database |
SQLite reachable | File locked, bad path, disk full |
engine |
Engine object OK (Mock or Native) | Init / native load failure |
inference |
Model loaded + metrics OK | No model loaded (degraded) |
disk |
Enough free space on models drive | <20 GB degraded, <5 GB unhealthy |
Symptom: Inference degraded; chat/API returns errors or empty capability.
Fix: Open Models, import or pull a model, then Load. Optionally enable load-on-startup in Settings.
Symptom: About / GPU widgets show mock GPU; real VRAM unknown.
Fix: Install current NVIDIA drivers so nvidia-smi is on PATH. Reboot if needed. ExLlamaSharp can still run in mock mode for UI/API development (ForceMockEngine).
Symptom: /health → database unhealthy; UI may fail to list keys/models.
Fix:
- Ensure
%ProgramData%\ExLlamaSharpis writable. - Check disk space on that volume.
- Confirm no other process has an exclusive lock on
app.db. - As last resort, restore from a backup ZIP (see admin guide).
Symptom: Service fails to start or browser cannot connect.
Fix: Change bind port under Settings → Network, or stop the other process using 14563. Update firewall rules if LAN access is enabled. Restart the Windows service after changing port.
Symptom: /v1/chat/completions returns unauthorized.
Fix: Create a key on API Keys and send Authorization: Bearer …. Do not use an expired/deleted key. UI session auth is separate from API keys for programmatic clients.
Get-Service ExLlamaSharp→ should be Running.- Check Event Viewer /
%ProgramData%\ExLlamaSharp\logs. - Run
packaging\Check-Requirements.ps1.
- Use a smaller EXL3/quantized model.
- Lower
GpuMemoryUtilizationslightly. - Ensure only intended devices in
CudaVisibleDevices. - Close other GPU apps (browsers with HW accel, games).
Symptom: Load with parallelism_mode=tensor fails with TimeoutError: Timed out waiting for worker (ExLlamaV3 model_tp.py). nvidia-smi stays almost idle; leftover python ... spawn_main processes sit at ~8 MB.
Cause: Tensor parallel starts extra Python processes. On Windows those children re-enter the worker script and never become TP workers when the host is the long-lived JSONL process. A console python -c load can succeed while the Admin/Server load fails. Pipeline mode does not spawn those children.
Fix: On Windows the server now coerces tensor → pipeline on save/load. For Qwen3-32B 4.0bpw on 12 GB + 8 GB use GpuSplitGb=11,7 (or 10.8,6.2) and keep Max batched tokens at 2048–4096 — 10240 plus the 32B weights does not fit. Recycle the worker after a failed load (Save on Settings, or restart the Server) so zombie spawn_main processes are gone.
Symptom: Models such as Qwen3.8-27B-exl3 (Qwen3_5ForConditionalGeneration + vision_config) used to fail load under tensor/pipeline with vision models are not supported….
Behaviour now: The language model still loads across GPUs; the vision tower is skipped (vision_capable=false). Text chat works. Image/video inputs need ParallelismMode=none (and enough VRAM on one card), then reload.
- Check
GET /metrics(jobs_waiting,tokens_per_second). - Reduce concurrent clients or raise capacity settings carefully.
- Prefer native CUDA build over stub/mock for real throughput.
- Confirm
WebhookUrl/ secret in Settings. - Receiver must return 2xx; service retries 3 times.
- Validate HMAC header if your endpoint verifies signatures.
ParallelismModestillnone, or only one index inCudaVisibleDevices.nvidia-smiindex is notcuda:Nafter remap — check worker log (cuda:0= highest VRAM).- Production path is the EXL3 Python worker, not
exllamasharp_native.dll/ mock. - After Settings save the worker should recycle automatically; if VRAM is still on one UUID only, reload the model and read
use_per_devicein the worker log.
- Auto-split is
VRAM[i] × GpuMemoryUtilization. A 6 GB card with util 0.9 only has ~5.4 GB for weights. - Display GPU keeps 1.5 GB (others 0.5 GB) folded into
use_per_device— ExLlamaV3 does not accept use and reserve together. Lower util or setGpuSplitGb(remapped order, e.g.10,4.5). - Tensor / pipeline need ≥2 devices. Speculative, vision, and LoRA are rejected under those modes.
# Requirements
.\packaging\Check-Requirements.ps1
# Health JSON
Invoke-RestMethod http://localhost:14563/health
# Ready
Invoke-RestMethod http://localhost:14563/readyGather: Diagnostics screenshot or /health JSON, /api/v1/about JSON, nvidia-smi output, and whether you are on MockEngine or native DLL. See admin-guide.md.