Under the hood
256-expert MoE on Qwen3.5. 40 layers, 30 use linear attention and 10 use full attention (every 4th). Shared expert gates kept at FP16.
Quantization is symmetric INT8, group size 128. Calibrated on 384 samples over 400 iterations with sequence length 4096 instead of the default 2048.
Table with columns: Dataset, Config, KL ↓, Top-1 match, Top-1 in ref top-5, Tokens| Dataset | Config | KL ↓ | Top-1 match | Top-1 in ref top-5 | Tokens |
|---|
| Wikitext-103 | 4 × 4096 | 0.00470 | 96.84% | 99.97% | 16,336 |
| Wikitext-103 | 2 × 8192 | 0.00437 | 97.35% | 99.98% | 16,360 |
| code-search-net (6 lang) | 4 × 4096 | 0.00443 | 98.18% | 99.99% | 16,336 |
| code-search-net (6 lang) | 2 × 8192 | 0.00433 | 98.28% | 100.00% | 16,360 |
Hardware
Fits on two 3090s with headroom. This quant was created largely to fit this into two 24gb cards while maintaining speed. On my machine, this retains enough space for 3 max-num-seqs at full context. Tinker as you see fit to get the number of parallel slots you'd like to serve.
Inference
vLLM V1 engine:
PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True \
vllm serve \
jpbwin/KAT-Coder-V2.5-Dev-int8-AutoRound \
--port 5001 \
--tensor-parallel-size 2 \
--gpu-memory-utilization 0.975 \
--max-num-seqs 3 \
--enable-chunked-prefill \
--enable-prefix-caching
Notes
I had to alter the auto-round library hella in order to get this to work end to end, but in the end, vanilla VLLM serves this just fine :)
Upstream PRs to auto-round to come, it seems to do a lot of double work and underutilizes gpu capability when quantizing some models.
License
Apache 2.0