hp-l33 commited on
Commit
28a77d3
·
verified ·
0 Parent(s):

initial commit

Browse files
.gitattributes ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
5
+ *.ckpt filter=lfs diff=lfs merge=lfs -text
6
+ *.ftz filter=lfs diff=lfs merge=lfs -text
7
+ *.gz filter=lfs diff=lfs merge=lfs -text
8
+ *.h5 filter=lfs diff=lfs merge=lfs -text
9
+ *.joblib filter=lfs diff=lfs merge=lfs -text
10
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
+ *.model filter=lfs diff=lfs merge=lfs -text
13
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
14
+ *.npy filter=lfs diff=lfs merge=lfs -text
15
+ *.npz filter=lfs diff=lfs merge=lfs -text
16
+ *.onnx filter=lfs diff=lfs merge=lfs -text
17
+ *.ot filter=lfs diff=lfs merge=lfs -text
18
+ *.parquet filter=lfs diff=lfs merge=lfs -text
19
+ *.pb filter=lfs diff=lfs merge=lfs -text
20
+ *.pickle filter=lfs diff=lfs merge=lfs -text
21
+ *.pkl filter=lfs diff=lfs merge=lfs -text
22
+ *.pt filter=lfs diff=lfs merge=lfs -text
23
+ *.pth filter=lfs diff=lfs merge=lfs -text
24
+ *.rar filter=lfs diff=lfs merge=lfs -text
25
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
26
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
28
+ *.tar filter=lfs diff=lfs merge=lfs -text
29
+ *.tflite filter=lfs diff=lfs merge=lfs -text
30
+ *.tgz filter=lfs diff=lfs merge=lfs -text
31
+ *.wasm filter=lfs diff=lfs merge=lfs -text
32
+ *.xz filter=lfs diff=lfs merge=lfs -text
33
+ *.zip filter=lfs diff=lfs merge=lfs -text
34
+ *.zst filter=lfs diff=lfs merge=lfs -text
35
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
README.md ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ title: FLUX.3 Action · RTX 5090
3
+ emoji: ⚡
4
+ colorFrom: green
5
+ colorTo: blue
6
+ sdk: static
7
+ app_file: index.html
8
+ pinned: false
9
+ short_description: RTX 5090 优化报告:约 2.05× 加速、质量 gate 与可下载实测证据
10
+ ---
11
+
12
+ # FLUX.3 Action · RTX 5090 optimization report
13
+
14
+ 中文交互报告,记录 2026-09-28 已验证的单卡 RTX 5090 结果。
15
+
16
+ - 原始 BF16 warm `predict_action_chunk`:1396.406 / 1408.608 ms。
17
+ - 最终 ABBA median:684.603 / 685.827 ms,约 2.04–2.05×。
18
+ - 本轮相对固定 Sage2 混合精度基线的无损优化:延迟额外下降 5.26–5.29%。
19
+ - 120 次 ABBA 请求输出逐位一致;两个固定离线输入通过原质量 gate。
20
+
21
+ 总路线包含 FP8 投影与 SageAttention2 近似。仅最后一轮搬运融合、缓存和固定配置优化相对既有混合精度基线无新增近似。历史阶段来自独立进程,不能当作严格单项消融。
22
+
23
+ Timing includes image/VAE conditioning and four video/action denoising steps. Checkpoint loading, Qwen text encoding, compilation and warmup are excluded. This is an offline numerical screen, not robot success-rate evidence.
24
+
25
+ Open `data/flux3-5090-public-evidence.zip` for selected numerical measurements, source hashes and output-hash verification. The site has no backend, dependencies, analytics, model weights or credentials.
26
+
27
+ Reference implementation: https://github.com/lyttttt3333/flux-action-gb200-optimized (pinned 823db016f814d466be0b140434d71909181bcff0).
28
+
29
+ Visual reference: https://transactions-layout-photographs-paperbacks.trycloudflare.com/ . Its hardware and simulation results are not used as this report's measurements.
app.js ADDED
@@ -0,0 +1,58 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ "use strict";
2
+ const $ = (id) => document.getElementById(id);
3
+ const fmt = (n, digits = 3) => n.toLocaleString('en-US', { minimumFractionDigits: digits, maximumFractionDigits: digits });
4
+ const caseNames = ['将黄色杯中的内容物倒入粉色碗中', '将杯中的内容物倒入碗中'];
5
+ let data, abba;
6
+
7
+ function drawStages(index) {
8
+ const stages = data.history.map(s => ({ ...s, ms: s.cases[index].median_ms }));
9
+ stages.push({ label: '全部无损优化', detail: '最终 ABBA · 固定 launcher', ms: data.cases[index].final_ms });
10
+ $('stage-bars').innerHTML = stages.map((s, i) => `<div class="stage-row ${i === 4 ? 'final' : ''}"><span class="stage-index">0${i + 1}</span><div class="stage-label"><b>${s.label}</b><small>${s.detail}</small></div><div class="stage-track"><div class="stage-fill" style="width:${s.ms / 1500 * 100}%"></div></div><span class="stage-value">${fmt(s.ms, 1)}</span></div>`).join('');
11
+ }
12
+
13
+ function drawAbba(index) {
14
+ const c = abba.cases[index], w = 620, h = 212, left = 40, right = 12, top = 17, bottom = 27;
15
+ const x = i => left + i / 29 * (w - left - right);
16
+ const y = ms => top + (735 - ms) / 60 * (h - top - bottom);
17
+ const grid = [680, 700, 720, 735].map(v => `<line x1="${left}" x2="${w - right}" y1="${y(v)}" y2="${y(v)}" stroke="#263643" stroke-width="1" stroke-dasharray="3 5"/><text x="${left - 9}" y="${y(v) + 3}" fill="#6c8799" font-size="9" text-anchor="end">${v}</text>`).join('');
18
+ const ticks = [0, 9, 19, 29].map(i => `<text x="${x(i)}" y="${h - 7}" fill="#6c8799" font-size="9" text-anchor="middle">${i + 1}</text>`).join('');
19
+ const series = (arr, color, label) => `<polyline points="${arr.map((s, i) => `${x(i)},${y(s * 1000)}`).join(' ')}" fill="none" stroke="${color}" stroke-width="1.8"/>${arr.map((s, i) => `<circle cx="${x(i)}" cy="${y(s * 1000)}" r="2.3" fill="${color}"><title>${label} · 样本 ${i + 1} · ${fmt(s * 1000)} ms</title></circle>`).join('')}`;
20
+ $('abba-chart').innerHTML = `<svg viewBox="0 0 ${w} ${h}" role="img" aria-label="输入 ${index + 1} 的 30 次交替测量:基线中位数 ${fmt(c.baseline_median * 1000)} 毫秒,优化后 ${fmt(c.candidate_median * 1000)} 毫秒" font-family="ui-monospace,monospace"><text x="6" y="9" fill="#6c8799" font-size="8">ms</text>${grid}${ticks}${series(c.baseline_seconds, '#76aaff', '固定 Sage2 基线')}${series(c.candidate_seconds, '#78efc0', '全部无损优化')}</svg>`;
21
+ }
22
+
23
+ function drawQuality(index) {
24
+ const q = data.cases[index].quality;
25
+ const rows = [
26
+ ['Joint MAE', q.joint_mae_rad, data.thresholds.joint_mae_rad, 'rad'],
27
+ ['Joint max absolute', q.joint_max_abs_rad, data.thresholds.joint_max_abs_rad, 'rad'],
28
+ ['Gripper max absolute', q.gripper_max_abs, data.thresholds.gripper_max_abs, ''],
29
+ ];
30
+ $('quality-bars').innerHTML = rows.map(([name, value, threshold, unit]) => `<div class="gate-item"><div class="gate-info"><span>${name}</span><b>${fmt(value, 5)} ${unit}</b></div><div class="gate-track"><div class="gate-fill" style="width:${value / threshold * 100}%"></div></div><div class="gate-foot"><span>PASS · 阈值占用 ${fmt(value / threshold * 100, 1)}%</span><span>≤ ${threshold} ${unit}</span></div></div>`).join('');
31
+ }
32
+
33
+ function selectCase(index) {
34
+ const c = data.cases[index];
35
+ document.querySelectorAll('[data-case]').forEach(b => b.setAttribute('aria-pressed', String(Number(b.dataset.case) === index)));
36
+ document.querySelectorAll('[data-case-number]').forEach(n => n.textContent = '0' + (index + 1));
37
+ $('case-task').textContent = caseNames[index];
38
+ $('selected-speed').textContent = fmt(c.total_speedup);
39
+ $('selected-original').textContent = fmt(c.original_ms) + ' ms';
40
+ $('selected-final').textContent = fmt(c.final_ms) + ' ms';
41
+ $('selected-saved').textContent = fmt(c.original_ms - c.final_ms) + ' ms';
42
+ $('selected-reduction').textContent = fmt(c.latency_reduction_pct, 2) + '%';
43
+ $('abba-before').textContent = fmt(c.sage_baseline_ms);
44
+ $('abba-after').textContent = fmt(c.final_ms);
45
+ $('abba-drop').textContent = fmt(c.lossless_reduction_pct) + '%';
46
+ $('abba-speed').textContent = fmt(c.lossless_speedup, 5) + '×';
47
+ $('recorded-change').textContent = (c.recorded_mae_degradation_rad < 0 ? '−' : '+') + fmt(Math.abs(c.recorded_mae_degradation_rad), 5) + ' rad';
48
+ drawStages(index); drawAbba(index); drawQuality(index);
49
+ }
50
+
51
+ Promise.all(['summary', 'abba'].map(name => fetch(`data/${name}.json`).then(r => {
52
+ if (!r.ok) throw new Error(`Data request failed: ${r.status}`);
53
+ return r.json();
54
+ }))).then(([summary, measurements]) => {
55
+ data = summary; abba = measurements;
56
+ document.querySelectorAll('[data-case]').forEach(b => b.addEventListener('click', () => selectCase(Number(b.dataset.case))));
57
+ selectCase(0);
58
+ }).catch(() => { $('data-error').hidden = false; });
data/abba.json ADDED
@@ -0,0 +1,147 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "schedule": "5 warmups/path/input; 15 ABBA groups =30 timed requests/path/input",
3
+ "cases": [
4
+ {
5
+ "id": 0,
6
+ "all_equal": true,
7
+ "baseline_seconds": [
8
+ 0.7215428741183132,
9
+ 0.7215630980208516,
10
+ 0.7208283969666809,
11
+ 0.7216508849523962,
12
+ 0.721709162928164,
13
+ 0.7219365271739662,
14
+ 0.7213623591233045,
15
+ 0.7218618299812078,
16
+ 0.721814390970394,
17
+ 0.722335031023249,
18
+ 0.7213898259215057,
19
+ 0.7227254998870194,
20
+ 0.7225153760518879,
21
+ 0.7228807101491839,
22
+ 0.722390549024567,
23
+ 0.7229073690250516,
24
+ 0.7221713680773973,
25
+ 0.7228042420465499,
26
+ 0.7226009389851242,
27
+ 0.723247790010646,
28
+ 0.7230162888299674,
29
+ 0.723113504005596,
30
+ 0.7226495151408017,
31
+ 0.7234133009333163,
32
+ 0.7232693789992481,
33
+ 0.7237821849994361,
34
+ 0.7234389849472791,
35
+ 0.7240682130213827,
36
+ 0.7233962488826364,
37
+ 0.7238425330724567
38
+ ],
39
+ "candidate_seconds": [
40
+ 0.6831168460194021,
41
+ 0.6830384971108288,
42
+ 0.683296618051827,
43
+ 0.6839874531142414,
44
+ 0.683391195954755,
45
+ 0.6834767879918218,
46
+ 0.6837543600704521,
47
+ 0.6839766527991742,
48
+ 0.6839690001215786,
49
+ 0.6839444690849632,
50
+ 0.683595993090421,
51
+ 0.6840801329817623,
52
+ 0.6846486919093877,
53
+ 0.6848227570299059,
54
+ 0.6847369628958404,
55
+ 0.6849192259833217,
56
+ 0.6841791120823473,
57
+ 0.6841553959529847,
58
+ 0.6845582721289247,
59
+ 0.6847041470464319,
60
+ 0.6849565200973302,
61
+ 0.6847164791543037,
62
+ 0.6847534070257097,
63
+ 0.6857836169656366,
64
+ 0.6851571181323379,
65
+ 0.6851447569206357,
66
+ 0.6851655580103397,
67
+ 0.6858374699950218,
68
+ 0.6852324139326811,
69
+ 0.6853820839896798
70
+ ],
71
+ "baseline_median": 0.722625227062963,
72
+ "candidate_median": 0.6846034820191562,
73
+ "speedup": 1.0555383459804588
74
+ },
75
+ {
76
+ "id": 1,
77
+ "all_equal": true,
78
+ "baseline_seconds": [
79
+ 0.7237811188679188,
80
+ 0.724102480802685,
81
+ 0.7228789930231869,
82
+ 0.7241425660904497,
83
+ 0.7233373560011387,
84
+ 0.7243766179308295,
85
+ 0.7232846422120929,
86
+ 0.7244062318932265,
87
+ 0.7235502649564296,
88
+ 0.7245781610254198,
89
+ 0.7240442419424653,
90
+ 0.7239963400643319,
91
+ 0.7237169879954308,
92
+ 0.7246953819412738,
93
+ 0.7240158410277218,
94
+ 0.7243121459614486,
95
+ 0.7240504629444331,
96
+ 0.7243953619617969,
97
+ 0.7242067898623645,
98
+ 0.7247072651516646,
99
+ 0.7240296378731728,
100
+ 0.7244772890117019,
101
+ 0.7238635320682079,
102
+ 0.7236039999406785,
103
+ 0.7220860028173774,
104
+ 0.724464074941352,
105
+ 0.7241436359472573,
106
+ 0.724624051945284,
107
+ 0.7258536440785974,
108
+ 0.7243875281419605
109
+ ],
110
+ "candidate_seconds": [
111
+ 0.6853969090152532,
112
+ 0.6850661379285157,
113
+ 0.6851504719816148,
114
+ 0.6856859240215272,
115
+ 0.6857005190104246,
116
+ 0.6854614650364965,
117
+ 0.6855876059271395,
118
+ 0.6857800709549338,
119
+ 0.6867013331502676,
120
+ 0.6857157070189714,
121
+ 0.6871584148611873,
122
+ 0.6861556731164455,
123
+ 0.6857722969725728,
124
+ 0.6856842359993607,
125
+ 0.6859679878689349,
126
+ 0.6858553939964622,
127
+ 0.6861616291571409,
128
+ 0.6862659871112555,
129
+ 0.6857995230238885,
130
+ 0.6859600311145186,
131
+ 0.6858970308676362,
132
+ 0.6858985079452395,
133
+ 0.6860023229382932,
134
+ 0.6885548608843237,
135
+ 0.6857232600450516,
136
+ 0.6856763451360166,
137
+ 0.6860081609338522,
138
+ 0.6862466591410339,
139
+ 0.6857836488634348,
140
+ 0.6862123250029981
141
+ ],
142
+ "baseline_median": 0.7241225234465674,
143
+ "candidate_median": 0.6858274585101753,
144
+ "speedup": 1.055837754031576
145
+ }
146
+ ]
147
+ }
data/flux3-5090-public-evidence.zip ADDED
Binary file (11.5 kB). View file
 
data/history.json ADDED
@@ -0,0 +1,322 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [
2
+ {
3
+ "id": "original-v1",
4
+ "label": "原始 BF16",
5
+ "detail": "原始 PyTorch 路径",
6
+ "kind": "baseline",
7
+ "cases": [
8
+ {
9
+ "id": 0,
10
+ "median_ms": 1396.405591396615,
11
+ "seconds": [
12
+ 1.381904570851475,
13
+ 1.3823811470065266,
14
+ 1.3835190190002322,
15
+ 1.384274504845962,
16
+ 1.3872690789867193,
17
+ 1.3898364559281617,
18
+ 1.3898142939433455,
19
+ 1.3900694691110402,
20
+ 1.3914941870607436,
21
+ 1.3923688249196857,
22
+ 1.3926732998806983,
23
+ 1.393239316996187,
24
+ 1.39420221792534,
25
+ 1.3945417830254883,
26
+ 1.396204066928476,
27
+ 1.3966071158647537,
28
+ 1.3980501149781048,
29
+ 1.3979450820479542,
30
+ 1.4022394558414817,
31
+ 1.3986742771230638,
32
+ 1.399807906942442,
33
+ 1.3996493748854846,
34
+ 1.4003535558003932,
35
+ 1.4010304759722203,
36
+ 1.4015033501200378,
37
+ 1.401030495064333,
38
+ 1.4022455080412328,
39
+ 1.4056538008153439,
40
+ 1.4028159650042653,
41
+ 1.4028324319515377
42
+ ]
43
+ },
44
+ {
45
+ "id": 1,
46
+ "median_ms": 1408.6075149243698,
47
+ "seconds": [
48
+ 1.405564164975658,
49
+ 1.407197569962591,
50
+ 1.4047191909048706,
51
+ 1.4090528008528054,
52
+ 1.4029856929555535,
53
+ 1.405674556037411,
54
+ 1.4063881929032505,
55
+ 1.4073772400151938,
56
+ 1.4071643080096692,
57
+ 1.4072683060076088,
58
+ 1.4071268800180405,
59
+ 1.4094544500112534,
60
+ 1.4084794430527836,
61
+ 1.4084400490392,
62
+ 1.4084894431289285,
63
+ 1.4089460279792547,
64
+ 1.40849255095236,
65
+ 1.4126053720247,
66
+ 1.4111325331032276,
67
+ 1.4123897759709507,
68
+ 1.407148095080629,
69
+ 1.4098139212001115,
70
+ 1.4112632770556957,
71
+ 1.409819349180907,
72
+ 1.4094535470940173,
73
+ 1.4090065830387175,
74
+ 1.409109738888219,
75
+ 1.4087432380765676,
76
+ 1.4087224788963795,
77
+ 1.4097991108428687
78
+ ]
79
+ }
80
+ ]
81
+ },
82
+ {
83
+ "id": "optimized-v1",
84
+ "label": "编译与执行优化",
85
+ "detail": "编译 / 共享 CFG / 融合 UniPC",
86
+ "kind": "execution",
87
+ "cases": [
88
+ {
89
+ "id": 0,
90
+ "median_ms": 1105.726829962805,
91
+ "seconds": [
92
+ 1.0939354179427028,
93
+ 1.0950800881255418,
94
+ 1.095570659963414,
95
+ 1.0971358560491353,
96
+ 1.1001360081136227,
97
+ 1.1005526389926672,
98
+ 1.101168611086905,
99
+ 1.1015601688995957,
100
+ 1.1027813260443509,
101
+ 1.1028800609055907,
102
+ 1.104188428958878,
103
+ 1.1057327119633555,
104
+ 1.1049868501722813,
105
+ 1.1052685719914734,
106
+ 1.1054474129341543,
107
+ 1.1057209479622543,
108
+ 1.1067480009514838,
109
+ 1.1067145089618862,
110
+ 1.106929527129978,
111
+ 1.1069671148434281,
112
+ 1.1073070678394288,
113
+ 1.108028369024396,
114
+ 1.1088999500498176,
115
+ 1.109519376885146,
116
+ 1.109954441897571,
117
+ 1.1100162561051548,
118
+ 1.109944449039176,
119
+ 1.1108431718312204,
120
+ 1.1105548560153693,
121
+ 1.1105069699697196
122
+ ]
123
+ },
124
+ {
125
+ "id": 1,
126
+ "median_ms": 1115.74458447285,
127
+ "seconds": [
128
+ 1.112592165125534,
129
+ 1.1125846428330988,
130
+ 1.113525175023824,
131
+ 1.1139120161533356,
132
+ 1.1142586760688573,
133
+ 1.1139136960264295,
134
+ 1.1139425560832024,
135
+ 1.113907593069598,
136
+ 1.114756850991398,
137
+ 1.114386186003685,
138
+ 1.1148598240688443,
139
+ 1.114664763910696,
140
+ 1.1149549309629947,
141
+ 1.1150471579749137,
142
+ 1.115875778021291,
143
+ 1.1167280869558454,
144
+ 1.1158945939969271,
145
+ 1.1162209569010884,
146
+ 1.116134142037481,
147
+ 1.1156974020414054,
148
+ 1.1157917669042945,
149
+ 1.1158420711290091,
150
+ 1.1168441488407552,
151
+ 1.1167204279918224,
152
+ 1.116568208904937,
153
+ 1.116884137969464,
154
+ 1.1174702809657902,
155
+ 1.1172106221783906,
156
+ 1.1169800360221416,
157
+ 1.1172712589614093
158
+ ]
159
+ }
160
+ ]
161
+ },
162
+ {
163
+ "id": "rowwise-fp8-qkbf16-v3",
164
+ "label": "混合精度投影",
165
+ "detail": "保留 BF16 Q/K;其他选定投影 FP8",
166
+ "kind": "precision",
167
+ "cases": [
168
+ {
169
+ "id": 0,
170
+ "median_ms": 777.765735052526,
171
+ "seconds": [
172
+ 0.77187519101426,
173
+ 0.7719290389213711,
174
+ 0.7720805930439383,
175
+ 0.772506375098601,
176
+ 0.7726934109814465,
177
+ 0.7733639311045408,
178
+ 0.7783755280543119,
179
+ 0.7772313428577036,
180
+ 0.7740706850308925,
181
+ 0.7745594850275666,
182
+ 0.7735607258509845,
183
+ 0.7744390738662332,
184
+ 0.7762669958174229,
185
+ 0.7767264801077545,
186
+ 0.7775059519335628,
187
+ 0.7782417458947748,
188
+ 0.77767852996476,
189
+ 0.777852940140292,
190
+ 0.7778786199633032,
191
+ 0.7795840729959309,
192
+ 0.7801161350216717,
193
+ 0.7802730789408088,
194
+ 0.7787462549749762,
195
+ 0.7800344449933618,
196
+ 0.779274526052177,
197
+ 0.7795446920208633,
198
+ 0.7796726578380913,
199
+ 0.7794401370920241,
200
+ 0.7796120920684189,
201
+ 0.7798830349929631
202
+ ]
203
+ },
204
+ {
205
+ "id": 1,
206
+ "median_ms": 784.4128310680389,
207
+ "seconds": [
208
+ 0.7819512649439275,
209
+ 0.7858534760307521,
210
+ 0.7826038890052587,
211
+ 0.7843325608409941,
212
+ 0.7836677909363061,
213
+ 0.7824699589982629,
214
+ 0.783658463973552,
215
+ 0.7829139940440655,
216
+ 0.7832127250730991,
217
+ 0.7833697120659053,
218
+ 0.7866980000399053,
219
+ 0.7831063650082797,
220
+ 0.7833628219086677,
221
+ 0.7835651049390435,
222
+ 0.7846796528901905,
223
+ 0.7841983931139112,
224
+ 0.7844528339337558,
225
+ 0.7843951319810003,
226
+ 0.7842397268395871,
227
+ 0.7844305301550776,
228
+ 0.7853629479650408,
229
+ 0.7863788141403347,
230
+ 0.7865908748935908,
231
+ 0.7854677538853139,
232
+ 0.7849521010648459,
233
+ 0.7856644811108708,
234
+ 0.7855948850046843,
235
+ 0.7851674810517579,
236
+ 0.7856167980935425,
237
+ 0.7849965011700988
238
+ ]
239
+ }
240
+ ]
241
+ },
242
+ {
243
+ "id": "sage2-smooth-thread-v3-v8",
244
+ "label": "SageAttention2",
245
+ "detail": "INT8 QK / FP8 PV / K、V smooth",
246
+ "kind": "precision",
247
+ "cases": [
248
+ {
249
+ "id": 0,
250
+ "median_ms": 711.7815556703135,
251
+ "seconds": [
252
+ 0.7070603989996016,
253
+ 0.7084723520092666,
254
+ 0.7090139030478895,
255
+ 0.7103253770619631,
256
+ 0.7089668491389602,
257
+ 0.7082902421243489,
258
+ 0.709116626996547,
259
+ 0.708626707084477,
260
+ 0.7087468160316348,
261
+ 0.7092719411011785,
262
+ 0.7096243631094694,
263
+ 0.7107974591199309,
264
+ 0.711419414030388,
265
+ 0.7116676061414182,
266
+ 0.711255727801472,
267
+ 0.7157650021836162,
268
+ 0.7118955051992089,
269
+ 0.7131657260470092,
270
+ 0.7133188520092517,
271
+ 0.7130064801312983,
272
+ 0.7137848499696702,
273
+ 0.7135631800629199,
274
+ 0.713997723069042,
275
+ 0.7139290149789304,
276
+ 0.714752787956968,
277
+ 0.7143818931654096,
278
+ 0.7146923071704805,
279
+ 0.7146690050140023,
280
+ 0.7152265170589089,
281
+ 0.717653329949826
282
+ ]
283
+ },
284
+ {
285
+ "id": 1,
286
+ "median_ms": 718.0130195338279,
287
+ "seconds": [
288
+ 0.715362663147971,
289
+ 0.7150260568596423,
290
+ 0.7157730159815401,
291
+ 0.7159747669938952,
292
+ 0.7159235149156302,
293
+ 0.71656369487755,
294
+ 0.7166073801927269,
295
+ 0.7165130679495633,
296
+ 0.7167868439573795,
297
+ 0.7174572390504181,
298
+ 0.7176454800646752,
299
+ 0.7179852838162333,
300
+ 0.7185234068892896,
301
+ 0.7180336250457913,
302
+ 0.7182956060860306,
303
+ 0.7177435311023146,
304
+ 0.7184870031196624,
305
+ 0.7185444550123066,
306
+ 0.7183321320917457,
307
+ 0.718570914119482,
308
+ 0.7184261330403388,
309
+ 0.7179924140218645,
310
+ 0.7179150430019945,
311
+ 0.7181572718545794,
312
+ 0.718563802074641,
313
+ 0.71898004389368,
314
+ 0.7186842069495469,
315
+ 0.7187076800037175,
316
+ 0.7191525478847325,
317
+ 0.7190727861598134
318
+ ]
319
+ }
320
+ ]
321
+ }
322
+ ]
data/manifest.json ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "abba.json": "fda85cb8f3e0dc4c160a253c78a5542131ef9dff3e122e94d3f42baec54aebf1",
3
+ "history.json": "2b247bf1ae6c8881e7def8bc58077726acd606f6a85c0d7764bcd40bd7574a42",
4
+ "provenance.json": "6180dfe694cf0ff531abcaecbd1e9ce54a465990b9c9ac5c476516fa45bd55f7",
5
+ "quality.json": "4292372ce8d662200133c46fdca13f95ccdd2b78ed83a0b400dc912555fddc79",
6
+ "restart-verification.json": "daedfca77eda41b30453c222c306dbc5b6dacd9513551ff5c2be24199432a4f7",
7
+ "summary.json": "8a1412140e607e83790a8d9ff4ee1c2a3ac113d0cc82278aee6abeb04fa83d15"
8
+ }
data/provenance.json ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "source_artifact_sha256": {
3
+ "original-v1/report.json": "486210abd810631ce8a677934e7d2be1bec4cb638081b275a8bb730374dbc212",
4
+ "optimized-v1/report.json": "bd6f8c4415749aad05e24a2d1919708fc5878c64da71d450d53926612c7121a5",
5
+ "rowwise-fp8-qkbf16-v3/report.json": "098b4f4a77a258bf8c668dc1a52f0de225974e8e6a69518cfdd0d757f9140ad5",
6
+ "sage2-smooth-thread-v3-v8/report.json": "3069ab3c1a168c3984eccc880a2c6e70998783d2ab08937cfc62e5aafe424c75",
7
+ "lossless-deploy-v1/abba.json": "fda85cb8f3e0dc4c160a253c78a5542131ef9dff3e122e94d3f42baec54aebf1",
8
+ "comparison-lossless-deploy-v1-all.json": "1fba3830e7472c196db4b8a6c88578305818c50a7e372b23eb057cf390820864",
9
+ "lossless-selected-pinned-v1/restart_verification.json": "daedfca77eda41b30453c222c306dbc5b6dacd9513551ff5c2be24199432a4f7"
10
+ },
11
+ "reference_commit": "823db016f814d466be0b140434d71909181bcff0",
12
+ "baseline_commit": "e2dd1d8dbc5977b54315d61f7548c63c043d6d4f",
13
+ "note": "Selected numerical evidence, not the full internal experiment archive. Source hashes identify the original unmodified artifacts. No weights, observations, logs, host identifiers or credentials are included."
14
+ }
data/quality.json ADDED
@@ -0,0 +1,69 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "baseline": "original-v1",
3
+ "candidate": "lossless-deploy-v1-all",
4
+ "thresholds": {
5
+ "joint_mae_rad": 0.02,
6
+ "joint_max_abs_rad": 0.05,
7
+ "gripper_max_abs": 0.05,
8
+ "recorded_joint_mae_degradation_rad": 0.02
9
+ },
10
+ "all_quality_pass": true,
11
+ "cases": [
12
+ {
13
+ "id": 0,
14
+ "vs_original": {
15
+ "joint_mae_rad": 0.009817952103081293,
16
+ "joint_max_abs_rad": 0.04699385166168213,
17
+ "gripper_mae": 0.002278873696923256,
18
+ "gripper_max_abs": 0.007245779037475586
19
+ },
20
+ "against_recorded": {
21
+ "original": {
22
+ "joint_mae_rad": 0.08577735238941386,
23
+ "joint_max_abs_rad": 0.2407611608505249,
24
+ "gripper_mae": 0.030396929010748863,
25
+ "gripper_max_abs": 0.03756916522979736
26
+ },
27
+ "optimized": {
28
+ "joint_mae_rad": 0.07718483853802484,
29
+ "joint_max_abs_rad": 0.21235013008117676,
30
+ "gripper_mae": 0.031708963215351105,
31
+ "gripper_max_abs": 0.037207841873168945
32
+ }
33
+ },
34
+ "quality_screen_pass": true,
35
+ "repeat_max_abs": {
36
+ "original": 0.0,
37
+ "optimized": 0.0
38
+ }
39
+ },
40
+ {
41
+ "id": 1,
42
+ "vs_original": {
43
+ "joint_mae_rad": 0.015379066013598017,
44
+ "joint_max_abs_rad": 0.0453333854675293,
45
+ "gripper_mae": 0.002805577591061592,
46
+ "gripper_max_abs": 0.010859251022338867
47
+ },
48
+ "against_recorded": {
49
+ "original": {
50
+ "joint_mae_rad": 0.04108549371760871,
51
+ "joint_max_abs_rad": 0.10416826605796814,
52
+ "gripper_mae": 0.01753225363790989,
53
+ "gripper_max_abs": 0.03046947717666626
54
+ },
55
+ "optimized": {
56
+ "joint_mae_rad": 0.033408622323934524,
57
+ "joint_max_abs_rad": 0.094066321849823,
58
+ "gripper_mae": 0.018700264394283295,
59
+ "gripper_max_abs": 0.03168797492980957
60
+ }
61
+ },
62
+ "quality_screen_pass": true,
63
+ "repeat_max_abs": {
64
+ "original": 0.0,
65
+ "optimized": 0.0
66
+ }
67
+ }
68
+ ]
69
+ }
data/restart-verification.json ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "status": "COMPLETE",
3
+ "bootstrap_exact": true,
4
+ "all_quality_pass": true,
5
+ "cases": [
6
+ {
7
+ "id": 0,
8
+ "npy_file_hashes": {
9
+ "restart-diagnostic-v2": "b94ec2cdfe330b5e8b9a5eadf9dcb7a0611816a5fcd6ebec9d52c8aa2902e132",
10
+ "lossless-deploy-v1-baseline": "b94ec2cdfe330b5e8b9a5eadf9dcb7a0611816a5fcd6ebec9d52c8aa2902e132",
11
+ "lossless-deploy-v1-all": "b94ec2cdfe330b5e8b9a5eadf9dcb7a0611816a5fcd6ebec9d52c8aa2902e132",
12
+ "lossless-selected-pinned-v1": "b94ec2cdfe330b5e8b9a5eadf9dcb7a0611816a5fcd6ebec9d52c8aa2902e132"
13
+ },
14
+ "byte_exact_across_processes": true,
15
+ "median_seconds": 0.6741054314188659,
16
+ "repeat_max_abs": 0.0
17
+ },
18
+ {
19
+ "id": 1,
20
+ "npy_file_hashes": {
21
+ "restart-diagnostic-v2": "cce231bfffb186e7f0c4377bd8a3388918091461788a87a518fa6367c2c1c99a",
22
+ "lossless-deploy-v1-baseline": "cce231bfffb186e7f0c4377bd8a3388918091461788a87a518fa6367c2c1c99a",
23
+ "lossless-deploy-v1-all": "cce231bfffb186e7f0c4377bd8a3388918091461788a87a518fa6367c2c1c99a",
24
+ "lossless-selected-pinned-v1": "cce231bfffb186e7f0c4377bd8a3388918091461788a87a518fa6367c2c1c99a"
25
+ },
26
+ "byte_exact_across_processes": true,
27
+ "median_seconds": 0.6803386386018246,
28
+ "repeat_max_abs": 0.0
29
+ }
30
+ ]
31
+ }
data/summary.json ADDED
@@ -0,0 +1,420 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "title": "FLUX.3 Action · RTX 5090",
3
+ "date": "2026-09-28",
4
+ "hardware": "NVIDIA GeForce RTX 5090 / SM120 / single GPU",
5
+ "runtime": {
6
+ "torch": "2.12.1+cu130",
7
+ "triton": "3.7.1",
8
+ "sageattention": "2.2.0"
9
+ },
10
+ "timing_scope": "warm predict_action_chunk including image/VAE conditioning and all four video/action denoising steps; excludes checkpoint load, Qwen text encoding, first compilation and warmups",
11
+ "statistic": "median",
12
+ "warmup": 5,
13
+ "repeats_per_path_per_input": 30,
14
+ "abba_groups": 15,
15
+ "exact_requests": 120,
16
+ "model_revisions": {
17
+ "droid": {
18
+ "repo_id": "black-forest-labs/flux-3-action-droid",
19
+ "revision": "3d0887bdc7acee1686b19afac267125d519ff4f1"
20
+ },
21
+ "encoders": {
22
+ "repo_id": "black-forest-labs/flux-3-action-base",
23
+ "revision": "62878e2925e59b7a89ec14463ce89932624c490d"
24
+ }
25
+ },
26
+ "config": {
27
+ "sampler": "cosmos_unipc",
28
+ "num_inference_steps": 4,
29
+ "sampler_shift": 5.0,
30
+ "guidance_scale": 4.0,
31
+ "guidance_scale_action": 1.0,
32
+ "inference_seed": 0,
33
+ "chunk_size": 32,
34
+ "action_dim": 8,
35
+ "fps": 15.0,
36
+ "canvas_hw": [
37
+ 544,
38
+ 736
39
+ ]
40
+ },
41
+ "cases": [
42
+ {
43
+ "id": 0,
44
+ "task": "Pour the contents of the yellow cup into the pink bowl",
45
+ "observation_sha256": "722f9211bfaae0526eecda317cff6ba015ddfebe887bbf92450221b3838ba07f",
46
+ "original_ms": 1396.405591396615,
47
+ "sage_baseline_ms": 722.625227062963,
48
+ "final_ms": 684.6034820191562,
49
+ "total_speedup": 2.039729022817826,
50
+ "latency_reduction_pct": 50.97387992163149,
51
+ "lossless_speedup": 1.0555383459804588,
52
+ "lossless_reduction_pct": 5.261613298271117,
53
+ "quality": {
54
+ "joint_mae_rad": 0.009817952103081293,
55
+ "joint_max_abs_rad": 0.04699385166168213,
56
+ "gripper_mae": 0.002278873696923256,
57
+ "gripper_max_abs": 0.007245779037475586
58
+ },
59
+ "recorded_mae_degradation_rad": -0.008592513851389025,
60
+ "all_quality_pass": true,
61
+ "exact": true
62
+ },
63
+ {
64
+ "id": 1,
65
+ "task": "Pour the contents of the cup into the bowl",
66
+ "observation_sha256": "aa63d0eeb61347dbfb2808c6dd832c8d00f4533759231edab6943fc4895007e7",
67
+ "original_ms": 1408.6075149243698,
68
+ "sage_baseline_ms": 724.1225234465674,
69
+ "final_ms": 685.8274585101753,
70
+ "total_speedup": 2.0538803126726526,
71
+ "latency_reduction_pct": 51.31167118989859,
72
+ "lossless_speedup": 1.055837754031576,
73
+ "lossless_reduction_pct": 5.2884786339915335,
74
+ "quality": {
75
+ "joint_mae_rad": 0.015379066013598017,
76
+ "joint_max_abs_rad": 0.0453333854675293,
77
+ "gripper_mae": 0.002805577591061592,
78
+ "gripper_max_abs": 0.010859251022338867
79
+ },
80
+ "recorded_mae_degradation_rad": -0.007676871393674185,
81
+ "all_quality_pass": true,
82
+ "exact": true
83
+ }
84
+ ],
85
+ "history": [
86
+ {
87
+ "id": "original-v1",
88
+ "label": "原始 BF16",
89
+ "detail": "原始 PyTorch 路径",
90
+ "kind": "baseline",
91
+ "cases": [
92
+ {
93
+ "id": 0,
94
+ "median_ms": 1396.405591396615,
95
+ "seconds": [
96
+ 1.381904570851475,
97
+ 1.3823811470065266,
98
+ 1.3835190190002322,
99
+ 1.384274504845962,
100
+ 1.3872690789867193,
101
+ 1.3898364559281617,
102
+ 1.3898142939433455,
103
+ 1.3900694691110402,
104
+ 1.3914941870607436,
105
+ 1.3923688249196857,
106
+ 1.3926732998806983,
107
+ 1.393239316996187,
108
+ 1.39420221792534,
109
+ 1.3945417830254883,
110
+ 1.396204066928476,
111
+ 1.3966071158647537,
112
+ 1.3980501149781048,
113
+ 1.3979450820479542,
114
+ 1.4022394558414817,
115
+ 1.3986742771230638,
116
+ 1.399807906942442,
117
+ 1.3996493748854846,
118
+ 1.4003535558003932,
119
+ 1.4010304759722203,
120
+ 1.4015033501200378,
121
+ 1.401030495064333,
122
+ 1.4022455080412328,
123
+ 1.4056538008153439,
124
+ 1.4028159650042653,
125
+ 1.4028324319515377
126
+ ]
127
+ },
128
+ {
129
+ "id": 1,
130
+ "median_ms": 1408.6075149243698,
131
+ "seconds": [
132
+ 1.405564164975658,
133
+ 1.407197569962591,
134
+ 1.4047191909048706,
135
+ 1.4090528008528054,
136
+ 1.4029856929555535,
137
+ 1.405674556037411,
138
+ 1.4063881929032505,
139
+ 1.4073772400151938,
140
+ 1.4071643080096692,
141
+ 1.4072683060076088,
142
+ 1.4071268800180405,
143
+ 1.4094544500112534,
144
+ 1.4084794430527836,
145
+ 1.4084400490392,
146
+ 1.4084894431289285,
147
+ 1.4089460279792547,
148
+ 1.40849255095236,
149
+ 1.4126053720247,
150
+ 1.4111325331032276,
151
+ 1.4123897759709507,
152
+ 1.407148095080629,
153
+ 1.4098139212001115,
154
+ 1.4112632770556957,
155
+ 1.409819349180907,
156
+ 1.4094535470940173,
157
+ 1.4090065830387175,
158
+ 1.409109738888219,
159
+ 1.4087432380765676,
160
+ 1.4087224788963795,
161
+ 1.4097991108428687
162
+ ]
163
+ }
164
+ ]
165
+ },
166
+ {
167
+ "id": "optimized-v1",
168
+ "label": "编译与执行优化",
169
+ "detail": "编译 / 共享 CFG / 融合 UniPC",
170
+ "kind": "execution",
171
+ "cases": [
172
+ {
173
+ "id": 0,
174
+ "median_ms": 1105.726829962805,
175
+ "seconds": [
176
+ 1.0939354179427028,
177
+ 1.0950800881255418,
178
+ 1.095570659963414,
179
+ 1.0971358560491353,
180
+ 1.1001360081136227,
181
+ 1.1005526389926672,
182
+ 1.101168611086905,
183
+ 1.1015601688995957,
184
+ 1.1027813260443509,
185
+ 1.1028800609055907,
186
+ 1.104188428958878,
187
+ 1.1057327119633555,
188
+ 1.1049868501722813,
189
+ 1.1052685719914734,
190
+ 1.1054474129341543,
191
+ 1.1057209479622543,
192
+ 1.1067480009514838,
193
+ 1.1067145089618862,
194
+ 1.106929527129978,
195
+ 1.1069671148434281,
196
+ 1.1073070678394288,
197
+ 1.108028369024396,
198
+ 1.1088999500498176,
199
+ 1.109519376885146,
200
+ 1.109954441897571,
201
+ 1.1100162561051548,
202
+ 1.109944449039176,
203
+ 1.1108431718312204,
204
+ 1.1105548560153693,
205
+ 1.1105069699697196
206
+ ]
207
+ },
208
+ {
209
+ "id": 1,
210
+ "median_ms": 1115.74458447285,
211
+ "seconds": [
212
+ 1.112592165125534,
213
+ 1.1125846428330988,
214
+ 1.113525175023824,
215
+ 1.1139120161533356,
216
+ 1.1142586760688573,
217
+ 1.1139136960264295,
218
+ 1.1139425560832024,
219
+ 1.113907593069598,
220
+ 1.114756850991398,
221
+ 1.114386186003685,
222
+ 1.1148598240688443,
223
+ 1.114664763910696,
224
+ 1.1149549309629947,
225
+ 1.1150471579749137,
226
+ 1.115875778021291,
227
+ 1.1167280869558454,
228
+ 1.1158945939969271,
229
+ 1.1162209569010884,
230
+ 1.116134142037481,
231
+ 1.1156974020414054,
232
+ 1.1157917669042945,
233
+ 1.1158420711290091,
234
+ 1.1168441488407552,
235
+ 1.1167204279918224,
236
+ 1.116568208904937,
237
+ 1.116884137969464,
238
+ 1.1174702809657902,
239
+ 1.1172106221783906,
240
+ 1.1169800360221416,
241
+ 1.1172712589614093
242
+ ]
243
+ }
244
+ ]
245
+ },
246
+ {
247
+ "id": "rowwise-fp8-qkbf16-v3",
248
+ "label": "混合精度投影",
249
+ "detail": "保留 BF16 Q/K;其他选定投影 FP8",
250
+ "kind": "precision",
251
+ "cases": [
252
+ {
253
+ "id": 0,
254
+ "median_ms": 777.765735052526,
255
+ "seconds": [
256
+ 0.77187519101426,
257
+ 0.7719290389213711,
258
+ 0.7720805930439383,
259
+ 0.772506375098601,
260
+ 0.7726934109814465,
261
+ 0.7733639311045408,
262
+ 0.7783755280543119,
263
+ 0.7772313428577036,
264
+ 0.7740706850308925,
265
+ 0.7745594850275666,
266
+ 0.7735607258509845,
267
+ 0.7744390738662332,
268
+ 0.7762669958174229,
269
+ 0.7767264801077545,
270
+ 0.7775059519335628,
271
+ 0.7782417458947748,
272
+ 0.77767852996476,
273
+ 0.777852940140292,
274
+ 0.7778786199633032,
275
+ 0.7795840729959309,
276
+ 0.7801161350216717,
277
+ 0.7802730789408088,
278
+ 0.7787462549749762,
279
+ 0.7800344449933618,
280
+ 0.779274526052177,
281
+ 0.7795446920208633,
282
+ 0.7796726578380913,
283
+ 0.7794401370920241,
284
+ 0.7796120920684189,
285
+ 0.7798830349929631
286
+ ]
287
+ },
288
+ {
289
+ "id": 1,
290
+ "median_ms": 784.4128310680389,
291
+ "seconds": [
292
+ 0.7819512649439275,
293
+ 0.7858534760307521,
294
+ 0.7826038890052587,
295
+ 0.7843325608409941,
296
+ 0.7836677909363061,
297
+ 0.7824699589982629,
298
+ 0.783658463973552,
299
+ 0.7829139940440655,
300
+ 0.7832127250730991,
301
+ 0.7833697120659053,
302
+ 0.7866980000399053,
303
+ 0.7831063650082797,
304
+ 0.7833628219086677,
305
+ 0.7835651049390435,
306
+ 0.7846796528901905,
307
+ 0.7841983931139112,
308
+ 0.7844528339337558,
309
+ 0.7843951319810003,
310
+ 0.7842397268395871,
311
+ 0.7844305301550776,
312
+ 0.7853629479650408,
313
+ 0.7863788141403347,
314
+ 0.7865908748935908,
315
+ 0.7854677538853139,
316
+ 0.7849521010648459,
317
+ 0.7856644811108708,
318
+ 0.7855948850046843,
319
+ 0.7851674810517579,
320
+ 0.7856167980935425,
321
+ 0.7849965011700988
322
+ ]
323
+ }
324
+ ]
325
+ },
326
+ {
327
+ "id": "sage2-smooth-thread-v3-v8",
328
+ "label": "SageAttention2",
329
+ "detail": "INT8 QK / FP8 PV / K、V smooth",
330
+ "kind": "precision",
331
+ "cases": [
332
+ {
333
+ "id": 0,
334
+ "median_ms": 711.7815556703135,
335
+ "seconds": [
336
+ 0.7070603989996016,
337
+ 0.7084723520092666,
338
+ 0.7090139030478895,
339
+ 0.7103253770619631,
340
+ 0.7089668491389602,
341
+ 0.7082902421243489,
342
+ 0.709116626996547,
343
+ 0.708626707084477,
344
+ 0.7087468160316348,
345
+ 0.7092719411011785,
346
+ 0.7096243631094694,
347
+ 0.7107974591199309,
348
+ 0.711419414030388,
349
+ 0.7116676061414182,
350
+ 0.711255727801472,
351
+ 0.7157650021836162,
352
+ 0.7118955051992089,
353
+ 0.7131657260470092,
354
+ 0.7133188520092517,
355
+ 0.7130064801312983,
356
+ 0.7137848499696702,
357
+ 0.7135631800629199,
358
+ 0.713997723069042,
359
+ 0.7139290149789304,
360
+ 0.714752787956968,
361
+ 0.7143818931654096,
362
+ 0.7146923071704805,
363
+ 0.7146690050140023,
364
+ 0.7152265170589089,
365
+ 0.717653329949826
366
+ ]
367
+ },
368
+ {
369
+ "id": 1,
370
+ "median_ms": 718.0130195338279,
371
+ "seconds": [
372
+ 0.715362663147971,
373
+ 0.7150260568596423,
374
+ 0.7157730159815401,
375
+ 0.7159747669938952,
376
+ 0.7159235149156302,
377
+ 0.71656369487755,
378
+ 0.7166073801927269,
379
+ 0.7165130679495633,
380
+ 0.7167868439573795,
381
+ 0.7174572390504181,
382
+ 0.7176454800646752,
383
+ 0.7179852838162333,
384
+ 0.7185234068892896,
385
+ 0.7180336250457913,
386
+ 0.7182956060860306,
387
+ 0.7177435311023146,
388
+ 0.7184870031196624,
389
+ 0.7185444550123066,
390
+ 0.7183321320917457,
391
+ 0.718570914119482,
392
+ 0.7184261330403388,
393
+ 0.7179924140218645,
394
+ 0.7179150430019945,
395
+ 0.7181572718545794,
396
+ 0.718563802074641,
397
+ 0.71898004389368,
398
+ 0.7186842069495469,
399
+ 0.7187076800037175,
400
+ 0.7191525478847325,
401
+ 0.7190727861598134
402
+ ]
403
+ }
404
+ ]
405
+ }
406
+ ],
407
+ "thresholds": {
408
+ "joint_mae_rad": 0.02,
409
+ "joint_max_abs_rad": 0.05,
410
+ "gripper_max_abs": 0.05,
411
+ "recorded_joint_mae_degradation_rad": 0.02
412
+ },
413
+ "limitations": [
414
+ "Overall speedup compares historical original BF16 with final ABBA median on the same GPU and workload. Historical stages ran in independent processes and are not isolated ablations.",
415
+ "Only the last optimization batch is lossless relative to the pinned mixed-precision Sage2 baseline; the full route is not bit-identical to original BF16.",
416
+ "Quality gate covers two fixed offline observations; no robot rollout, success rate or generalization claim.",
417
+ "Launcher pinning is specific to the validated generated code, environment and workload; failed restart attempts remain disclosed in the report.",
418
+ "This static website summarizes completed RTX 5090 experiments; it does not run inference or claim B200 VC-Attn results."
419
+ ]
420
+ }
icon.svg ADDED
index.html ADDED
@@ -0,0 +1,98 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!doctype html>
2
+ <html lang="zh-CN">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1">
6
+ <meta name="theme-color" content="#080d12">
7
+ <meta name="description" content="FLUX.3 Action 在单张 RTX 5090 上的优化实测:约 2.05× 加速,SageAttention2、无损融合、质量 gate 与可下载证据。">
8
+ <title>FLUX.3 Action / RTX 5090 · 加速实测</title>
9
+ <link rel="icon" href="icon.svg" type="image/svg+xml">
10
+ <link rel="stylesheet" href="styles.css">
11
+ <script src="app.js" defer></script>
12
+ </head>
13
+ <body>
14
+ <a class="skip" href="#performance">跳到性能数据</a>
15
+ <nav class="nav" aria-label="主导航"><div class="wrap nav-inner">
16
+ <a class="brand" href="#top"><span class="brand-icon" aria-hidden="true">↗</span> FLUX<span class="brand-light"> / ACTION</span></a>
17
+ <div class="nav-links"><a href="#performance">性能</a><a href="#engineering">优化</a><a href="#quality">质量</a><a href="#evidence">证据 <span aria-hidden="true">↗</span></a></div>
18
+ <span class="nav-date">RESEARCH NOTE <b>26.09.28</b></span>
19
+ </div></nav>
20
+ <main id="top">
21
+ <header class="hero wrap">
22
+ <div class="hero-copy">
23
+ <div class="eyebrow"><i></i> SINGLE GPU · NVIDIA RTX 5090</div>
24
+ <h1>FLUX.3 Action<span>把等待减半。</span></h1>
25
+ <p class="hero-lead">从编译与混合精度,到注意力内核与数据搬运。<br class="desktop">在相同四步推理工作负载下,将动作预测压到 <strong>约 685 ms</strong>。</p>
26
+ <div class="hero-actions"><a class="button primary" href="#performance">探索实测结果 <span>↓</span></a><a class="button ghost" href="data/flux3-5090-public-evidence.zip" download>下载测量数据 <span>↗</span></a></div>
27
+ <div class="hero-tags"><span>FLUX.3 Action DROID</span><span>4 NFE · seed 0</span><span>质量 gate 通过</span></div>
28
+ </div>
29
+ <div class="hero-visual" aria-label="两个输入较原始 BF16 加速 2.04 到 2.05 倍">
30
+ <div class="visual-top"><span class="mono">WARM INFERENCE</span><span class="small-dot">已验证</span></div>
31
+ <div class="speed-number">2.05<span>×</span></div>
32
+ <p class="visual-sub">相对原始 BF16 · 两个输入 2.04–2.05×</p>
33
+ <div class="hero-rail"><div class="rail-label"><span>ORIGINAL</span><b>1,402.5 <small>ms</small></b></div><div class="rail-track"><div class="rail-original"></div></div></div>
34
+ <div class="hero-rail"><div class="rail-label"><span>OPTIMIZED</span><b class="mint">685.2 <small>ms</small></b></div><div class="rail-track"><div class="rail-final"></div></div></div>
35
+ <div class="visual-foot"><span>两个输入的 median 均值</span><span>延迟 <b>−51.1%</b></span></div>
36
+ </div>
37
+ </header>
38
+ <div class="wrap metrics">
39
+ <article><span class="metric-label">最终请求延迟</span><div class="metric-value">684.6–685.8 <small>ms</small></div><p>完整 warm action chunk</p></article>
40
+ <article><span class="metric-label">本轮无损优化</span><div class="metric-value mint">−5.3<small>%</small></div><p>相对固定 Sage2 基线的额外延迟下降</p></article>
41
+ <article><span class="metric-label">ABBA 输出逐位一致</span><div class="metric-value">120 <small>/ 120</small></div><p>同进程交替测量,全部请求匹配</p></article>
42
+ <article><span class="metric-label">原质量 gate</span><div class="metric-value">2 <small>/ 2 PASS</small></div><p>两个固定离线观测,阈值保持不变</p></article>
43
+ </div>
44
+
45
+ <section class="wrap section" id="performance">
46
+ <div class="section-heading"><div><div class="eyebrow muted">01 / PERFORMANCE</div><h2>每一段加速,都有实测落点。</h2><p>相同 GPU、checkpoint、输入、seed 和四步配置;统计量统一使用中位数。</p></div>
47
+ <div class="case-picker" role="group" aria-label="选择观测输入"><button type="button" data-case="0" aria-pressed="true">输入 01</button><button type="button" data-case="1" aria-pressed="false">输入 02</button></div></div>
48
+ <p class="case-caption"><span class="mono">OBSERVATION <span data-case-number>01</span></span><span id="case-task">将黄色杯中的内容物倒入粉色碗中</span></p>
49
+ <div class="performance-grid">
50
+ <article class="panel waterfall"><div class="panel-top"><h3>从原版到最终路径</h3><span class="mono">MEDIAN / ms · 越短越快</span></div><div id="stage-bars"></div><div class="chart-axis"><span>0</span><span>500</span><span>1,000</span><span>1,500 ms</span></div>
51
+ <p class="footnote">阶段 01–04 为历史独立进程结果;阶段 05 使用最终 ABBA 中位数。这里呈现优化路线,阶段差值不作为严格单项消融。</p>
52
+ </article>
53
+ <aside class="panel result-panel"><span class="eyebrow">SELECTED INPUT</span><div class="selected-speed"><span id="selected-speed">2.040</span><small>×</small></div><p>相对原始 BF16 的总加速</p><div class="divider"></div><dl class="key-values"><div><dt>原始 BF16</dt><dd id="selected-original">1,396.406 ms</dd></div><div><dt>最终路径</dt><dd class="mint" id="selected-final">684.603 ms</dd></div><div><dt>每次请求减少</dt><dd id="selected-saved">711.802 ms</dd></div><div><dt>延迟下降</dt><dd id="selected-reduction">50.97%</dd></div></dl><a class="text-link" href="data/summary.json" download>查看精确数值 <span>↗</span></a></aside>
54
+ </div>
55
+ <div class="abba-grid">
56
+ <article class="panel"><div class="panel-top"><h3>最后 5.3%,用交替测量确认</h3><span class="badge">ABBA · 15 组</span></div><div class="legend"><span><i class="blue-dot"></i>固定 Sage2 基线</span><span><i class="mint-dot"></i>全部无损优化</span></div><div id="abba-chart" class="abba-chart"></div><p class="footnote">每路径、每输入 5 次预热 + 30 次计时;A/B 模式切换在计时外。横轴是各路径的样本序号,纵轴显示实际延迟区间。</p></article>
57
+ <article class="panel abba-summary"><span class="eyebrow muted">PAIRED COMPARISON</span><h3><span id="abba-before">722.625</span><span class="muted-text"> → </span><span class="mint" id="abba-after">684.603</span><small> ms</small></h3><p>同一个进程、同一个模型,在热态请求间交替切换优化。</p><div class="mini-metrics"><div><b id="abba-drop">5.262%</b><span>额外延迟下降</span></div><div><b id="abba-speed">1.05554×</b><span>额外加速倍数</span></div></div><p class="exact-note">✓ 120 次输出全部逐位一致</p><p class="footnote">独立重启复测也通过。主结论保留 ABBA 数据,不以另一次运行的更低绝对时间替代。</p></article>
58
+ </div>
59
+ </section>
60
+
61
+ <section class="section engineering-section" id="engineering"><div class="wrap">
62
+ <div class="section-heading"><div><div class="eyebrow muted">02 / ENGINEERING</div><h2>先减少计算成本,再消除搬运。</h2><p>混合精度带来主要性能提升;最后一轮保持既有计算结果,继续压缩内存与调度开销。</p></div></div>
63
+ <div class="pipeline"><span>图像 / VAE conditioning</span><b>→</b><span>4 步视频 + 动作去噪</span><b>→</b><span class="pipeline-final">1 × 32 × 8 动作输出</span></div>
64
+ <div class="stack">
65
+ <div class="stack-row"><span class="step-no">01</span><div><h3>编译与执行路径</h3><span class="tag">执行优化</span></div><p>编译 DiT / VAE,合并 CFG 分支并共享 conditioning,融合四步 UniPC 更新,使用既有 CUDA Graph 热态路径。</p><div class="stack-stat">1.26×<small>历史阶段 / vs. 原版</small></div></div>
66
+ <div class="stack-row"><span class="step-no">02</span><div><h3>混合精度投影</h3><span class="tag amber">数值近似 · 经 gate</span></div><p>保持 Q/K 投影为 BF16,其他选定投影使用 row-wise FP8。保留四步求解、guidance 和原模型权重来源。</p><div class="stack-stat">1.79–1.80×<small>历史累计 / vs. 原版</small></div></div>
67
+ <div class="stack-row"><span class="step-no">03</span><div><h3>SageAttention2</h3><span class="tag amber">数值近似 · 经 gate</span></div><p>per-thread INT8 QK、FP8 PV、FP32 累加;保留 K smooth 和 V smooth。采用 NHD 布局,覆盖 5 个 video early 与 28 个 joint block。</p><div class="stack-stat">1.96×<small>历史累计 / vs. 原版</small></div></div>
68
+ <div class="stack-row last"><span class="step-no">04</span><div><h3>融合、布局与缓存</h3><span class="tag green">无新增近似 · bit exact</span></div><p>融合中心化与量化、直接写目标布局、引用 V 投影输出,并缓存固定工作。将这套 Sage2 基线的延迟再降低约 5.3%。</p><div class="stack-stat mint">2.04–2.05×<small>最终累计 / vs. 原版</small></div></div>
69
+ </div>
70
+ <div class="notice"><span class="notice-label">“无损”的准确范围</span><p>最后一轮优化相对<strong>已固定的混合精度 + Sage2 基线</strong>输出逐位相同。整个优化路线包含量化近似,不宣称与原始 BF16 逐位相同。</p></div>
71
+ <div class="detail-heading"><h3>最后一轮,具体做了什么</h3><span>打开卡片查看实现细节</span></div>
72
+ <div class="details-grid">
73
+ <details open><summary><span class="detail-index">A</span><span>K 中心化 × INT8 quant</span><i>+</i></summary><div class="detail-body"><p>在量化核中完成 K 减均值,并显式保留原来的 BF16 舍入。Q quant、scale 与 INT8 规则保持一致,消除 K 中间张量。</p><div class="code-line">K → center + BF16 round + quant → INT8</div><div class="component"><span>主形状 K quant</span><b>104.65 → <em>59.02</em> μs</b></div></div></details>
74
+ <details open><summary><span class="detail-index">B</span><span>Norm / RoPE 直接写 NHD</span><i>+</i></summary><div class="detail-body"><p>仅调整生成核最后的存储类型和位置,直接输出 BF16 / NHD。保留原算术及实际归约配置,省去 Q/K 独立转换与拷贝。</p><div class="code-line">Norm / RoPE → BF16 · NHD → attention</div><div class="component"><span>作用范围</span><b>5 early + 28 joint blocks</b></div></div></details>
75
+ <details open><summary><span class="detail-index">C</span><span>V alias + tiled transpose</span><i>+</i></summary><div class="detail-body"><p>直接引用 V+MLP projection 的 V 切片,省去 V 物化;以 64×64、4 warps 的 Triton tile 完成转置、padding 和 permutation。V mean / scale / quant 仍用原核,保留 V smooth。</p><div class="component"><span>V quant 整段,含搬运</span><b>78.93 → <em>37.22</em> μs</b></div></div></details>
76
+ <details open><summary><span class="detail-index">D</span><span>固定工作缓存</span><i>+</i></summary><div class="detail-body"><p>缓存 timestep modulation、四步求解器 CPU 系数、同 seed 的噪声和位置 IDs。按依赖张量、seed、形状、设备及配置匹配;每个输入的观测推理仍照常执行。</p><div class="component"><span>输出检查</span><b class="mint">逐位一致</b></div></div></details>
77
+ </div><p class="footnote">组件时间来自对应真实形状测试,用于解释机会;不能直接相加或当作 E2E 加速倍数。</p>
78
+ </div></section>
79
+
80
+ <section class="section wrap" id="quality">
81
+ <div class="section-heading"><div><div class="eyebrow muted">03 / QUALITY & REPRODUCIBILITY</div><h2>速度之外,保留原来的判断标准。</h2><p>最终路径与原始 BF16 输出对照;下面的数值随“输入 01 / 02”选择联动。</p></div><span class="status-pill"><i></i> 2 / 2 原 gate 通过</span></div>
82
+ <div class="quality-grid"><article class="panel gate-panel"><div class="panel-top"><h3>误差距离阈值还有多远</h3><span class="mono">INPUT <span data-case-number>01</span></span></div><div id="quality-bars"></div><p class="footnote">条形长度 = 误差 / 阈值,右端为 gate 上限。低于阈值仅表示本次离线数值筛查通过。</p></article><article class="panel quality-copy"><span class="eyebrow">SAME GATE. SAME WORKLOAD.</span><h3>两个输入通过。<br>阈值没有放宽。</h3><p>joint MAE ≤ 0.02 rad,joint max ≤ 0.05 rad,gripper max ≤ 0.05;相对 recorded action 的 joint MAE 退化 ≤ 0.02 rad。</p><div class="recorded"><span>当前输入 · recorded joint MAE 变化</span><b id="recorded-change">−0.00859 rad</b><small>负值表示本输入的 MAE 下降</small></div><p class="boundary">评测范围:2 个固定离线观测。没有进行机器人 rollout,不能据此推断任务成功率或泛化表现。</p></article></div>
83
+ <article class="panel reproducibility"><div class="repro-copy"><div class="eyebrow muted">RESTART CONSISTENCY</div><h3>固定实际 launcher,复现同一份输出。</h3><p>重启诊断发现:权重、conditioning 与第一次 DiT 输入相同,但 3 个 LayerNorm 核的 R0_BLOCK 被 autotune 在 512 / 1024 之间切换,第一次 DiT 输出开始分歧。</p><p>冻结通过原 gate 的 <strong>46 个实际 hot launcher 配置</strong>,并绑定生成代码 SHA。固定基线、全部优化和最终独立进程复测的输出文件哈希一致。</p><div class="repro-tags"><span>420 参数张量已比对</span><span>2 个输出跨进程一致</span><span>重复运行最大差异 0</span></div></div><div class="repro-proof"><span class="mono">OUTPUT SHA256 / 四份记录一致</span><div><span>INPUT 01</span><code>b94ec2cdfe33…2902e132</code><b>✓</b></div><div><span>INPUT 02</span><code>cce231bfffb1…1c99a</code><b>✓</b></div><a class="text-link" href="data/restart-verification.json" download>下载完整哈希与复测结果 ↗</a><p>仅对本轮已验证的代码、环境和工作负载成立。</p></div></article>
84
+ <details class="audit"><summary><span>实验边界与保留的失败记录</span><i>+</i></summary><div class="audit-grid"><div><h4>重启失败如实保留</h4><p>早期 fresh runner 的 case 0 joint max 为 0.053043 rad;诊断 v1 为 0.071199 rad,均超过 0.05。最终冻结通过 gate 的具体配置后完成复现验证。这不是“所有 autotune 配置都能过 gate”的证明。</p></div><div><h4>没有收益的方向停止集成</h4><p>主要 GEMM 形状的同精度 autotune / padding 没有收益;改变 bits 且更慢的 FP8 attention-out 被拒绝。early BF16 小核理论收益上限约 0.23 ms / request,未继续移植。</p></div><div><h4>已有优化不重复计算</h4><p>CUDA Graph、共享 CFG、静态编译路径和融合 solver 已在前期基线中。最后一轮没有再将它们计算为新增收益,也没有减少推理步数。</p></div><div><h4>5090 与 B200 分开看</h4><p>本页只汇总完成验证的单卡 RTX 5090 路线。参考项目的 GB200 数据及本任务的 B200 VC-Attn 研究不并入这组结果;最终 5090 路径使用 SageAttention2。</p></div></div></details>
85
+ </section>
86
+
87
+ <section class="section evidence-section" id="evidence"><div class="wrap">
88
+ <div class="section-heading"><div><div class="eyebrow muted">04 / METHODS & EVIDENCE</div><h2>结论可以点开,数据可以重算。</h2><p>报告使用已完成的测量记录。下载包保留数值、配置与来源哈希,便于独立核查。</p></div><a class="button primary" href="data/flux3-5090-public-evidence.zip" download>下载公开证据包 <span>↓</span></a></div>
89
+ <div class="methods-grid"><div class="panel"><h3>计时边界</h3><div class="timing-in"><span>计入</span><p>完整 warm <code>predict_action_chunk</code>:图像 / VAE conditioning + 四步视频 / 动作去噪,每次请求同步 GPU。</p></div><div class="timing-out"><span>不计入</span><p>权重加载、Qwen 文本编码、首次编译 / 图捕获及 warmup。这里报告热态请求延迟。</p></div><p class="footnote">原版与历史阶段使用同一任务 harness。额外无损收益来自同进程 ABBA;总收益相对历史原始 BF16。</p></div><div class="panel"><h3>固定配置</h3><dl class="config-grid"><dt>硬件</dt><dd>1 × RTX 5090 / SM120</dd><dt>求解器</dt><dd>Cosmos UniPC · 4 NFE · shift 5</dd><dt>Guidance</dt><dd>video 4 / action 1</dd><dt>输入与输出</dt><dd>2 固定观测 / 1 × 32 × 8</dd><dt>随机种子</dt><dd>0</dd><dt>运行环境</dt><dd>Torch 2.12.1+cu130<br>Triton 3.7.1 / Sage 2.2.0</dd><dt>统计</dt><dd>5 warmup + 30 timed / path / input</dd></dl></div></div>
90
+ <div class="download-grid"><a href="data/summary.json" download><span class="file-icon">{ }</span><span><b>结果总览</b><small>精确比例 · 配置 · checkpoint</small></span><span>↓</span></a><a href="data/abba.json" download><span class="file-icon">↔</span><span><b>原始 ABBA 测量</b><small>120 次请求 · 完整时间序列</small></span><span>↓</span></a><a href="data/quality.json" download><span class="file-icon">✓</span><span><b>质量 gate</b><small>原阈值 · 每输入误差</small></span><span>↓</span></a><a href="data/provenance.json" download><span class="file-icon">#</span><span><b>来源与哈希</b><small>原始 artifact SHA256</small></span><span>↓</span></a></div>
91
+ <details class="source-details"><summary><span>模型版本与参考来源</span><i>+</i></summary><div><p><a href="https://huggingface.co/black-forest-labs/flux-3-action-droid" target="_blank" rel="noreferrer">black-forest-labs/flux-3-action-droid ↗</a><code>3d0887bdc7acee1686b19afac267125d519ff4f1</code></p><p><a href="https://huggingface.co/black-forest-labs/flux-3-action-base" target="_blank" rel="noreferrer">black-forest-labs/flux-3-action-base ↗</a><code>62878e2925e59b7a89ec14463ce89932624c490d</code></p><p>参考实现:<a href="https://github.com/lyttttt3333/flux-action-gb200-optimized/tree/823db016f814d466be0b140434d71909181bcff0" target="_blank" rel="noreferrer">flux-action-gb200-optimized @ 823db016 ↗</a></p><p>视觉参考:<a href="https://transactions-layout-photographs-paperbacks.trycloudflare.com/" target="_blank" rel="noreferrer">GB200 加速与评测报告 ↗</a>。本页所有 5090 数值来自本任务测量,未复用参考页的仿真与成功率结果。</p></div></details>
92
+ <p id="data-error" role="alert" hidden>交互数据暂时无法加载。静态结论仍可阅读,也可通过上方链接下载原始数据。</p>
93
+ <noscript><p class="notice">当前浏览器未启用 JavaScript。页面正文与数据下载可正常使用,交互图表需启用 JavaScript。</p></noscript>
94
+ </div></section>
95
+ </main>
96
+ <footer class="wrap"><a class="brand" href="#top"><span class="brand-icon" aria-hidden="true">↗</span> FLUX<span class="brand-light"> / ACTION</span></a><p>RTX 5090 · 实验报告 <span>2026.09.28</span></p><a href="#top">返回顶部 ↑</a></footer>
97
+ </body>
98
+ </html>
style.css ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ body {
2
+ padding: 2rem;
3
+ font-family: -apple-system, BlinkMacSystemFont, "Arial", sans-serif;
4
+ }
5
+
6
+ h1 {
7
+ font-size: 16px;
8
+ margin-top: 0;
9
+ }
10
+
11
+ p {
12
+ color: rgb(107, 114, 128);
13
+ font-size: 15px;
14
+ margin-bottom: 10px;
15
+ margin-top: 5px;
16
+ }
17
+
18
+ .card {
19
+ max-width: 620px;
20
+ margin: 0 auto;
21
+ padding: 16px;
22
+ border: 1px solid lightgray;
23
+ border-radius: 16px;
24
+ }
25
+
26
+ .card p:last-child {
27
+ margin-bottom: 0;
28
+ }
styles.css ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ :root{--bg:#080d12;--panel:#101820;--panel2:#141e28;--line:#26323d;--text:#edf4f6;--muted:#91a1af;--mint:#78efc0;--blue:#76aaff;--amber:#edc082;--mono:ui-monospace,SFMono-Regular,Consolas,monospace}
2
+ *{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:90px}body{margin:0;background:var(--bg);color:var(--text);font:15px/1.75 -apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button{font:inherit}button,a,summary{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible,summary:focus-visible{outline:2px solid var(--mint);outline-offset:5px}::selection{background:#78efc0;color:#080d12}.wrap{width:min(1200px,calc(100% - 80px));margin:auto}.mono{font-family:var(--mono);font-size:10px;letter-spacing:.06em}.mint{color:var(--mint)!important}.muted-text{color:var(--muted)}.skip{position:fixed;top:-80px;left:20px;z-index:100;background:var(--mint);color:#080d12;padding:12px}.skip:focus{top:12px}.nav{height:76px;position:sticky;top:0;z-index:20;background:#080d12ee;backdrop-filter:blur(18px);border-bottom:1px solid #ffffff0d}.nav-inner{display:flex;align-items:center;justify-content:space-between;height:100%;gap:24px}.brand{display:flex;align-items:center;gap:9px;font-weight:750;font-size:16px;letter-spacing:.025em;white-space:nowrap}.brand-icon{background:var(--mint);color:#0c1613;width:29px;height:29px;display:inline-grid;place-items:center;font-size:24px;line-height:1;border-radius:7px;margin-right:3px}.brand-light{font-weight:400;color:#adbac6}.nav-links{display:flex;gap:32px;font-size:13px;color:#bbc7d0}.nav-links a:hover,footer a:hover{color:var(--mint)}.nav-date{font-family:var(--mono);font-size:9px;letter-spacing:.08em;color:#718492;display:flex;gap:14px}.nav-date b{color:#a8b7c4;font-weight:400}.hero{padding:94px 0 70px;display:grid;grid-template-columns:1.18fr 1fr;align-items:center;gap:62px;position:relative}.hero::before{content:"";position:absolute;z-index:-1;inset:-80px -30px;background:radial-gradient(ellipse at 85% 40%,#42d6a013,transparent 50%),radial-gradient(ellipse at 0% 0%,#628cfb0d,transparent 60%);pointer-events:none}.eyebrow{font-family:var(--mono);font-size:10px;line-height:1.5;letter-spacing:.15em;font-weight:500;color:var(--mint);display:flex;align-items:center;gap:8px}.eyebrow.muted{color:#7f97a7}.eyebrow i,.small-dot::before,.status-pill i{display:inline-block;width:6px;height:6px;border-radius:100%;background:var(--mint)}h1{font-size:clamp(40px,4.65vw,66px);line-height:1.13;letter-spacing:-.052em;margin:22px 0 25px;font-weight:720;white-space:nowrap}h1 span{display:block;margin-top:12px;letter-spacing:-.045em;color:var(--mint)}.hero-lead{font-size:15px;line-height:1.95;color:#a9b7c1;margin:0}.hero-lead strong{font-weight:500;color:#d5e3e6}.hero-actions{display:flex;gap:13px;margin-top:29px}.button{display:inline-flex;align-items:center;justify-content:space-between;gap:24px;border-radius:6px;padding:12px 18px;font-size:12px;line-height:1.8;border:1px solid var(--line);font-weight:600;transition:background .18s,transform .18s;white-space:nowrap}.button:hover{transform:translateY(-2px)}.button.primary{background:var(--mint);color:#0b2219;border-color:var(--mint)}.button.primary:hover{background:#9df4d4}.button.ghost:hover{background:var(--panel)}.button span{font-size:18px;font-weight:400;line-height:1}.hero-tags{display:flex;flex-wrap:wrap;gap:10px;margin-top:28px;font-size:10px;color:#7f929f}.hero-tags span{display:flex;align-items:center;gap:10px}.hero-tags span+span::before{content:"";height:3px;width:3px;background:#43525c;border-radius:100%}.hero-visual{border:1px solid #2c4541;border-radius:16px;background:radial-gradient(ellipse at 50% 0%,#57dba31b,transparent 65%),linear-gradient(160deg,#14211ff2,#0d151ced);padding:26px 30px 23px;position:relative;overflow:hidden}.hero-visual::before{content:"";position:absolute;inset:0;background-image:linear-gradient(#ffffff03 1px,transparent 1px),linear-gradient(90deg,#ffffff03 1px,transparent 1px);background-size:28px 28px;pointer-events:none}.visual-top{display:flex;justify-content:space-between;align-items:center;color:#799b91;position:relative}.small-dot{font-size:10px;color:#b0d6c8;display:flex;align-items:center;gap:6px}.small-dot::before{content:"";width:4px;height:4px}.speed-number{font-size:clamp(92px,10.5vw,146px);letter-spacing:-.09em;line-height:1.15;font-weight:600;margin-top:14px;color:#b1f8da;font-variant-numeric:tabular-nums;position:relative}.speed-number span{font-size:.42em;font-weight:300;margin-left:12px;color:var(--mint)}.visual-sub{font-size:11px;color:#94aea5;margin:0 0 25px;position:relative}.hero-rail{margin-top:15px;position:relative}.rail-label{display:flex;justify-content:space-between;font-family:var(--mono);font-size:9px;color:#81949f;letter-spacing:.08em;align-items:baseline}.rail-label b{font-size:13px;font-weight:500;letter-spacing:0;color:#b4c4ce}.rail-label small{font-size:9px;color:#849e93}.rail-track{height:7px;margin-top:7px;background:#ffffff06;border-radius:2px;overflow:hidden}.rail-original{height:100%;width:100%;background:#50667a}.rail-final{height:100%;width:48.86%;background:linear-gradient(90deg,#48b694,var(--mint))}.visual-foot{display:flex;justify-content:space-between;border-top:1px solid #ffffff0d;margin-top:24px;padding-top:15px;font-size:10px;color:#6f8e87}.visual-foot b{font-family:var(--mono);font-size:13px;color:var(--mint);font-weight:500}.metrics{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(--line);background:#0e161d;border-radius:9px;overflow:hidden}.metrics article{padding:24px 26px}.metrics article+article{border-left:1px solid var(--line)}.metric-label{font-size:11px;color:#8ea0ae}.metric-value{font-size:28px;line-height:1.3;letter-spacing:-.05em;font-weight:600;margin-top:12px;font-variant-numeric:tabular-nums;white-space:nowrap}.metric-value small{font-size:13px;font-weight:400;letter-spacing:0;color:#8da4ad}.metrics article:first-child .metric-value{font-size:23px;line-height:1.6}.metrics p{font-size:10px;color:#6f8492;margin:9px 0 0}.section{padding-top:92px;padding-bottom:0}.section-heading{display:flex;justify-content:space-between;align-items:flex-end;gap:30px;margin-bottom:28px}.section-heading h2{font-size:29px;letter-spacing:-.035em;line-height:1.4;margin:10px 0 12px;font-weight:600}.section-heading p{margin:0;color:#91a3b0;font-size:13px;max-width:780px}.case-picker{display:flex;background:#111c24;border:1px solid var(--line);border-radius:6px;padding:4px;gap:3px;flex-shrink:0}.case-picker button{background:transparent;color:var(--muted);border:0;border-radius:3px;padding:7px 15px;font-size:11px;cursor:pointer}.case-picker button[aria-pressed=true]{background:var(--mint);color:#10281e;font-weight:650}.case-picker button:hover:not([aria-pressed=true]){background:#1d303a}.case-caption{display:flex;gap:15px;align-items:center;margin:0 0 17px;font-size:11px;color:#95a8b7}.case-caption .mono{color:#648978;border:1px solid #254636;background:#0f2019;padding:3px 8px;border-radius:3px;font-size:9px}.panel{background:linear-gradient(145deg,#121c25,#0f171f);border:1px solid var(--line);border-radius:10px;padding:26px;min-width:0}.panel-top{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:22px}.panel-top .mono{color:#647e8e;font-size:9px}h3{font-size:15px;line-height:1.5;letter-spacing:-.015em;margin:0;font-weight:600}.performance-grid{display:grid;grid-template-columns:minmax(0,2.15fr) minmax(260px,1fr);gap:18px}.stage-row{display:grid;grid-template-columns:24px 154px minmax(0,1fr) 73px;gap:12px;align-items:center;margin:23px 0}.stage-index{font-family:var(--mono);font-size:10px;color:#526d7b}.stage-label b{font-size:12px;font-weight:500;display:block}.stage-label small{display:block;color:#6e8797;font-size:9px;line-height:1.5;margin-top:3px}.stage-track{height:18px;background:#ffffff03;border-radius:3px;overflow:hidden}.stage-fill{height:100%;background:#597992;border-radius:3px;transition:width .4s ease}.stage-row:nth-child(2) .stage-fill{background:#66879d}.stage-row:nth-child(3) .stage-fill{background:#77a6b2}.stage-row:nth-child(4) .stage-fill{background:#62bfae}.stage-row.final .stage-fill{background:linear-gradient(90deg,#48be98,var(--mint))}.stage-row.final b,.stage-row.final .stage-value{color:var(--mint)}.stage-value{font-family:var(--mono);font-size:12px;text-align:right;color:#bbd0dd}.chart-axis{display:flex;justify-content:space-between;margin:14px 0 18px 202px;padding-right:0;font-family:var(--mono);font-size:9px;color:#577080;max-width:calc(100% - 287px);position:relative}.footnote{font-size:10px;line-height:1.8;color:#78909f;margin:16px 0 0}.result-panel{background:radial-gradient(ellipse at 90% 0%,#58dfaa0c,transparent 80%),#101920}.result-panel .eyebrow{font-size:9px;color:#799587}.selected-speed{font-size:64px;font-weight:500;line-height:1.2;letter-spacing:-.065em;margin:17px 0 3px;color:#c2f6df}.selected-speed small{font-size:32px;font-weight:300;margin-left:6px}.result-panel>p{font-size:11px;margin:0;color:#89a298}.divider{height:1px;background:var(--line);margin:23px 0 20px}.key-values{margin:0}.key-values div{display:flex;justify-content:space-between;gap:10px;font-size:11px;margin:14px 0}.key-values dt{color:#8b9ea9}.key-values dd{margin:0;font-family:var(--mono);color:#cad6dd}.text-link{display:flex;justify-content:space-between;align-items:center;color:var(--mint);font-size:11px;margin-top:23px}.text-link:hover{text-decoration:underline}.abba-grid{display:grid;grid-template-columns:1.65fr 1fr;gap:18px;margin-top:18px}.badge,.status-pill{color:#b4d9c9;border:1px solid #305243;background:#16291f;font-size:9px;border-radius:4px;padding:4px 8px;white-space:nowrap}.legend{display:flex;gap:22px;font-size:10px;color:#8aa0b0;margin:-6px 0 6px}.legend span{display:flex;gap:7px;align-items:center}.legend i{width:6px;height:6px;border-radius:2px}.blue-dot{background:var(--blue)}.mint-dot{background:var(--mint)}.abba-chart svg{width:100%;height:auto;display:block;overflow:visible}.abba-summary>h3{font:20px/1.6 var(--mono);letter-spacing:-.06em;white-space:nowrap;margin-top:21px}.abba-summary>h3 small{font-size:11px;color:#768c99}.abba-summary>p{font-size:11px;color:#829aa8;margin-top:12px}.mini-metrics{display:flex;gap:36px;margin:22px 0 17px}.mini-metrics b{display:block;font:22px/1.4 var(--mono);color:var(--mint);letter-spacing:-.05em}.mini-metrics span{font-size:10px;color:#668577}.abba-summary .exact-note{color:#b6d9c7;font-size:11px;padding-top:15px;border-top:1px solid var(--line);margin:0}.engineering-section{background:linear-gradient(#101b201a,#101b2066);padding-bottom:65px;margin-top:20px}.pipeline{display:flex;align-items:center;gap:15px;font-size:11px;color:#8ba1b1;margin-bottom:29px;flex-wrap:wrap}.pipeline span{border:1px solid var(--line);background:#111c24;padding:9px 13px;border-radius:4px}.pipeline b{font-weight:400;color:#4a6574}.pipeline .pipeline-final{color:var(--mint);border-color:#2a4c3b;background:#102018}.stack{border:1px solid var(--line);border-radius:10px;overflow:hidden;background:#101920}.stack-row{display:grid;grid-template-columns:32px 195px 1fr 135px;gap:25px;padding:25px 27px;align-items:center}.stack-row+.stack-row{border-top:1px solid var(--line)}.step-no{font-family:var(--mono);font-size:12px;color:#738d9e}.stack-row.last{background:#65d8a504}.stack-row.last .step-no{color:var(--mint)}.stack-row h3{font-size:14px}.tag{font-size:9px;color:#91a9bf;border:1px solid #304558;border-radius:4px;padding:2px 6px;display:inline-block;margin-top:8px}.tag.amber{color:#c6a779;border-color:#4a402e;background:#30271922}.tag.green{color:#83cda6;border-color:#2b4f39;background:#142c1d77}.stack-row p{font-size:12px;color:#8a9daa;line-height:1.85;margin:0}.stack-stat{font-family:var(--mono);font-size:20px;line-height:1.4;text-align:right;color:#c8d9de;white-space:nowrap;letter-spacing:-.05em}.stack-stat small{display:block;font-family:inherit;font-size:9px;letter-spacing:0;color:#6e8998;margin-top:6px}.notice{margin-top:20px;padding:16px 19px;display:flex;gap:23px;align-items:flex-start;border-left:2px solid #b79869;background:#2c251d40;border-radius:0 6px 6px 0}.notice-label{font-size:11px;color:#d7ba86;white-space:nowrap}.notice p{margin:0;font-size:11px;color:#acaca4}.notice strong{color:#cdc9b6;font-weight:500}.detail-heading{display:flex;justify-content:space-between;align-items:center;margin:40px 0 17px}.detail-heading>span{color:#647d8d;font-size:10px}.details-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start}details{background:#101a22;border:1px solid var(--line);border-radius:8px;overflow:hidden}summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:12px;padding:20px 22px;font-size:13px;font-weight:500}summary::-webkit-details-marker{display:none}summary>i{font:20px/1 var(--mono);color:#6c8696;margin-left:auto;font-style:normal;font-weight:300;transition:transform .2s}details[open]>summary>i{transform:rotate(45deg)}summary:hover{background:#ffffff02}.detail-index{font:12px/1.5 var(--mono);color:var(--mint);border:1px solid #2d5945;border-radius:4px;width:25px;height:25px;text-align:center;padding-top:3px}.detail-body{padding:0 22px 21px}.detail-body p{font-size:12px;line-height:1.85;color:#8fa4b1;margin:0 0 15px}.code-line{font:10px/1.8 var(--mono);background:#0b131a;border:1px solid #243440;border-radius:4px;padding:10px 12px;color:#8bb6a8;margin-bottom:17px;overflow:auto}.component{display:flex;justify-content:space-between;gap:12px;border-top:1px solid var(--line);padding-top:14px;font-size:10px;color:#708998}.component b{color:#b0c3cb;font-family:var(--mono);font-size:11px;font-weight:400}.component em{color:var(--mint);font-style:normal}.status-pill{font-size:11px;padding:8px 12px;display:flex;gap:9px;align-items:center;margin-bottom:4px}.quality-grid{display:grid;grid-template-columns:1.55fr 1fr;gap:18px}.gate-item{margin:25px 0}.gate-info{display:flex;justify-content:space-between;align-items:baseline;gap:16px;font-size:11px}.gate-info span{color:#9aafbd}.gate-info b{font-family:var(--mono);font-size:12px;color:#d8e7eb;font-weight:400}.gate-track{height:7px;background:#25343e;border-radius:2px;margin-top:11px;position:relative}.gate-track::after{content:"";position:absolute;right:0;top:-3px;height:13px;width:1px;background:#658975}.gate-fill{height:100%;background:linear-gradient(90deg,#32876a,#78d9a8);border-radius:2px;transition:width .4s ease}.gate-foot{display:flex;justify-content:space-between;margin-top:5px;font:9px/1.6 var(--mono);color:#5f7b6d}.quality-copy .eyebrow{font-size:9px}.quality-copy h3{font-size:27px;line-height:1.5;letter-spacing:-.035em;margin:17px 0}.quality-copy>p{font-size:11px;color:#8da5b4}.recorded{padding:14px 0;margin-top:18px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.recorded span,.recorded small{display:block;font-size:10px;color:#6d8999}.recorded b{font:20px/1.8 var(--mono);color:var(--mint);font-weight:400;letter-spacing:-.05em}.quality-copy .boundary{font-size:10px;color:#b9aa8d;margin-bottom:0}.reproducibility{display:grid;grid-template-columns:1.6fr 1fr;gap:40px;margin-top:18px}.repro-copy h3{font-size:19px;margin:10px 0 14px}.repro-copy p{font-size:11px;color:#8ea4b2;line-height:1.9;margin:10px 0}.repro-copy strong{color:#c8d6de;font-weight:500}.repro-tags{display:flex;gap:8px;flex-wrap:wrap;margin-top:19px}.repro-tags span{font-size:9px;padding:3px 7px;border:1px solid #294539;color:#7cac93;border-radius:3px}.repro-proof{align-self:center;border:1px solid #263c35;border-radius:6px;padding:22px;background:#0a1513}.repro-proof>.mono{font-size:9px;color:#659181}.repro-proof>div{display:flex;align-items:center;gap:10px;margin:20px 0;font-family:var(--mono);font-size:9px;color:#6f8c83}.repro-proof code{font-size:10px;color:#a2c6b5;white-space:nowrap}.repro-proof b{margin-left:auto;color:var(--mint)}.repro-proof .text-link{font-size:10px;padding-top:14px;border-top:1px solid #223c30}.repro-proof p{font-size:9px;color:#628475;margin-bottom:0}.audit{margin-top:18px;background:#11181c}.audit summary,.source-details summary{font-size:12px;color:#aab8c0}.audit-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px 35px;padding:0 24px 24px}.audit-grid h4{font-size:11px;color:#c6b28b;margin:0 0 6px;font-weight:500}.audit-grid p{font-size:11px;color:#8398a7;margin:0;line-height:1.85}.evidence-section{padding-bottom:62px}.methods-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.timing-in,.timing-out{display:grid;grid-template-columns:48px 1fr;gap:16px;margin:20px 0}.timing-in>span,.timing-out>span{font-size:11px;color:var(--mint)}.timing-out>span{color:#a2adba}.timing-in p,.timing-out p{font-size:12px;color:#8da3b2;margin:0}code{font-family:var(--mono);font-size:.9em;overflow-wrap:anywhere}.config-grid{display:grid;grid-template-columns:100px 1fr;gap:9px;margin:18px 0 0;font-size:11px}.config-grid dt{color:#6e8999}.config-grid dd{margin:0;color:#b4c6d2}.download-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:18px 0}.download-grid>a{display:flex;align-items:center;gap:13px;padding:19px 16px;border:1px solid var(--line);border-radius:6px;background:#101a22;transition:border-color .2s}.download-grid>a:hover{border-color:#558a70}.file-icon{font-family:var(--mono);font-size:19px;color:#7bc9a2;font-weight:300}.download-grid b{font-size:11px;font-weight:500;display:block}.download-grid small{font-size:9px;color:#6c8798;display:block;margin-top:3px}.download-grid>a>span:last-child{margin-left:auto;color:#637f90}.source-details{background:transparent}.source-details>div{padding:0 23px 18px;font-size:11px;color:#879fab}.source-details>div p{margin:12px 0}.source-details code{display:block;color:#6b897c;margin-top:3px}.source-details a{color:#a8d3bf}.source-details a:hover{text-decoration:underline}#data-error{padding:15px;color:var(--amber);border:1px solid #816036;font-size:13px}footer{border-top:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:20px;padding-top:30px;padding-bottom:36px}footer .brand{font-size:12px}footer .brand-icon{width:24px;height:24px;font-size:19px}footer p,footer>a:last-child{font-size:10px;color:#677f8e}footer p span{margin-left:15px;font-family:var(--mono)}
3
+ @media(min-width:1400px){.hero{padding-top:100px;padding-bottom:82px}}
4
+ @media(max-width:1100px){.wrap{width:calc(100% - 48px)}.hero{gap:28px;padding-top:70px}.hero-visual{padding:23px}.nav-date{display:none}.metrics article{padding:23px 18px}.metrics article:first-child .metric-value{font-size:19px}.metric-value{font-size:25px}.stage-row{grid-template-columns:20px 120px minmax(0,1fr) 62px;gap:8px}.stage-label b{font-size:11px}.stage-label small{font-size:8px}.stage-value{font-size:10px}.chart-axis{margin-left:156px;max-width:calc(100% - 227px)}.performance-grid{grid-template-columns:1.85fr 1fr}.panel{padding:22px}.stack-row{grid-template-columns:24px 170px 1fr 110px;gap:18px;padding:23px}.stack-stat{font-size:18px}.reproducibility{gap:23px}.repro-proof{padding:17px}.download-grid{grid-template-columns:1fr 1fr}.abba-summary>h3{font-size:17px}.mini-metrics{gap:25px}.hero-actions{gap:9px}.hero-actions .button{gap:14px;padding:10px 13px;font-size:11px}}
5
+ @media(max-width:800px){.hero{grid-template-columns:1fr 1fr;gap:22px}.hero-lead{font-size:13px}.desktop{display:none}.hero-actions{flex-wrap:wrap}h1{font-size:38px}.speed-number{font-size:99px}.hero-tags{font-size:8px;gap:7px}.metrics{grid-template-columns:1fr 1fr}.metrics article:nth-child(3){border-left:0;border-top:1px solid var(--line)}.metrics article:nth-child(4){border-top:1px solid var(--line)}.metrics article:first-child .metric-value{font-size:24px;line-height:1.3}.metrics p{font-size:10px}.section{padding-top:65px}.section-heading h2{font-size:25px}.performance-grid,.abba-grid,.quality-grid{grid-template-columns:1fr}.result-panel{display:grid;grid-template-columns:1fr 1fr;column-gap:25px;align-items:start}.result-panel>.eyebrow{grid-column:1}.selected-speed{grid-column:1;font-size:50px;margin:10px 0 0}.result-panel>p{grid-column:1}.result-panel .divider{display:none}.key-values{grid-column:2;grid-row:1/5}.key-values div{margin:10px 0}.result-panel .text-link{grid-column:1;margin:15px 0 0;justify-content:flex-start;gap:15px}.stage-row{grid-template-columns:24px 160px minmax(0,1fr) 74px;gap:12px}.stage-label b{font-size:12px}.stage-label small{font-size:9px}.stage-value{font-size:12px}.chart-axis{margin-left:208px;max-width:calc(100% - 294px)}.abba-summary>h3{font-size:23px}.stack-row{grid-template-columns:25px 170px 1fr;gap:18px}.stack-stat{grid-column:2;text-align:left;font-size:17px}.stack-row p{grid-column:3;grid-row:1/3}.notice{display:block}.notice p{margin-top:7px}.reproducibility{grid-template-columns:1fr}.methods-grid{grid-template-columns:1fr}.repro-proof>div{justify-content:flex-start}.repro-proof b{margin-left:0}.section-heading .button{padding:10px 13px;font-size:10px;gap:12px}.status-pill{font-size:10px}.panel-top .mono{font-size:8px}}
6
+ @media(max-width:600px){.wrap{width:calc(100% - 36px)}.nav{height:62px}.brand{font-size:13px;gap:6px}.brand-icon{width:24px;height:24px;font-size:20px}.nav-links{gap:16px;font-size:11px}.nav-links a:last-child{display:none}.hero{display:block;padding-top:48px;padding-bottom:28px}.hero .eyebrow{font-size:9px}h1{font-size:clamp(37px,9.7vw,53px);margin:18px 0 21px}h1 span{margin-top:9px}.hero-lead{font-size:13px;line-height:1.9}.hero-actions{margin-top:24px;gap:10px}.hero-actions .button{font-size:11px;padding:11px 15px;gap:18px}.hero-tags{margin-top:22px;font-size:9px}.hero-visual{margin-top:32px;padding:21px 24px}.speed-number{font-size:118px;margin-top:8px}.visual-sub{font-size:10px;margin-bottom:18px}.visual-foot{margin-top:19px;padding-top:13px}.metrics article{padding:18px 14px}.metric-label{font-size:10px}.metric-value{font-size:23px}.metrics article:first-child .metric-value{font-size:18px;line-height:1.66}.metric-value small{font-size:11px}.metrics p{font-size:9px;line-height:1.6;max-width:150px}.metrics article:nth-child(4) .metric-value{line-height:1.4}.section{padding-top:51px}.section-heading{align-items:flex-start;gap:18px;flex-direction:column;margin-bottom:21px}.section-heading h2{font-size:24px;margin-top:9px;line-height:1.5}.section-heading p{font-size:12px;line-height:1.8}.eyebrow{font-size:9px}.case-picker{align-self:flex-start}.case-caption{flex-wrap:wrap;gap:8px;font-size:10px}.panel{padding:20px 17px}.panel-top{margin-bottom:18px;gap:9px;flex-wrap:wrap}.panel-top h3{font-size:13px}.stage-row{grid-template-columns:18px 105px minmax(0,1fr) 60px;gap:7px;margin:22px 0}.stage-label b{font-size:10px}.stage-label small{font-size:8px}.stage-index{font-size:8px}.stage-value{font-size:10px}.stage-track{height:16px}.chart-axis{margin-left:137px;max-width:calc(100% - 204px);font-size:7px}.chart-axis span:nth-child(2),.chart-axis span:nth-child(3){display:none}.footnote{font-size:9px}.selected-speed{font-size:43px;letter-spacing:-.06em}.selected-speed small{font-size:25px}.result-panel{column-gap:12px}.key-values div{font-size:9px}.result-panel>.eyebrow{font-size:8px}.result-panel>p{font-size:9px}.result-panel .text-link{font-size:9px;gap:9px}.abba-summary>h3{font-size:22px;letter-spacing:-.075em}.mini-metrics b{font-size:23px}.mini-metrics{gap:42px}.pipeline{font-size:10px;gap:9px}.pipeline span{padding:7px 9px}.pipeline b{font-size:10px}.stack-row{grid-template-columns:20px 1fr auto;gap:13px;padding:20px 16px}.stack-row h3{font-size:13px}.stack-row p{grid-column:2/4;grid-row:auto;font-size:11px}.stack-stat{grid-column:3;grid-row:1;text-align:right;font-size:15px;align-self:start}.stack-stat small{font-size:7px;max-width:91px;white-space:normal;line-height:1.7}.tag{font-size:8px}.step-no{align-self:start;margin-top:2px;font-size:10px}.notice{padding:14px 15px}.notice p{font-size:10px}.detail-heading{margin-top:30px}.detail-heading h3{font-size:13px}.detail-heading>span{font-size:8px}.details-grid{grid-template-columns:1fr;gap:12px}summary{padding:18px 17px;font-size:12px}.detail-body{padding:0 17px 18px}.detail-body p{font-size:11px}.component{font-size:9px}.component b{font-size:10px}.quality-copy h3{font-size:26px}.gate-info span{font-size:10px}.gate-info b{font-size:11px}.gate-foot{font-size:8px}.repro-copy h3{font-size:17px}.repro-copy p{font-size:11px}.reproducibility{gap:18px}.audit-grid{grid-template-columns:1fr;padding:0 18px 20px;gap:18px}.download-grid{gap:10px}.download-grid>a{padding:14px 11px;gap:8px}.file-icon{font-size:16px}.download-grid b{font-size:10px}.download-grid small{font-size:8px;line-height:1.6}.download-grid>a>span:last-child{font-size:12px}.timing-in,.timing-out{grid-template-columns:35px 1fr;gap:10px}.timing-in p,.timing-out p{font-size:11px}.config-grid{font-size:10px;grid-template-columns:82px 1fr;gap:10px}.source-details>div{padding:0 17px 17px;font-size:10px}.source-details code{font-size:9px}.evidence-section{padding-bottom:35px}footer{padding-top:23px;padding-bottom:30px;gap:13px;flex-wrap:wrap}footer .brand{font-size:11px}footer p{font-size:9px;margin:0}footer>a:last-child{font-size:9px}footer p span{margin-left:8px}.engineering-section{padding-bottom:36px;margin-top:4px}}
7
+ @media(max-width:600px){.hero::before{inset:-20px 0}}
8
+ @media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{transition:none!important}}