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

Models / qwen3

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

Fine-tuning Qwen3.6-35B-A3B-DFlash at batch 1 and 2048 tokens takes about 30.3 GB of GPU memory for a full fine-tune (borderline on one A100 40 GB), and 6.86 GB with LoRA r=16 on a bf16 base (fits 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. 208K 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
1.37B
1,369,715,200 parameters
In the published checkpoint
386M
385,906,176 scalars · safetensors.total, read 2026-06-19
Delta
+255%

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
40
Will it forward-pass
Yes
Priced on
A10G (24GB)
Est. one run
$69.89

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
30.3 GB
LoRA r=16, batch 1 at 2048 tokens
6.86 GB
Serve: bf16 weights
2.74 GB
Serve: KV cache, 4096 tokens
0.10 GB
CardFull fine-tuneLoRA r=16Serve bf16, 4096 tokens
T4 16 GBdoes not fit at batch 1batch 2batch 110
L4 24 GB2 cards at batch 1 (39 + 1 layers)batch 4batch 180
A100 40 GBbatch 2, borderlinebatch 7batch 318
A100 / H100 80 GBbatch 10batch 16batch 663
H200 141 GBbatch 23batch 29batch 1190

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

42 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 × 2048
3RoPERoPE1 × 262144 × 2048
4RMSNorm_1_1RMSNorm1 × 262144 × 2048
5Attention_1Local Attention1 × 262144 × 2048
6Add_1_attnAdd1 × 262144 × 2048
7RMSNorm_1_2RMSNorm1 × 262144 × 2048
8FFN_1SwiGLU1 × 262144 × 2048
9Add_1_ffnAdd1 × 262144 × 2048
10RMSNorm_2_1RMSNorm1 × 262144 × 2048
11Attention_2Local Attention1 × 262144 × 2048
12Add_2_attnAdd1 × 262144 × 2048
13RMSNorm_2_2RMSNorm1 × 262144 × 2048
14FFN_2SwiGLU1 × 262144 × 2048
15Add_2_ffnAdd1 × 262144 × 2048
16RMSNorm_3_1RMSNorm1 × 262144 × 2048
17Attention_3Local Attention1 × 262144 × 2048
18Add_3_attnAdd1 × 262144 × 2048
19RMSNorm_3_2RMSNorm1 × 262144 × 2048
20FFN_3SwiGLU1 × 262144 × 2048
21Add_3_ffnAdd1 × 262144 × 2048
22RMSNorm_4_1RMSNorm1 × 262144 × 2048
23Attention_4Local Attention1 × 262144 × 2048
24Add_4_attnAdd1 × 262144 × 2048
25RMSNorm_4_2RMSNorm1 × 262144 × 2048
26FFN_4SwiGLU1 × 262144 × 2048
27Add_4_ffnAdd1 × 262144 × 2048
28RMSNorm_5_1RMSNorm1 × 262144 × 2048
29Attention_5Local Attention1 × 262144 × 2048
30Add_5_attnAdd1 × 262144 × 2048
31RMSNorm_5_2RMSNorm1 × 262144 × 2048
32FFN_5SwiGLU1 × 262144 × 2048
33Add_5_ffnAdd1 × 262144 × 2048
34RMSNorm_6_1RMSNorm1 × 262144 × 2048
35Attention_6Grouped Query Attn1 × 262144 × 2048
36Add_6_attnAdd1 × 262144 × 2048
37RMSNorm_6_2RMSNorm1 × 262144 × 2048
38FFN_6SwiGLU1 × 262144 × 2048
39Add_6_ffnAdd1 × 262144 × 2048
40Final_RMSNormRMSNorm1 × 262144 × 2048
41LM_HeadLinear1 × 262144 × 248320
42OutputOutput1 × 262144 × 248320

What the verifier says

No finding on the reconstructed graph. See the checks.

What changed upstream

The change tracker follows z-lab/Qwen3.6-35B-A3B-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-35B-A3B-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