N Neurarch Try it See it Changes Bot Pricing API Open app

Models / qwen3

Qwen3.6-27B-DFlash: GPU memory to fine-tune

Fine-tuning Qwen3.6-27B-DFlash at batch 1 and 2048 tokens takes about 84.5 GB of GPU memory for a full fine-tune (fits one H200 141 GB), and 13.4 GB with LoRA r=16 on a bf16 base (borderline on one T4 16 GB). Estimated from the model's structure, reading the config under transformers semantics, not measured. What fits on which card.

Reconstructed from its own config.json with no weights read. 147K downloads on Hugging Face.

Our count against the checkpoint

The left number comes from the graph. The right one is the number of scalars in the published weight files. Nothing on this page was tuned to make them agree.

Derived from structure
4.14B
4,142,179,840 parameters
In the published checkpoint
1.73B
1,730,213,120 scalars · safetensors.total, read 2026-04-27
Delta
+139%

custom-code This repository ships its own modeling code (`auto_map`, e.g. `dflash.py`), so `config.json` names a class in the repo rather than an architecture `transformers` defines. The graph below is what those config keys mean under `transformers` semantics, which is not necessarily what the repo's own file builds. A gap here is a statement about what we read, not about the checkpoint.

What it costs to run

Cost is a roofline estimate on the priced GPU for 10 epochs at batch 32, 2048 tokens over 50,000 samples (assumed; no dataset attached).

Layers
34
Will it forward-pass
Yes
Priced on
A10G (24GB)
Est. one run
$223.30

Memory: what fits on which card

Largest batch per card. Training is sized at 2048 tokens per sample, serving at 4096 tokens per sequence.

Full fine-tune, batch 1 at 2048 tokens
84.5 GB
LoRA r=16, batch 1 at 2048 tokens
13.4 GB
Serve: bf16 weights
8.28 GB
Serve: KV cache, 4096 tokens
50 MB
CardFull fine-tuneLoRA r=16Serve bf16, 4096 tokens
T4 16 GBdoes not fit at batch 1batch 1, borderlinebatch 111
L4 24 GBdoes not fit at batch 1batch 2batch 250
A100 40 GBdoes not fit at batch 1batch 5batch 526
A100 / H100 80 GB2 cards at batch 1 (33 + 1 layers)batch 12batch 1217
H200 141 GBbatch 8batch 22batch 2271

Training: 2048 tokens per sample (2048, or the model's context when shorter; the structure table is at the config's maximum, 262144), AdamW with bf16 autocast, SDPA attention (no score matrix stored), 1.15x headroom on every card. Full fine-tune holds weights, gradients and optimizer state (1.2 x 16 bytes per parameter) plus activations. LoRA is r=16 on every linear layer but the head, base frozen in bf16 (2 bytes per parameter), adapters at full AdamW state, same activations. A two-card split is a contiguous layer cut (pipeline parallel), computed only where one card cannot hold batch 1. "Borderline" means the card holds batch 1 on the estimate but not on the conservative peak (the estimate x 1.43, at or above the measured peak on 95% of held-out runs): measure one step before reserving it. Serving: bf16 weights plus the KV cache of 4096 tokens per sequence; prefill working set, CUDA context and framework reserve not counted.

These are estimates from the graph, not measurements. Against measured runs, held out by architecture, the estimate flagged 113 of the 131 jobs that did not fit their card and said "fits" on the other 18. Every measured run.

Structure

36 nodes. Output shapes are propagated from the input shape, batch dimension excluded, at 262144 tokens: the config's maximum context, not the 2048 the memory above is sized at.

LayerTypeOutput shape
1InputInput1 × 262144
2EmbeddingEmbedding1 × 262144 × 5120
3RoPERoPE1 × 262144 × 5120
4RMSNorm_1_1RMSNorm1 × 262144 × 5120
5Attention_1Local Attention1 × 262144 × 5120
6Add_1_attnAdd1 × 262144 × 5120
7RMSNorm_1_2RMSNorm1 × 262144 × 5120
8FFN_1SwiGLU1 × 262144 × 5120
9Add_1_ffnAdd1 × 262144 × 5120
10RMSNorm_2_1RMSNorm1 × 262144 × 5120
11Attention_2Local Attention1 × 262144 × 5120
12Add_2_attnAdd1 × 262144 × 5120
13RMSNorm_2_2RMSNorm1 × 262144 × 5120
14FFN_2SwiGLU1 × 262144 × 5120
15Add_2_ffnAdd1 × 262144 × 5120
16RMSNorm_3_1RMSNorm1 × 262144 × 5120
17Attention_3Local Attention1 × 262144 × 5120
18Add_3_attnAdd1 × 262144 × 5120
19RMSNorm_3_2RMSNorm1 × 262144 × 5120
20FFN_3SwiGLU1 × 262144 × 5120
21Add_3_ffnAdd1 × 262144 × 5120
22RMSNorm_4_1RMSNorm1 × 262144 × 5120
23Attention_4Local Attention1 × 262144 × 5120
24Add_4_attnAdd1 × 262144 × 5120
25RMSNorm_4_2RMSNorm1 × 262144 × 5120
26FFN_4SwiGLU1 × 262144 × 5120
27Add_4_ffnAdd1 × 262144 × 5120
28RMSNorm_5_1RMSNorm1 × 262144 × 5120
29Attention_5Grouped Query Attn1 × 262144 × 5120
30Add_5_attnAdd1 × 262144 × 5120
31RMSNorm_5_2RMSNorm1 × 262144 × 5120
32FFN_5SwiGLU1 × 262144 × 5120
33Add_5_ffnAdd1 × 262144 × 5120
34Final_RMSNormRMSNorm1 × 262144 × 5120
35LM_HeadLinear1 × 262144 × 248320
36OutputOutput1 × 262144 × 248320

What the verifier says

warnLinear "LM_Head" is 5120 × 248320 = 1271M parameters (~4.7 GB float32). A single dense layer this large usually means a feature map was flattened without pooling first; embedding / vocab-projection heads are the expected exception. Fix: Add a Global Average Pool or more downsampling before the Linear, or factorize it (low-rank / bottleneck projection).
huge-linear-params

What changed upstream

The change tracker follows z-lab/Qwen3.6-27B-DFlash: every revision it has read, what changed in the config, tokenizer, chat template or weights between them, and an OSV advisory per change.

Do this to your own model

Same numbers, on a model in your repo, in one command. No account.

pip install neurarch-trace
neurarch-trace z-lab/Qwen3.6-27B-DFlash --plan --share

Other qwen3 checkpoints

jina-reranker-v3
596M derived · -0.13% against the checkpoint
Kimi-K3-DSpark
4.26B derived · +89.3% against the checkpoint
Qwen3-0.6B
596M derived · -0.00% against the checkpoint
Qwen3-1.7B
1.72B derived · -0.00% against the checkpoint