// 04 — the complete ArchitectureTemplate (all tiers together), lightly annotated. // Faithful trimmed copy of artifacts/mistral.json (a modular, GQA, sliding-window decoder LLM). // JSONC = JSON + // comments (not machine-parseable as-is); "…" marks omitted repetition. // Regenerate the exact file: python utils/architecture_ir/generate_architecture_ir.py --architectures mistral --output-dir out { "schema_version": "architecture-template-v0", "model_type": "mistral", // modular inheritance (diff_size metric lives in modular_graph.json) "extends": "llama", "patches": [ { "relation": "inherits", "target_class": "MistralAttention", "component_kind": "attention", "parent_class": "LlamaAttention", "overridden": { "methods": ["__init__", "forward"] } }, { "relation": "new", "target_class": "MistralForQuestionAnswering", "component_kind": null, "parent_class": "MistralPreTrainedModel" } // … other overridden classes (MistralMLP, MistralModel, …) ], // model-level facts (multimodal reads the text backbone) "architecture": { "view": "decoder", "family": "causal_lm", "attention_variant": "GQA", "positional": "rope", "is_moe": false, "mixer": "attention", "sliding_window": 4096, "tie_word_embeddings": false }, // what it can do / run with "capabilities": { "attention_backends": ["eager", "sdpa", "flash_attention", "flex_attention"], "attention_patterns": ["sliding"], "attention_schedule": null, "task_heads": ["causal_lm", "question_answering", "sequence_classification", "token_classification"], "tensor_parallel": true, "kernels": { "RMSNorm": ["kernels-community/liger-kernels", "kernels-community/rmsnorm", "kernels-community/mlx_rmsnorm"] } }, // config identity + the parametric surface (full config NOT serialized) "config": { "class_name": "MistralConfig", "module": "transformers.models.mistral.configuration_mistral", "model_type": "mistral", "referenced_fields": { "num_hidden_layers": 32 }, "salient_fields": { "hidden_size": 4096, "intermediate_size": 14336, "vocab_size": 32000, "num_attention_heads": 32, "num_key_value_heads": 8, "head_dim": 128, "max_position_embeddings": 131072, "sliding_window": 4096, "hidden_act": "silu", "tie_word_embeddings": false } }, // nodes outside any repeat body (leaf nodes omit `children`) "components": [ { "id": "model", "kind": "model", "class_name": "MistralModel", "path_pattern": "model", "children": ["embed_tokens", "decoder_layers", "norm", "rotary_emb"] }, { "id": "embed_tokens", "kind": "embedding", "class_name": "Embedding", "path_pattern": "model.embed_tokens", "attributes": { "num_embeddings": "config.vocab_size", "embedding_dim": "config.hidden_size" } }, { "id": "norm", "kind": "normalization", "class_name": "MistralRMSNorm", "path_pattern": "model.norm", "attributes": { "norm_type": "rms", "kernel": "RMSNorm" } }, { "id": "rotary_emb", "kind": "position", "class_name": "MistralRotaryEmbedding", "path_pattern": "model.rotary_emb", "attributes": { "scheme": "rope", "rope_theta": 10000.0, "head_dim": "config.head_dim" } } ], // the repeated block body, serialized once ({i} = layer index) "templates": [ { "id": "decoder_layer", "kind": "transformer_block", "class_name": "MistralDecoderLayer", "path_pattern": "model.layers.{i}", "children": ["decoder_layer.input_layernorm", "decoder_layer.self_attn", "decoder_layer.post_attention_layernorm", "decoder_layer.mlp"] }, { "id": "decoder_layer.self_attn", "kind": "attention", "class_name": "MistralAttention", "path_pattern": "model.layers.{i}.self_attn", "children": ["decoder_layer.self_attn.q_proj", "decoder_layer.self_attn.k_proj", "decoder_layer.self_attn.v_proj", "decoder_layer.self_attn.o_proj"], "attributes": { "variant": "GQA", "n_heads": 32, "n_kv_heads": 8, "head_dim": 128, "rope": true, "sliding_window": 4096, "pattern": "sliding" } }, // GQA: q/o are hidden-sized; k/v are num_kv_heads*head_dim = 1024 { "id": "decoder_layer.self_attn.q_proj", "kind": "projection", "class_name": "Linear", "path_pattern": "model.layers.{i}.self_attn.q_proj", "attributes": { "in_features": "config.hidden_size", "out_features": 4096, "tp": "colwise" } }, { "id": "decoder_layer.self_attn.k_proj", "kind": "projection", "class_name": "Linear", "path_pattern": "model.layers.{i}.self_attn.k_proj", "attributes": { "in_features": "config.hidden_size", "out_features": 1024, "tp": "colwise" } }, // … v_proj (1024, colwise), o_proj (4096 → config.hidden_size, rowwise) { "id": "decoder_layer.mlp", "kind": "feed_forward", "class_name": "MistralMLP", "path_pattern": "model.layers.{i}.mlp", "children": ["decoder_layer.mlp.gate_proj", "decoder_layer.mlp.up_proj", "decoder_layer.mlp.down_proj"], "attributes": { "hidden_size": 4096, "intermediate_size": 14336, "activation": "silu" } }, { "id": "decoder_layer.mlp.gate_proj", "kind": "projection", "class_name": "Linear", "path_pattern": "model.layers.{i}.mlp.gate_proj", "attributes": { "in_features": "config.hidden_size", "out_features": "config.intermediate_size", "tp": "colwise" } }, // … up_proj (colwise), down_proj (config.intermediate_size → config.hidden_size, rowwise) { "id": "decoder_layer.input_layernorm", "kind": "normalization", "class_name": "MistralRMSNorm", "path_pattern": "model.layers.{i}.input_layernorm", "attributes": { "norm_type": "rms", "kernel": "RMSNorm" } } // … post_attention_layernorm ], // 32 identical layers collapsed to one symbolic entry, count kept parametric "repeats": [ { "id": "decoder_layers", "kind": "symbolic_repeat", "body": "decoder_layer", "count_expr": "config.num_hidden_layers", "count": 32, "count_source": "config", "index_symbol": "i", "container_path_pattern": "model.layers", "item_path_pattern": "model.layers.{i}", "repeated_class_name": "MistralDecoderLayer" } ], // coarse dataflow. kinds: data | residual | mask | position | cross_attention | route | cache_read | cache_write "edges": [ { "source": "embed_tokens", "target": "decoder_layers", "kind": "data" }, { "source": "decoder_layers", "target": "norm", "kind": "data" }, // block-level flow (pre-norm), re-grounded from the observed forward: { "source": "decoder_layer.input_layernorm", "target": "decoder_layer.self_attn", "kind": "data", "provenance": "observed_forward" }, { "source": "decoder_layer.self_attn", "target": "decoder_layer.post_attention_layernorm", "kind": "data", "provenance": "observed_forward" }, { "source": "decoder_layer.post_attention_layernorm", "target": "decoder_layer.mlp", "kind": "data", "provenance": "observed_forward" }, // intra-module fan-out/fan-in (role-based; q/k/v parallel, not chained): { "source": "decoder_layer.self_attn", "target": "decoder_layer.self_attn.q_proj", "kind": "data", "provenance": "intra_module" }, { "source": "decoder_layer.self_attn.q_proj", "target": "decoder_layer.self_attn.o_proj", "kind": "data", "provenance": "intra_module" }, { "source": "decoder_layer.mlp.gate_proj", "target": "decoder_layer.mlp.down_proj", "kind": "data", "provenance": "intra_module" }, { "source": "decoder_layer", "target": "decoder_layer.self_attn", "kind": "residual" }, { "source": "rotary_emb", "target": "decoder_layer.self_attn", "kind": "position" }, { "source": "input:attention_mask", "target": "decoder_layer.self_attn", "kind": "mask" }, { "source": "state:kv_cache", "target": "decoder_layer.self_attn", "kind": "cache_read" }, { "source": "decoder_layer.self_attn", "target": "state:kv_cache", "kind": "cache_write" } ], // observed tensor shapes (symbolized), keyed by node id; order lives in edges "dataflow": { "source": "observed_forward_meta", "input": { "name": "input_ids", "shape": ["B", "S"] }, "output": { "shape": ["B", "S", "config.hidden_size"] }, "shapes": { "embed_tokens": { "in": ["B", "S"], "out": ["B", "S", "config.hidden_size"] }, "decoder_layer.self_attn": { "in": ["B", "S", "config.hidden_size"], "out": ["B", "S", "config.hidden_size"] } // … norm, mlp, the other block children } }, // which classes this IR was introspected from (resolution strategy is invariant → in SPEC, not here) "provenance": { "config_class": "MistralConfig", "config_module": "transformers.models.mistral.configuration_mistral", "model_class": "MistralModel", "model_module": "transformers.models.mistral.modeling_mistral" } }