llm-architectures-explained

/models

GPT-2 XL

OpenAI · GPT-2 · open weights

Facts and where they come from

Released2019-02labannouncementGPT-2 paper, February 2019
Licencemitconfig.jsonconfig.jsonREADME metadata: license
Total parameters1.5BlabannouncementGPT-2 paper (cdn.openai.com), Table 2: 1542M parameters for the largest model
Active parametersnot disclosednot disclosed
Context length1K tokensconfig.jsonconfig.jsonn_positions
Norm placementprecodemodelling codetransformers 5.18.0 gpt2: ln_1 before attention, ln_2 before the MLP
Norm typeLayerNormcodemodelling codetransformers 5.18.0 gpt2: ln_1 before attention, ln_2 before the MLP
QK-normnocodemodelling codeno q/k normalisation in the attention block
Positional encodinglearned absolutecodemodelling codetransformers 5.18.0 gpt2: learned absolute position embeddings
Parallel attention and MLPnocodemodelling codetransformers 5.18.0 gpt2: ln_1 before attention, ln_2 before the MLP

Architecture, drawn from the data

MHA 25q/25kv. Each column is one layer: its token mixer above, its feed-forward block below. Paler columns reuse another layer’s keys and values.

GPT-2 XL: layer stack and blockslayers (48)mixer / FFNlayer 0: MHA: 25 query / 25 KV heads · head 64layer 0: MLP: 6400layer 1: MHA: 25 query / 25 KV heads · head 64layer 1: MLP: 6400layer 2: MHA: 25 query / 25 KV heads · head 64layer 2: MLP: 6400layer 3: MHA: 25 query / 25 KV heads · head 64layer 3: MLP: 6400layer 4: MHA: 25 query / 25 KV heads · head 64layer 4: MLP: 6400layer 5: MHA: 25 query / 25 KV heads · head 64layer 5: MLP: 6400layer 6: MHA: 25 query / 25 KV heads · head 64layer 6: MLP: 6400layer 7: MHA: 25 query / 25 KV heads · head 64layer 7: MLP: 6400layer 8: MHA: 25 query / 25 KV heads · head 64layer 8: MLP: 6400layer 9: MHA: 25 query / 25 KV heads · head 64layer 9: MLP: 6400layer 10: MHA: 25 query / 25 KV heads · head 64layer 10: MLP: 6400layer 11: MHA: 25 query / 25 KV heads · head 64layer 11: MLP: 6400layer 12: MHA: 25 query / 25 KV heads · head 64layer 12: MLP: 6400layer 13: MHA: 25 query / 25 KV heads · head 64layer 13: MLP: 6400layer 14: MHA: 25 query / 25 KV heads · head 64layer 14: MLP: 6400layer 15: MHA: 25 query / 25 KV heads · head 64layer 15: MLP: 6400layer 16: MHA: 25 query / 25 KV heads · head 64layer 16: MLP: 6400layer 17: MHA: 25 query / 25 KV heads · head 64layer 17: MLP: 6400layer 18: MHA: 25 query / 25 KV heads · head 64layer 18: MLP: 6400layer 19: MHA: 25 query / 25 KV heads · head 64layer 19: MLP: 6400layer 20: MHA: 25 query / 25 KV heads · head 64layer 20: MLP: 6400layer 21: MHA: 25 query / 25 KV heads · head 64layer 21: MLP: 6400layer 22: MHA: 25 query / 25 KV heads · head 64layer 22: MLP: 6400layer 23: MHA: 25 query / 25 KV heads · head 64layer 23: MLP: 6400layer 24: MHA: 25 query / 25 KV heads · head 64layer 24: MLP: 6400layer 25: MHA: 25 query / 25 KV heads · head 64layer 25: MLP: 6400layer 26: MHA: 25 query / 25 KV heads · head 64layer 26: MLP: 6400layer 27: MHA: 25 query / 25 KV heads · head 64layer 27: MLP: 6400layer 28: MHA: 25 query / 25 KV heads · head 64layer 28: MLP: 6400layer 29: MHA: 25 query / 25 KV heads · head 64layer 29: MLP: 6400layer 30: MHA: 25 query / 25 KV heads · head 64layer 30: MLP: 6400layer 31: MHA: 25 query / 25 KV heads · head 64layer 31: MLP: 6400layer 32: MHA: 25 query / 25 KV heads · head 64layer 32: MLP: 6400layer 33: MHA: 25 query / 25 KV heads · head 64layer 33: MLP: 6400layer 34: MHA: 25 query / 25 KV heads · head 64layer 34: MLP: 6400layer 35: MHA: 25 query / 25 KV heads · head 64layer 35: MLP: 6400layer 36: MHA: 25 query / 25 KV heads · head 64layer 36: MLP: 6400layer 37: MHA: 25 query / 25 KV heads · head 64layer 37: MLP: 6400layer 38: MHA: 25 query / 25 KV heads · head 64layer 38: MLP: 6400layer 39: MHA: 25 query / 25 KV heads · head 64layer 39: MLP: 6400layer 40: MHA: 25 query / 25 KV heads · head 64layer 40: MLP: 6400layer 41: MHA: 25 query / 25 KV heads · head 64layer 41: MLP: 6400layer 42: MHA: 25 query / 25 KV heads · head 64layer 42: MLP: 6400layer 43: MHA: 25 query / 25 KV heads · head 64layer 43: MLP: 6400layer 44: MHA: 25 query / 25 KV heads · head 64layer 44: MLP: 6400layer 45: MHA: 25 query / 25 KV heads · head 64layer 45: MLP: 6400layer 46: MHA: 25 query / 25 KV heads · head 64layer 46: MLP: 6400layer 47: MHA: 25 query / 25 KV heads · head 64layer 47: MLP: 640002447× 48normMHA: 25 query / 25 KV heads · head 64+normMLP: 6400+full attentiondense FFN

Modelled costs

From the cost model, batch size 1. Totals the lab states are in the table above; differences come from rounding, from what a lab counts, or from parts the model does not describe (listed on the about page).

Parameters (modelled)1.56B
Active per token (modelled)1.56B
Without embeddings and output head1.48B total, 1.48B active
Published weights (Hugging Face count)1.61B
KV cache per token, BF16 (layers that grow with context)300 KiB
KV cache + state at 1K tokens, BF16300 MiB
Decode FLOPs per token at 4K context4.37 GFLOP
Prefill FLOPs for a 4K prompt14.7 TFLOP

KV cache against context

GPT-2 XL: KV cache bytes against context length101001,000980 KiB9.5 MiB95 MiB950 MiBcontext (tokens)KV cache + state (BF16)GPT-2 XL

Compare with other models →

Every architecture field

FieldValueSource
d_model1,600config.jsonconfig.jsonn_embd
vocab50,257config.jsonconfig.jsonvocab_size
tied_embeddingstruecodemodelling codetransformers 5.18.0 gpt2: lm_head tied to wte
mixers.full.typeattncodemodelling codeattention block
mixers.full.heads25config.jsonconfig.jsonn_head
mixers.full.kv_heads25config.jsonconfig.jsonn_head
mixers.full.head_dim64codemodelling codetransformers 5.18.0: head_dim = hidden_size / n_head
mixers.full.biastruecodemodelling codec_attn/c_proj have biases
ffns.dense.typedensecodemodelling codeMLP
ffns.dense.d_ff6,400codemodelling codetransformers 5.18.0 gpt2: n_inner defaults to 4 * n_embd
ffns.dense.gatedfalsecodemodelling codeGELU MLP, two matrices
ffns.dense.biastruecodemodelling codeMLP biases
layout48× full/denseconfig.jsonconfig.jsonn_layer
extra_embedding_params1,638,400codemodelling codelearned position embeddings: n_positions x n_embd

Sources

Listed in the LLM Architecture Gallery checklist as “GPT-2 XL (1.5B)” (name only; see about).