File size: 14,519 Bytes
c2e6925
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
<svg xmlns="http://www.w3.org/2000/svg" width="1600" height="1840" viewBox="0 0 1600 1840" role="img"><title>Vela 2.0 Gated-DeltaNet: exact operator detail</title><desc>Bottom-to-top activation flow: pre-normalized hidden states; fused QKV projection, causal depthwise convolution and SiLU, Q/K head repetition and L2 normalization, chunk gated delta update with independent prefix state, per-value-head RMSNorm before SiLU output gating, and output projection. The three model sizes have independent parameters.</desc>
<defs><marker id="arrow" markerWidth="12" markerHeight="10" refX="11" refY="5" orient="auto" markerUnits="userSpaceOnUse"><path d="M0 0 L12 5 L0 10 L3 5 Z" fill="#111"/></marker></defs>
        <style>text{font-family:Arial,Helvetica,sans-serif;fill:#111;font-weight:400}.math{font-family:Georgia,'Times New Roman',serif;font-style:italic}.serif{font-family:Georgia,'Times New Roman',serif}</style>
<text x="480" y="120.0" font-size="27" text-anchor="middle" class="math">Mixer output  ·  L × d</text>
<g data-box="285.0 165 390 68">
<rect x="285.0" y="165" width="390" height="68" rx="7" fill="#DEDCEE" stroke="#111" stroke-width="2.2"/>
<text x="480" y="207.84" font-size="26" text-anchor="middle" class="">Output Linear: Dv → d</text>
</g>
<path d="M480,165 L480,135" fill="none" stroke="#111" stroke-width="2.3" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#arrow)"/>
<g data-box="285.0 305 390 64">
<rect x="285.0" y="305" width="390" height="64" rx="7" fill="#E6ECE8" stroke="#111" stroke-width="2.2"/>
<text x="480" y="345.84" font-size="26" text-anchor="middle" class="">Concatenate V heads</text>
</g>
<path d="M480,305 L480,233" fill="none" stroke="#111" stroke-width="2.3" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#arrow)"/>
<circle cx="480" cy="425" r="21" fill="#FFFFFF" stroke="#111" stroke-width="2.1"/>
<text x="480" y="434.61" font-size="31" text-anchor="middle" class="">⊙</text>
<path d="M480,404 L480,369" fill="none" stroke="#111" stroke-width="2.3" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#arrow)"/>
<g data-box="285.0 505 390 65">
<rect x="285.0" y="505" width="390" height="65" rx="7" fill="#FBF8CB" stroke="#111" stroke-width="2.2"/>
<text x="480" y="546.34" font-size="26" text-anchor="middle" class="">RMSNorm: 128 / V head</text>
</g>
<path d="M480,505 L480,446" fill="none" stroke="#111" stroke-width="2.3" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#arrow)"/>
<g data-box="150.0 635 660 116">
<rect x="150.0" y="635" width="660" height="116" rx="7" fill="#FCE1B8" stroke="#111" stroke-width="2.2"/>
<text x="480" y="672.25" font-size="25" text-anchor="middle" class="">Chunk Gated Delta Rule</text>
<text x="480" y="701.5" font-size="25" text-anchor="middle" class="">decay g · update β</text>
<text x="480" y="730.75" font-size="25" text-anchor="middle" class="">prefix: S₀ = 0; question: S₀ = Sₚ</text>
</g>
<path d="M480,635 L480,570" fill="none" stroke="#111" stroke-width="2.3" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#arrow)"/>
<text x="1180" y="122.0" font-size="27" text-anchor="middle" class="">Per-head Delta state</text>
<text x="1180" y="165.0" font-size="27" text-anchor="middle" class="math">Dₜ = exp(gₜ) Sₜ₋₁</text>
<text x="1180" y="196.59" font-size="27" text-anchor="middle" class="math">δₜ = βₜ (vₜ − Dₜᵀ kₜ)</text>
<text x="1180" y="228.18" font-size="27" text-anchor="middle" class="math">Sₜ = Dₜ + kₜ δₜᵀ</text>
<text x="1180" y="259.77" font-size="27" text-anchor="middle" class="math">oₜ = Sₜᵀ q̄ₜ</text>
<text x="1180" y="315.0" font-size="25" text-anchor="middle" class="math">q̄ = L2Norm(q) / √128</text>
<text x="1180" y="350.0" font-size="25" text-anchor="middle" class="">State per V head: 128 × 128</text>
<text x="1180" y="385.0" font-size="24" text-anchor="middle" class="">Prefix starts at zero; questions fork Sₚ</text>
<g data-box="110.0 1270 440 82">
<rect x="110.0" y="1270" width="440" height="82" rx="7" fill="#DEDCEE" stroke="#111" stroke-width="2.2"/>
<text x="330" y="1304.6299999999999" font-size="26" text-anchor="middle" class="">Fused QKV Linear</text>
<text x="330" y="1335.05" font-size="26" text-anchor="middle" class="">d → 2Dk + Dv</text>
</g>
<g data-box="75.0 1145 510 84">
<rect x="75.0" y="1145" width="510" height="84" rx="7" fill="#FCE1B8" stroke="#111" stroke-width="2.2"/>
<text x="330" y="1180.875" font-size="25" text-anchor="middle" class="">Causal depthwise Conv1D</text>
<text x="330" y="1210.125" font-size="25" text-anchor="middle" class="">k = 4 · prefix tail + own block</text>
</g>
<path d="M330,1270 L330,1229" fill="none" stroke="#111" stroke-width="2.3" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#arrow)"/>
<g data-box="185.0 1048 290 58">
<rect x="185.0" y="1048" width="290" height="58" rx="7" fill="#DED2EC" stroke="#111" stroke-width="2.2"/>
<text x="330" y="1086.18" font-size="27" text-anchor="middle" class="">SiLU</text>
</g>
<path d="M330,1145 L330,1106" fill="none" stroke="#111" stroke-width="2.3" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#arrow)"/>
<g data-box="75.0 945 510 65">
<rect x="75.0" y="945" width="510" height="65" rx="7" fill="#E6ECE8" stroke="#111" stroke-width="2.2"/>
<text x="330" y="986.0" font-size="25" text-anchor="middle" class="">Split Q / K / V into heads</text>
</g>
<path d="M330,1048 L330,1010" fill="none" stroke="#111" stroke-width="2.3" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#arrow)"/>
<g data-box="72.5 870 345 58">
<rect x="72.5" y="870" width="345" height="58" rx="7" fill="#E6ECE8" stroke="#111" stroke-width="2.2"/>
<text x="245" y="907.16" font-size="24" text-anchor="middle" class="">Repeat Q/K heads 1× or 2×</text>
</g>
<g data-box="80.0 770 330 80">
<rect x="80.0" y="770" width="330" height="80" rx="7" fill="#FBF8CB" stroke="#111" stroke-width="2.2"/>
<text x="245" y="803.875" font-size="25" text-anchor="middle" class="">L2Norm(Q, K)</text>
<text x="245" y="833.125" font-size="25" text-anchor="middle" class="">Q scale: 1 / √128</text>
</g>
<path d="M245,945 L245,928" fill="none" stroke="#111" stroke-width="2.3" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#arrow)"/>
<path d="M510,945 L510,780 L630,780 L630,751" fill="none" stroke="#111" stroke-width="2.3" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#arrow)"/>
<text x="542" y="858.0" font-size="26" text-anchor="middle" class="math">V</text>
<path d="M245,870 L245,850" fill="none" stroke="#111" stroke-width="2.3" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#arrow)"/>
<path d="M245,770 L245,751" fill="none" stroke="#111" stroke-width="2.3" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#arrow)"/>
<g data-box="655.0 1270 290 82">
<rect x="655.0" y="1270" width="290" height="82" rx="7" fill="#DEDCEE" stroke="#111" stroke-width="2.2"/>
<text x="800" y="1319.84" font-size="26" text-anchor="middle" class="">Linear a: d → hv</text>
</g>
<circle cx="800" cy="1214" r="20" fill="#FFFFFF" stroke="#111" stroke-width="2.1"/>
<text x="800" y="1223.3" font-size="30" text-anchor="middle" class="">+</text>
<path d="M800,1270 L800,1234" fill="none" stroke="#111" stroke-width="2.3" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#arrow)"/>
<g data-box="600.0 1182 160 63">
<rect x="600.0" y="1182" width="160" height="63" rx="7" fill="#E6ECE8" stroke="#111" stroke-width="2.2"/>
<text x="680" y="1222.0" font-size="25" text-anchor="middle" class="">dt bias</text>
</g>
<path d="M760,1214 L780,1214" fill="none" stroke="#111" stroke-width="2.3" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#arrow)"/>
<g data-box="655.0 1085 290 65">
<rect x="655.0" y="1085" width="290" height="65" rx="7" fill="#D8EBD8" stroke="#111" stroke-width="2.2"/>
<text x="800" y="1126.34" font-size="26" text-anchor="middle" class="">Softplus</text>
</g>
<path d="M800,1194 L800,1150" fill="none" stroke="#111" stroke-width="2.3" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#arrow)"/>
<circle cx="800" cy="1007" r="20" fill="#FFFFFF" stroke="#111" stroke-width="2.1"/>
<text x="800" y="1016.3" font-size="30" text-anchor="middle" class="">⊙</text>
<path d="M800,1085 L800,1027" fill="none" stroke="#111" stroke-width="2.3" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#arrow)"/>
<g data-box="895.0 975 280 64">
<rect x="895.0" y="975" width="280" height="64" rx="7" fill="#E6ECE8" stroke="#111" stroke-width="2.2"/>
<text x="1035" y="1015.84" font-size="26" text-anchor="middle" class="">−exp(A log)</text>
</g>
<path d="M895,1007 L820,1007" fill="none" stroke="#111" stroke-width="2.3" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#arrow)"/>
<path d="M800,987 L850,987 L850,725 L810,725" fill="none" stroke="#111" stroke-width="2.3" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#arrow)"/>
<text x="884" y="825.0" font-size="27" text-anchor="middle" class="math">g</text>
<g data-box="977.5 1270 285 82">
<rect x="977.5" y="1270" width="285" height="82" rx="7" fill="#DEDCEE" stroke="#111" stroke-width="2.2"/>
<text x="1120" y="1319.84" font-size="26" text-anchor="middle" class="">Linear b: d → hv</text>
</g>
<g data-box="997.5 1135 245 66">
<rect x="997.5" y="1135" width="245" height="66" rx="7" fill="#D8EBD8" stroke="#111" stroke-width="2.2"/>
<text x="1120" y="1176.84" font-size="26" text-anchor="middle" class="">Sigmoid</text>
</g>
<path d="M1120,1270 L1120,1201" fill="none" stroke="#111" stroke-width="2.3" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#arrow)"/>
<path d="M1120,1135 L1120,1095 L1238,1095 L1238,681 L810,681" fill="none" stroke="#111" stroke-width="2.3" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#arrow)"/>
<text x="1270" y="860.0" font-size="27" text-anchor="middle" class="math">β</text>
<g data-box="1295.0 1270 270 82">
<rect x="1295.0" y="1270" width="270" height="82" rx="7" fill="#DEDCEE" stroke="#111" stroke-width="2.2"/>
<text x="1430" y="1319.84" font-size="26" text-anchor="middle" class="">Linear z: d → Dv</text>
</g>
<g data-box="1302.5 1090 255 66">
<rect x="1302.5" y="1090" width="255" height="66" rx="7" fill="#DED2EC" stroke="#111" stroke-width="2.2"/>
<text x="1430" y="1132.18" font-size="27" text-anchor="middle" class="">SiLU(z)</text>
</g>
<path d="M1430,1270 L1430,1156" fill="none" stroke="#111" stroke-width="2.3" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#arrow)"/>
<path d="M1430,1090 L1430,425 L501,425" fill="none" stroke="#111" stroke-width="2.3" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#arrow)"/>
<text x="1458" y="845.0" font-size="25" text-anchor="start" class="">z gate</text>
<g data-box="235.0 1450 1130 70">
<rect x="235.0" y="1450" width="1130" height="70" rx="7" fill="#E6ECE8" stroke="#111" stroke-width="2.2"/>
<text x="800" y="1494.18" font-size="27" text-anchor="middle" class="">H = RMSNorm(X)  ·  L × d</text>
</g>
<path d="M800,1450 L800,1390" fill="none" stroke="#111" stroke-width="2.3" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M330,1390 L1430,1390" fill="none" stroke="#111" stroke-width="2.3" stroke-linecap="round" stroke-linejoin="round"/>
<circle cx="800" cy="1390" r="3.5" fill="#111"/>
<path d="M330,1390 L330,1352" fill="none" stroke="#111" stroke-width="2.3" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#arrow)"/>
<circle cx="330" cy="1390" r="3.5" fill="#111"/>
<path d="M800,1390 L800,1352" fill="none" stroke="#111" stroke-width="2.3" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#arrow)"/>
<path d="M1120,1390 L1120,1352" fill="none" stroke="#111" stroke-width="2.3" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#arrow)"/>
<circle cx="1120" cy="1390" r="3.5" fill="#111"/>
<path d="M1430,1390 L1430,1352" fill="none" stroke="#111" stroke-width="2.3" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#arrow)"/>
<circle cx="1430" cy="1390" r="3.5" fill="#111"/>
<path d="M70,1542 L1530,1542" fill="none" stroke="#111" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/>
<text x="160" y="1570.0" font-size="25" text-anchor="middle" class="">Model</text>
<text x="430" y="1570.0" font-size="25" text-anchor="middle" class="">d</text>
<text x="740" y="1570.0" font-size="25" text-anchor="middle" class="">Q/K heads / V heads</text>
<text x="1115" y="1570.0" font-size="25" text-anchor="middle" class="">Q/K repetition</text>
<text x="1420" y="1570.0" font-size="25" text-anchor="middle" class="">Dv</text>
<path d="M70,1585 L1530,1585" fill="none" stroke="#111" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round"/>
<text x="160" y="1623.0" font-size="25" text-anchor="middle" class="">0.8B</text>
<text x="430" y="1623.0" font-size="25" text-anchor="middle" class="">1024</text>
<text x="740" y="1623.0" font-size="25" text-anchor="middle" class="">16 / 16</text>
<text x="1115" y="1623.0" font-size="25" text-anchor="middle" class="">1×</text>
<text x="1420" y="1623.0" font-size="25" text-anchor="middle" class="">2048</text>
<text x="160" y="1661.0" font-size="25" text-anchor="middle" class="">4B</text>
<text x="430" y="1661.0" font-size="25" text-anchor="middle" class="">2560</text>
<text x="740" y="1661.0" font-size="25" text-anchor="middle" class="">16 / 32</text>
<text x="1115" y="1661.0" font-size="25" text-anchor="middle" class="">2×</text>
<text x="1420" y="1661.0" font-size="25" text-anchor="middle" class="">4096</text>
<text x="160" y="1699.0" font-size="25" text-anchor="middle" class="">9B</text>
<text x="430" y="1699.0" font-size="25" text-anchor="middle" class="">4096</text>
<text x="740" y="1699.0" font-size="25" text-anchor="middle" class="">16 / 32</text>
<text x="1115" y="1699.0" font-size="25" text-anchor="middle" class="">2×</text>
<text x="1420" y="1699.0" font-size="25" text-anchor="middle" class="">4096</text>
<path d="M70,1715 L1530,1715" fill="none" stroke="#111" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/>
<text x="800" y="1747.0" font-size="24" text-anchor="middle" class="">Dk = 2048; dk = dv = 128. Independent checkpoints; shared operator topology.</text>
<text x="800" y="1800.0" font-size="31" text-anchor="middle" class="serif">(g) Gated-DeltaNet: convolution, delta update and gated readout</text>
</svg>