ember.cpp 0.1.0
C++ inference engine for Llama-family and paperkiln models (CPU, CUDA, WebAssembly)
Loading...
Searching...
No Matches
graph_ir_schema.h
Go to the documentation of this file.
1#pragma once
2// The IR JSON Schema (keramos ir.schema.json; IR_SPEC.md section 10.2), vendored for
3// graph_ir_validate.cpp (section 10.1 rule 1). Generated by tools/ir_schema_header.py; do not edit:
4// regenerate from keramos's file at its tag, and --check that the copy is current.
5// Source sha256: 41c6e76bdc494657fd444081d2b224d83f34c29c84dc8a889973e6d4f8b1e285
6namespace ember_ir {
7inline const char* const kIrSchemaPieces[] = {
8 R"IRS({"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"urn:paperkiln:ir:1","title":"paperkiln IR document, version 1","description":"The structure of an IR document (spec/IR_SPEC.md sections 3, 5, 6 and 7). Keys starting with '_' are prose and allowed anywhere. The semantic rules (section 10.1) are checked by tools/ir_validate.py.","type":"object","required":["ir_version","family_hint","model","embed","block","head"],"properties":{"ir_version":{"type":"integer","minimum":0},"family_hint":{"type":"string"},"model":{"$ref":"#/$defs/model"},"tokenizer":{"$ref":"#/$defs/tokenizer"},"inputs":{"type":"array","items":{"anyOf":[{"type":"string"},{"$ref":"#/$defs/io"}]}},"outputs":{"type":"array","items":{"anyOf":[{"type":"string"},{"$ref":"#/$defs/io"}]}},"modes":{"type":"object","additionalProperties":{"type":"string"}},"embed":{"$ref":"#/$defs/section"},"block":{"$ref":"#/$defs/block"},"head":{"$ref":"#/$defs/section"}},"patternProperties":{"^_":true},"additionalProperties":false,"$defs":{"name":{"type":"string","minLength":1},"names":{"type":"array","items":{"$ref":"#/$defs/name"}},"posint":{"type":"integer","minimum":1},"nonneg":{"type":"integer","minimum":0},"per_layer":{"type":"object","required":["per_layer"],"properties":{"per_layer":{"type":"array"}},"patternProperties":{"^_":true},"additionalProperties":false},"apply":{"anyOf":[{"type":"boolean"},{"$ref":"#/$defs/per_layer"}]},"int_or_layers":{"anyOf":[{"$ref":"#/$defs/nonneg"},{"$ref":"#/$defs/per_layer"}]},"num_or_layers":{"anyOf":[{"type":"number"},{"$ref":"#/$defs/per_layer"}]},"io":{"type":"object","required":["name"],"properties":{"name":{"type":"string"},"kind":{"type":"string"},"note":{"type":"string"}},"patternProperties":{"^_":true},"additionalProperties":false},"model":{"type":"object","required":["vocab","d","n_layers","ctx"],"properties":{"vocab":{"$ref":"#/$defs/posint"},"d":{"$ref":"#/$defs/posint"},"n_layers":{"$ref":"#/$defs/posint"},"ctx":{"$ref":"#/$defs/posint"},"dtype":{"enum":["f32"]}},"patternProperties":{"^_":true},"additionalProperties":false},"tokenizer":{"type":"object","properties":{"type":{"type":"string"},"source":{"type":"string"},"bos":{"type":["integer","null"]},"specials":{"type":"object","additionalProperties":{"type":"integer"}}},"patternProperties":{"^_":true},"additionalProperties":false},"section":{"type":"object","required":["nodes"],"properties":{"nodes":{"type":"array","items":{"$ref":"#/$defs/node"}}},"patternProperties":{"^_":true},"additionalProperties":false},"block":{"type":"object","required":["repeat","nodes"],"properties":{"repeat":{"$ref":"#/$defs/posint"},"state":{"type":"array","items":{"$ref":"#/$defs/slot"}},"nodes":{"type":"array","items":{"$ref":"#/$defs/node"}},"weight_index":{"$ref":"#/$defs/per_layer"}},"patternProperties":{"^_":true},"additionalProperties":false},"slot":{"type":"object","required":["name","kind"],"properties":{"name":{"$ref":"#/$defs/name"},"kind":{"enum":["kv","recurrent"]}},"allOf":[{"if":{"properties":{"kind":{"const":"kv"}},"required":["kind"]},"then":{"$ref":"#/$defs/slot_kv"}},{"if":{"properties":{"kind":{"const":"recurrent"}},"required":["kind"]},"then":{"$ref":"#/$defs/slot_recurrent"}}]},"slot_kv":{"type":"object","required":["name","kind","heads","kv_heads","head_dim","max_len","window","sinks"],"properties":{"name":true,"kind":true,"heads":{"anyOf":[{"$ref":"#/$defs/posint"},{"$ref":"#/$defs/per_layer"}]},"kv_heads":{"anyOf":[{"$ref":"#/$defs/posint"},{"$ref":"#/$defs/per_layer"}]},"head_dim":{"anyOf":[{"$ref":"#/$defs/posint"},{"$ref":"#/$defs/per_layer"}]},"max_len":{"anyOf":[{"$ref":"#/$defs/posint"},{"$ref":"#/$defs/per_layer"}]},"window":{"$ref":"#/$defs/int_or_layers"},"sinks":{"$ref":"#/$defs/int_or_layers"},"dtype":{"enum":["f32"]},"evict":{"enum":["turn_state"]},"kv_rows":{"enum":["active"]},"kv_from":true},"patternProperties":{"^_":true},"additionalProperties":false},"slot_recurrent":{"type":"object","required":["name","kind","op","dtype","tensors"],"properties":{"nam)IRS",
9 R"IRS(e":true,"kind":true,"op":{"enum":["linear_attention","ssm_scan","conv1d_causal","selective_scan","recurrence"]},"dtype":{"enum":["f32"]},"tensors":{"type":"array","minItems":1,"items":{"type":"object","required":["name","shape","init"],"properties":{"name":{"$ref":"#/$defs/name"},"shape":{"type":"array","minItems":1,"items":{"$ref":"#/$defs/posint"}},"init":{"enum":[0,"body"]}},"patternProperties":{"^_":true},"additionalProperties":false}}},"patternProperties":{"^_":true},"additionalProperties":false},"node":{"type":"object","required":["op","in","out"],"properties":{"op":{"enum":["embedding","pos_embedding","linear","scale","split","rmsnorm","layernorm","gelu","silu","sigmoid","relu","add","mul","sub","affine","mul_col","rms_row","rope","attention","moe_ffn","list","append","depth_attend","expr","linear_attention","ssm_scan","conv1d_causal","selective_scan","depth_route","recurrence","mla_attention"]},"in":{"$ref":"#/$defs/names"}},"allOf":[{"if":{"properties":{"op":{"const":"embedding"}}},"then":{"$ref":"#/$defs/op_embedding"}},{"if":{"properties":{"op":{"const":"pos_embedding"}}},"then":{"$ref":"#/$defs/op_weight_only"}},{"if":{"properties":{"op":{"const":"linear"}}},"then":{"$ref":"#/$defs/op_linear"}},{"if":{"properties":{"op":{"const":"scale"}}},"then":{"$ref":"#/$defs/op_scale"}},{"if":{"properties":{"op":{"const":"split"}}},"then":{"$ref":"#/$defs/op_split"}},{"if":{"properties":{"op":{"const":"rmsnorm"}}},"then":{"$ref":"#/$defs/op_rmsnorm"}},{"if":{"properties":{"op":{"const":"layernorm"}}},"then":{"$ref":"#/$defs/op_layernorm"}},{"if":{"properties":{"op":{"const":"gelu"}}},"then":{"$ref":"#/$defs/op_gelu"}},{"if":{"properties":{"op":{"enum":["silu","sigmoid","relu","add","mul","sub","mul_col","list","append"]}}},"then":{"$ref":"#/$defs/op_plain"}},{"if":{"properties":{"op":{"const":"affine"}}},"then":{"$ref":"#/$defs/op_affine"}},{"if":{"properties":{"op":{"const":"rms_row"}}},"then":{"$ref":"#/$defs/op_rms_row"}},{"if":{"properties":{"op":{"const":"rope"}}},"then":{"$ref":"#/$defs/op_rope"}},{"if":{"properties":{"op":{"const":"attention"}}},"then":{"$ref":"#/$defs/op_attention"}},{"if":{"properties":{"op":{"const":"moe_ffn"}}},"then":{"$ref":"#/$defs/op_moe_ffn"}},{"if":{"properties":{"op":{"const":"depth_attend"}}},"then":{"$ref":"#/$defs/op_depth_attend"}},{"if":{"properties":{"op":{"const":"expr"}}},"then":{"$ref":"#/$defs/op_expr"}},{"if":{"properties":{"op":{"const":"linear_attention"}}},"then":{"$ref":"#/$defs/op_linear_attention"}},{"if":{"properties":{"op":{"const":"ssm_scan"}}},"then":{"$ref":"#/$defs/op_ssm_scan"}},{"if":{"properties":{"op":{"const":"conv1d_causal"}}},"then":{"$ref":"#/$defs/op_conv1d_causal"}},{"if":{"properties":{"op":{"const":"selective_scan"}}},"then":{"$ref":"#/$defs/op_selective_scan"}},{"if":{"properties":{"op":{"const":"depth_route"}}},"then":{"$ref":"#/$defs/op_depth_route"}},{"if":{"properties":{"op":{"const":"recurrence"}}},"then":{"$ref":"#/$defs/op_recurrence"}},{"if":{"properties":{"op":{"const":"mla_attention"}}},"then":{"$ref":"#/$defs/op_mla_attention"}}]},"op_embedding":{"required":["weight"],"properties":{"op":true,"in":true,"apply":{"$ref":"#/$defs/apply"},"out":{"$ref":"#/$defs/name"},"tensor_index":{"enum":["application"]},"weight":{"$ref":"#/$defs/name"},"state_weight":{"$ref":"#/$defs/name"}},"patternProperties":{"^_":true},"additionalProperties":false},"op_weight_only":{"required":["weight"],"properties":{"op":true,"in":true,"apply":{"$ref":"#/$defs/apply"},"out":{"$ref":"#/$defs/name"},"tensor_index":{"enum":["application"]},"weight":{"$ref":"#/$defs/name"}},"patternProperties":{"^_":true},"additionalProperties":false},"op_linear":{"required":["weight"],"properties":{"op":true,"in":true,"apply":{"$ref":"#/$defs/apply"},"out":{"$ref":"#/$defs/name"},"tensor_index":{"enum":["application"]},"weight":{"$ref":"#/$defs/name"},"bias":{"type":["string","null"]},"tied_to":{"$ref":"#/$defs/name"}},"patternProperties":{"^_":true},"additionalProperties":false},"op_scale":{"r)IRS",
10 R"IRS(equired":["weight"],"properties":{"op":true,"in":true,"apply":{"$ref":"#/$defs/apply"},"out":{"$ref":"#/$defs/name"},"tensor_index":{"enum":["application"]},"weight":{"$ref":"#/$defs/name"},"bias":{"type":["string","null"]}},"patternProperties":{"^_":true},"additionalProperties":false},"op_split":{"required":["sizes"],"properties":{"op":true,"in":true,"apply":{"$ref":"#/$defs/apply"},"out":{"$ref":"#/$defs/names"},"sizes":{"type":"array","minItems":1,"items":{"$ref":"#/$defs/posint"}},"groups":{"$ref":"#/$defs/posint"}},"patternProperties":{"^_":true},"additionalProperties":false},"op_rmsnorm":{"required":["weight","eps"],"properties":{"op":true,"in":true,"apply":{"$ref":"#/$defs/apply"},"out":{"$ref":"#/$defs/name"},"tensor_index":{"enum":["application"]},"weight":{"$ref":"#/$defs/name"},"eps":{"$ref":"#/$defs/num_or_layers"},"group":{"anyOf":[{"$ref":"#/$defs/posint"},{"$ref":"#/$defs/per_layer"}]},"weight_offset":{"$ref":"#/$defs/num_or_layers"}},"patternProperties":{"^_":true},"additionalProperties":false},"op_layernorm":{"required":["weight","bias","eps"],"properties":{"op":true,"in":true,"apply":{"$ref":"#/$defs/apply"},"out":{"$ref":"#/$defs/name"},"tensor_index":{"enum":["application"]},"weight":{"$ref":"#/$defs/name"},"bias":{"$ref":"#/$defs/name"},"eps":{"$ref":"#/$defs/num_or_layers"}},"patternProperties":{"^_":true},"additionalProperties":false},"op_gelu":{"required":["approx"],"properties":{"op":true,"in":true,"apply":{"$ref":"#/$defs/apply"},"out":{"$ref":"#/$defs/name"},"approx":{"anyOf":[{"enum":["tanh","none"]},{"$ref":"#/$defs/per_layer"}]}},"patternProperties":{"^_":true},"additionalProperties":false},"op_plain":{"properties":{"op":true,"in":true,"apply":{"$ref":"#/$defs/apply"},"out":{"$ref":"#/$defs/name"}},"patternProperties":{"^_":true},"additionalProperties":false},"op_affine":{"required":["scale","shift"],"properties":{"op":true,"in":true,"apply":{"$ref":"#/$defs/apply"},"out":{"$ref":"#/$defs/name"},"scale":{"$ref":"#/$defs/num_or_layers"},"shift":{"$ref":"#/$defs/num_or_layers"}},"patternProperties":{"^_":true},"additionalProperties":false},"op_rms_row":{"required":["eps"],"properties":{"op":true,"in":true,"apply":{"$ref":"#/$defs/apply"},"out":{"$ref":"#/$defs/name"},"eps":{"$ref":"#/$defs/num_or_layers"}},"patternProperties":{"^_":true},"additionalProperties":false},"op_rope":{"required":["heads","head_dim","theta","rope_heads","pairing"],"properties":{"op":true,"in":true,"apply":{"$ref":"#/$defs/apply"},"out":{"$ref":"#/$defs/names"},"heads":{"anyOf":[{"$ref":"#/$defs/posint"},{"$ref":"#/$defs/per_layer"}]},"kv_heads":{"anyOf":[{"$ref":"#/$defs/posint"},{"$ref":"#/$defs/per_layer"}]},"head_dim":{"anyOf":[{"$ref":"#/$defs/posint"},{"$ref":"#/$defs/per_layer"}]},"theta":{"$ref":"#/$defs/num_or_layers"},"rope_heads":{"anyOf":[{"enum":["all","first"]},{"$ref":"#/$defs/per_layer"}]},"pairing":{"anyOf":[{"enum":["interleaved","neox"]},{"$ref":"#/$defs/per_layer"}]},"n_rot":{"anyOf":[{"$ref":"#/$defs/posint"},{"$ref":"#/$defs/per_layer"}]},"freq_scale":{"$ref":"#/$defs/num_or_layers"},"freq_factors":{"anyOf":[{"$ref":"#/$defs/name"},{"type":"object","required":["short","long","original_ctx"],"properties":{"short":{"$ref":"#/$defs/name"},"long":{"$ref":"#/$defs/name"},"original_ctx":{"$ref":"#/$defs/posint"}},"patternProperties":{"^_":true},"additionalProperties":false},{"type":"array","minItems":1,"items":{"type":"number"}}]},"attn_factor":{"$ref":"#/$defs/num_or_layers"}},"patternProperties":{"^_":true},"additionalProperties":false},"op_attention":{"required":["state","heads","kv_heads","head_dim","scale","causal","window","sinks"],"properties":{"op":true,"in":true,"out":{"$ref":"#/$defs/name"},"state":{"$ref":"#/$defs/name"},"heads":{"anyOf":[{"$ref":"#/$defs/posint"},{"$ref":"#/$defs/per_layer"}]},"kv_heads":{"anyOf":[{"$ref":"#/$defs/posint"},{"$ref":"#/$defs/per_layer"}]},"head_dim":{"anyOf":[{"$ref":"#/$defs/posint"},{"$ref":"#/$defs/per_layer"}]},"scale":{"$ref":"#/$defs/num_or_layers"},"causal":{)IRS",
11 R"IRS("anyOf":[{"type":"boolean"},{"$ref":"#/$defs/per_layer"}]},"window":{"$ref":"#/$defs/int_or_layers"},"sinks":{"$ref":"#/$defs/int_or_layers"},"mask":{"anyOf":[{"enum":["causal","turn_state"]},{"$ref":"#/$defs/per_layer"}]},"position_bias":{"type":"object","required":["weight","buckets"],"properties":{"weight":{"$ref":"#/$defs/name"},"buckets":{"type":"array","minItems":1,"items":{"$ref":"#/$defs/nonneg"}}},"patternProperties":{"^_":true},"additionalProperties":false},"relative_kv":{"type":"object","required":["key","max_distance"],"properties":{"key":{"$ref":"#/$defs/name"},"value":{"anyOf":[{"$ref":"#/$defs/name"},{"type":"null"}]},"max_distance":{"$ref":"#/$defs/nonneg"}},"patternProperties":{"^_":true},"additionalProperties":false},"softcap":{"$ref":"#/$defs/num_or_layers"},"softmax":{"type":"string"}},"patternProperties":{"^_":true},"additionalProperties":false},"op_mla_attention":{"required":["state","heads","kv_rank","qk_nope","qk_rope","v_head_dim","k_b","v_b","scale","causal","window","sinks"],"properties":{"op":true,"in":true,"out":{"$ref":"#/$defs/name"},"state":{"$ref":"#/$defs/name"},"heads":{"anyOf":[{"$ref":"#/$defs/posint"},{"$ref":"#/$defs/per_layer"}]},"kv_rank":{"anyOf":[{"$ref":"#/$defs/posint"},{"$ref":"#/$defs/per_layer"}]},"qk_nope":{"anyOf":[{"$ref":"#/$defs/posint"},{"$ref":"#/$defs/per_layer"}]},"qk_rope":{"anyOf":[{"$ref":"#/$defs/posint"},{"$ref":"#/$defs/per_layer"}]},"v_head_dim":{"anyOf":[{"$ref":"#/$defs/posint"},{"$ref":"#/$defs/per_layer"}]},"k_b":{"$ref":"#/$defs/name"},"v_b":{"$ref":"#/$defs/name"},"scale":{"$ref":"#/$defs/num_or_layers"},"causal":{"anyOf":[{"type":"boolean"},{"$ref":"#/$defs/per_layer"}]},"window":{"$ref":"#/$defs/int_or_layers"},"sinks":{"$ref":"#/$defs/int_or_layers"}},"patternProperties":{"^_":true},"additionalProperties":false},"op_moe_ffn":{"required":["router","experts","n_experts","top_k","gate_norm","activation"],"properties":{"op":true,"in":true,"apply":{"$ref":"#/$defs/apply"},"out":{"$ref":"#/$defs/name"},"tensor_index":{"enum":["application"]},"router":{"$ref":"#/$defs/name"},"experts":{"type":"object","required":["gate","up","down"],"properties":{"gate":{"$ref":"#/$defs/name"},"up":{"$ref":"#/$defs/name"},"down":{"$ref":"#/$defs/name"}},"patternProperties":{"^_":true},"additionalProperties":false},"n_experts":{"anyOf":[{"$ref":"#/$defs/posint"},{"$ref":"#/$defs/per_layer"}]},"top_k":{"anyOf":[{"$ref":"#/$defs/posint"},{"$ref":"#/$defs/per_layer"}]},"gate_norm":{"anyOf":[{"enum":["renorm","raw"]},{"$ref":"#/$defs/per_layer"}]},"activation":{"anyOf":[{"enum":["silu"]},{"$ref":"#/$defs/per_layer"}]},"scoring":{"anyOf":[{"enum":["softmax","sigmoid"]},{"$ref":"#/$defs/per_layer"}]},"selection_bias":{"$ref":"#/$defs/name"},"groups":{"type":"object","required":["n","top"],"properties":{"n":{"$ref":"#/$defs/posint"},"top":{"$ref":"#/$defs/posint"}},"patternProperties":{"^_":true},"additionalProperties":false},"routing":{"type":"string"}},"patternProperties":{"^_":true},"additionalProperties":false},"op_depth_attend":{"required":["weight"],"properties":{"op":true,"in":true,"apply":{"$ref":"#/$defs/apply"},"out":{"$ref":"#/$defs/name"},"tensor_index":{"enum":["application"]},"weight":{"$ref":"#/$defs/name"},"eps":{"$ref":"#/$defs/num_or_layers"}},"patternProperties":{"^_":true},"additionalProperties":false},"op_expr":{"required":["expr"],"properties":{"op":true,"in":true,"apply":{"$ref":"#/$defs/apply"},"out":{"$ref":"#/$defs/name"},"expr":{"type":"string"}},"patternProperties":{"^_":true},"additionalProperties":false},"op_linear_attention":{"required":["state","heads","head_dim","feature_map","den_floor","causal"],"properties":{"op":true,"in":true,"out":{"$ref":"#/$defs/name"},"state":{"$ref":"#/$defs/name"},"heads":{"anyOf":[{"$ref":"#/$defs/posint"},{"$ref":"#/$defs/per_layer"}]},"head_dim":{"anyOf":[{"$ref":"#/$defs/posint"},{"$ref":"#/$defs/per_layer"}]},"feature_map":{"anyOf":[{"enum":["elu_plus_one"]},{"$ref":"#/$defs/per_layer"}]},"den_floor":{"$ref":"#/$defs/num_)IRS",
12 R"IRS(or_layers"},"causal":{"anyOf":[{"type":"boolean"},{"$ref":"#/$defs/per_layer"}]}},"patternProperties":{"^_":true},"additionalProperties":false},"op_ssm_scan":{"required":["state","n","a","b","c","d"],"properties":{"op":true,"in":true,"out":{"$ref":"#/$defs/name"},"state":{"$ref":"#/$defs/name"},"tensor_index":{"enum":["application"]},"n":{"anyOf":[{"$ref":"#/$defs/posint"},{"$ref":"#/$defs/per_layer"}]},"a":{"$ref":"#/$defs/name"},"b":{"$ref":"#/$defs/name"},"c":{"$ref":"#/$defs/name"},"d":{"$ref":"#/$defs/name"}},"patternProperties":{"^_":true},"additionalProperties":false},"op_conv1d_causal":{"required":["state","weight","channels","kernel"],"properties":{"op":true,"in":true,"out":{"$ref":"#/$defs/name"},"state":{"$ref":"#/$defs/name"},"tensor_index":{"enum":["application"]},"weight":{"$ref":"#/$defs/name"},"bias":{"type":["string","null"]},"channels":{"anyOf":[{"$ref":"#/$defs/posint"},{"$ref":"#/$defs/per_layer"}]},"kernel":{"anyOf":[{"$ref":"#/$defs/posint"},{"$ref":"#/$defs/per_layer"}]}},"patternProperties":{"^_":true},"additionalProperties":false},"op_selective_scan":{"required":["state","a","channels","d_state"],"properties":{"op":true,"in":true,"out":{"$ref":"#/$defs/name"},"state":{"$ref":"#/$defs/name"},"tensor_index":{"enum":["application"]},"a":{"$ref":"#/$defs/name"},"d":{"type":["string","null"]},"channels":{"anyOf":[{"$ref":"#/$defs/posint"},{"$ref":"#/$defs/per_layer"}]},"d_state":{"anyOf":[{"$ref":"#/$defs/posint"},{"$ref":"#/$defs/per_layer"}]},"dt_softplus":{"anyOf":[{"type":"boolean"},{"$ref":"#/$defs/per_layer"}]}},"patternProperties":{"^_":true},"additionalProperties":false},"op_recurrence":{"required":["state","index","inputs","update","readout"],"properties":{"op":true,"in":true,"out":{"$ref":"#/$defs/name"},"state":{"$ref":"#/$defs/name"},"tensor_index":{"enum":["application"]},"index":{"type":"object","additionalProperties":{"$ref":"#/$defs/posint"}},"inputs":{"type":"array","minItems":1,"items":{"type":"string"}},"weights":{"type":"object","additionalProperties":{"$ref":"#/$defs/name"}},"init":{"type":"array","items":{"type":"string"}},"let":{"type":"array","items":{"type":"string"}},"update":{"type":"array","minItems":1,"items":{"type":"string"}},"readout":{"type":"string"}},"patternProperties":{"^_":true},"additionalProperties":false},"op_depth_route":{"required":["weight","route","n_rec","gate","step"],"properties":{"op":true,"in":true,"out":{"$ref":"#/$defs/name"},"weight":{"$ref":"#/$defs/name"},"route":{"enum":["token_choice"]},"n_rec":{"$ref":"#/$defs/posint"},"gate":{"enum":["score","none"]},"step":{"$ref":"#/$defs/per_layer"}},"patternProperties":{"^_":true},"additionalProperties":false}}})IRS",
13};
14} // namespace ember_ir
Definition api.h:20
const char *const kIrSchemaPieces[]