inspector / examples /04-full.jsonc
lysandre's picture
lysandre HF Staff
Deploy architecture inspector
3335a58 verified
Raw
History Blame Contribute Delete
8.79 kB
// 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"
}
}