Downloads · 30 days
6
23% of all-time downloads
NeuroSenko/DeepSeek-V4-Flash-exl3
DeepSeek-V4-Flash-exl3 is a text generation model from NeuroSenko. Use it when you need the model to write or continue text. It is set up for transformers. The card lists the license as mit.
ExLlamaV3 (exl3) quantizations of DeepSeek-V4-Flash.
Downloads · 30 days
6
23% of all-time downloads
All-time downloads
26
Public
Repo size
145 GB
Likes
2
Public
Click a slice to open those files.
.md9.2 KB · 86%
From the Hugging Face model README
ExLlamaV3 (exl3) quantizations of DeepSeek-V4-Flash.
[!WARNING] This quant does NOT run on stock exllamav3 or stock tabbyAPI. DeepSeek-V4-Flash uses an architecture that upstream exllamav3 does not implement, so loading these files with an official release will fail with an unknown-architecture error. You must install the exllamav3 fork branch described in Installation. This is experimental software — expect rough edges and breaking changes.
Weights live on a branch named after the bit-rate. The model card (this page) is on main.
| Branch / revision | Bits per weight | Approx. size | Notes |
|---|---|---|---|
4.0bpw | 4.0 bpw | ~145 GB | tested up to 256k context |
More bit-rates may be published as additional branches.
DeepSeek-V4-Flash is not a standard transformer, and none of the machinery it needs exists in any official exllamav3 release:
DeepseekV4ForCausalLM architecture. Upstream has no model definition for it, so the
loader rejects the checkpoint outright.dsv4.cu) that ship only on the fork.All of this lives on the fork branch below.
Three steps: install the tabbyAPI fork, install the exllamav3 fork into it, download the model. You'll need an NVIDIA CUDA toolkit (the exllamav3 fork builds a custom extension) and enough VRAM (4.0bpw weights are ~145 GB).
The fork branch adds the DeepSeek-V4 tool-call parser and an example config on top of current tabbyAPI. Clone it and set up its venv:
git clone -b deepseek-v4-flash https://github.com/NeuroSenko/tabbyAPI.git
cd tabbyAPI
python -m venv venv
source venv/bin/activate
pip install -U pip
pip install .
That last step pulled stock exllamav3, which has no DeepSeek-V4 support. Replace it with the fork branch (tabby's venv still active):
pip install --force-reinstall --no-deps --no-build-isolation \
"git+https://github.com/NeuroSenko/exllamav3.git@deepseek-v4-flash"
This compiles the custom CUDA extension (needs the CUDA toolkit) and cleans up after itself. The fork is a drop-in superset of exllamav3 v1.0.0, so the rest of tabby keeps working.
The weights are on the 4.0bpw branch, not main — select that revision:
huggingface-cli download NeuroSenko/DeepSeek-V4-Flash-exl3 --revision 4.0bpw \
--local-dir ./DeepSeek-V4-Flash-exl3-4.0bpw
Point a config at the folder and start tabby from the venv:
model:
model_dir: /path/to/models
model_name: DeepSeek-V4-Flash-exl3-4.0bpw
backend: exllamav3
max_seq_len: 262144
cache_size: 262400
cache_mode: FP16
gpu_split_auto: true
tool_format: deepseek_v4
python main.py --config config_dsv4.yml
[!TIP] If autosplit OOMs while loading across multiple GPUs, give each GPU a few GB of headroom with a per-GPU
autosplit_reservelist — one entry per GPU, e.g.[3072, 3072, 3072, 3072]. A single-element list only reserves GPU0. In paged mode the cache is larger (see below), so you may need to lower the reserve instead so it fits.
Because the compressed attention state lives inside the module rather than in a standard paged KV pool, the fork provides two ways to avoid re-prefilling a prompt from scratch. Both decode at the same speed — reuse only affects prefill / time-to-first-token.
Default — append-only prefix reuse. The cache stays in its compact non-paged layout (~3.6 GB at 256k) and a single, evolving conversation continues from the previous turn's cache instead of replaying the whole prompt each turn. This is the common agent / tool-loop case: a long context that grows by a few tokens per turn keeps TTFT low. Only the one resident sequence's prefix is reusable — switching to a different conversation re-prefills.
DSV4_PAGED=1 — native paging + multi-session. Materializes the per-page cache state so
exllamav3's own page table can share and reuse pages by content hash. Several independent
conversations can stay resident at once, and switching between them reuses each one's cache without
re-prefilling — even after other sessions were served in between. The trade-off is memory: paging
stores per-page state, so the cache is roughly 3× larger (~11 GB at 256k) and must fit alongside
the weights (lower autosplit_reserve if the split doesn't fit).
| Mode | Env | Cache @ 256k | Reuse |
|---|---|---|---|
| Default | (none) | ~3.6 GB | append-only, single session |
| Paged | DSV4_PAGED=1 | ~11 GB | native page table, multiple sessions |
Both are set via environment variables when launching tabby: DSV4_PAGED (default 0) toggles
paging; DSV4_REUSE (default 1) toggles the append-only reuse in the non-paged mode.
DSV4_PAGED=1 python main.py --config config_dsv4.yml
For the curious, this is what the fork adds on top of exllamav3:
num_key_value_heads == 1), used directly — there is no per-head KV up-projection, so this is
MQA rather than MLA. Queries and the attention output use low-rank projections, and RoPE is
decoupled and scaled with YaRN for long context.DSV4_PAGED=1), which costs more cache memory. See
Cache reuse & multi-session.max_batch_size: 1. Paged mode lets multiple
sessions share the cache and be served in turn, but concurrent batched decoding of several
sequences at once is untested.