Settings: what each CuteAFD setting buys

CuteAFD has switches that trade a little speed, or GPU memory, for precision. On K3.25, W8A16 prefill closes about 59% of the long-code difference from the vLLM fork for about 4% longer time to first token; with all three switches no difference is resolved, at about 4% slower decode. On K4 on two RTX PRO 6000s, W8A16 prefill with the amax scale rule closes about two thirds for about 4% longer first token, with decode level; the BF16 options do not fit there. Every setting here was measured in a follow-up outside the frozen protocols.

Every setting tested

Long code: P-B 8-16K, CuteAFD − vLLM fork (K3.25 coarse KL; K4 KL_pb20, top-20), 95% interval. Change against as shipped: the same positions, CuteAFD against itself (bit-deterministic, so no band). First token and decode: against an as-shipped launch measured beside it. Settings marked "no" do not fit a serving launch on two RTX PRO 6000s with K4; their precision comes from scoring launches.

SettingConfig lines (added to the serving config)Serves on 2x RTX?Long code (8-16K): CuteAFD − vLLM forkChange against as shipped (paired)Teacher panel (P-A): CuteAFD − vLLM forkFirst token against as shippedDecode against as shippedSource
K3.25: as shippedyes+0.0054 [+0.0034, +0.0074]not scoredBlock Q
BF16 KDA projectionsGLM5_FLASH_KDA_FP8=offyes+0.0028 [+0.0007, +0.0052]
against the mean of the first two vLLM runs only (as shipped reads +0.0050 there)
−0.0022 [−0.0047, +0.0005]not scored−0.9% (−2.0% to +0.3%)0.92x medianF1
BF16 output headGLM5_FLASH_FP8_HEAD=offyes+0.0048 [+0.0028, +0.0069]
against the mean of the first two vLLM runs only (as shipped reads +0.0050 there)
−0.0003 [−0.0004, −0.0001]not scored+0.4% (+0.1% to +0.7%)0.94x medianF1
W8A16 prefillGLM5_FLASH_FP8_PREFILL=offyes+0.0022 [+0.0005, +0.0041]−0.0032 [−0.0049, −0.0013]not scored+4.1% (+3.8% to +4.5%)0.99x medianF1
W8A16 prefill + BF16 KDA projections + BF16 output headGLM5_FLASH_KDA_FP8=off
GLM5_FLASH_FP8_HEAD=off
GLM5_FLASH_FP8_PREFILL=off
yes+0.0016 [−0.0005, +0.0033]−0.0038 [−0.0063, −0.0013]not scored+2.8% (+1.5% to +3.6%)0.96x median, worst cell 0.86xF1
K4: as shippedMAX_CONTEXT_TOKENS=262144yes+0.0090 [+0.0062, +0.0122]+0.0027 [+0.0012, +0.0047]Block Q
W8A16 prefillGLM5_FLASH_FP8_PREFILL=offyes+0.0072 [+0.0048, +0.0096]−0.0019 [−0.0039, −0.0002]+0.0009 [−0.0014, +0.0028]+3.5% (+3.4% to +3.6%)level (0.96-1.08x per cell)F1-K4
amax scale ruleFP8_SCALES=amaxyes+0.0068 [+0.0046, +0.0090]−0.0023 [−0.0054, +0.0008]+0.0025 [+0.0003, +0.0050]not measured (stored scale values only)F1-K4b
best scale ruleFP8_SCALES=bestyes+0.0080 [+0.0066, +0.0096]−0.0010 [−0.0039, +0.0015]+0.0009 [−0.0012, +0.0025]not measured (stored scale values only)F1-K4b
W8A16 prefill + amax scale ruleGLM5_FLASH_FP8_PREFILL=off
FP8_SCALES=amax
yes+0.0030 [+0.0011, +0.0049]−0.0061 [−0.0095, −0.0029]+0.0006 [−0.0016, +0.0027]+4.2% (+4.0% to +4.2%)level (0.93-1.09x per cell)K4c
W8A16 prefill + best scale ruleGLM5_FLASH_FP8_PREFILL=off
FP8_SCALES=best
yes+0.0047 [+0.0030, +0.0065]−0.0043 [−0.0068, −0.0023]+0.0009 [−0.0005, +0.0023]+4.1% (+4.1% to +4.6%)level (0.96-1.04x per cell)K4d
BF16 output headGLM5_FLASH_FP8_HEAD=offno+0.0087 [+0.0059, +0.0119]−0.0003 [−0.0004, −0.0002]+0.0025 [+0.0010, +0.0045]not measured (does not fit)F1-K4b
BF16 KDA projectionsGLM5_FLASH_KDA_FP8=offno+0.0055 [+0.0026, +0.0084]−0.0035 [−0.0065, −0.0007]+0.0028 [+0.0015, +0.0045]not measured (does not fit)F1-K4b
Every switch (best scale rule, BF16 KDA and head, W8A16 prefill)FP8_SCALES=best
GLM5_FLASH_KDA_FP8=off
GLM5_FLASH_FP8_HEAD=off
GLM5_FLASH_FP8_PREFILL=off
no+0.0041 [+0.0027, +0.0054]−0.0050 [−0.0078, −0.0021]+0.0012 [−0.0008, +0.0030]not measured (does not fit)F1-K4b
Control: drafter off (validation, not a setting)SPECULATOR=offscoring only+0.0090 [+0.0061, +0.0121]0 (rows byte-identical)+0.0027 [+0.0012, +0.0048]F1-K4b

The share of the difference a setting closes is (as shipped − setting) ÷ as shipped against the vLLM fork: K3.25 W8A16 59%; K4 W8A16 21%, W8A16 + amax 67% (about two thirds), W8A16 + best 48%. Sources: RESULTS-F1.md, RESULTS-F1K4.md, RESULTS-F1K4b.md (K4b, K4c, K4d) and their summary JSON.

Settings map

K3.25 settings map: first-token cost against the remaining long-code difference (lower is closer to the vLLM fork)

What this shows. Each triangle is one CuteAFD setting: across, its first-token cost against as shipped; up and down, how far it still is from the vLLM fork on long code reading, here against the mean of its first two runs (follow-up F1's reference).

CuteAFD setting (serves on 2x RTX)vLLM fork (0)CuteAFD as shippedinterval excludes 0includes 0
P-B 8-16K, long code reading · 18 windows · 7,522 scored positions · history 10,284 / 12,069 / 14,402 tokens (min / median / max) · reference: BF16 run, top 1,024 ids + tail · metric: coarse KL, nats
−0.0020+0.002+0.004+0.006+0.008−4%−2%0+2%+4%+6%← sooner first tokenlater first token →time to first token, % change against CuteAFD as shipped (median of 8 cells)coarse KL difference from the vLLM fork (mean of its first two runs), P-B 8-16K↑ further from the vLLM fork · ↓ closervLLM forkCuteAFD as shippedas shipped: first token +0.0% against as shipped, decode 1.00x; still +0.0050 [+0.0031, +0.0071] KL from the vLLM fork at 8-16KBF16 head: first token +0.4% against as shipped, decode 0.94x; still +0.0048 [+0.0028, +0.0069] KL from the vLLM fork at 8-16KBF16 head · decode 0.94xBF16 KDA: first token -0.9% against as shipped, decode 0.92x; still +0.0028 [+0.0007, +0.0052] KL from the vLLM fork at 8-16KBF16 KDA · decode 0.92xW8A16 prefill: first token +4.1% against as shipped, decode 0.99x; still +0.0019 [+0.00004, +0.0039] KL from the vLLM fork at 8-16KW8A16 prefill · decode 0.99xall three: first token +2.8% against as shipped, decode 0.96x; still +0.0013 [−0.0008, +0.0031] KL from the vLLM fork at 8-16Kall three · decode 0.96x

How to use it. Points low and to the left close the most for the least first-token time; decode cost is in each label, because on K3.25 it is not level for every switch.

Table view: the exact numbers
SettingFirst token against as shippedDecode against as shippedRemaining difference from the vLLM fork, 8-16K
as shipped0 (reference)1.00x (reference)+0.0050 [+0.0031, +0.0071]
BF16 KDA−0.9%0.92x+0.0028 [+0.0007, +0.0052]
BF16 head+0.4%0.94x+0.0048 [+0.0028, +0.0069]
W8A16 prefill+4.1%0.99x+0.0019 [+0.00004, +0.0039]
all three+2.8%0.96x+0.0013 [−0.0008, +0.0031]

Here the vLLM reference is the mean of its first two runs, as follow-up F1 publishes it (f1/F1-RESULTS.json); the settings table above gives the three-run figures. Speed: each arm ÷ the F1 base launch over the 8 cells of the speed subset; no interval is published for the speed ratios.

K4 settings map: first-token cost against the remaining long-code difference (lower is closer to the vLLM fork)

What this shows. The same map for K4: filled triangles serve on two RTX PRO 6000s, hollow ones need more GPU memory; scale rules and settings that do not fit have no measured speed and sit in the right-hand column.

serves on 2x RTXdoes not fit 2x RTXspeed not measuredvLLM fork (0)CuteAFD as shippedinterval excludes 0includes 0
P-B 8-16K, long code reading · 18 windows · 7,522 scored positions · history 10,284 / 12,069 / 14,402 tokens (min / median / max) · reference: BF16 run, top 20 · metric: KL_pb20, nats
−0.0050+0.005+0.010+0.015−2%0+2%+4%+6%← sooner first tokenlater first token →time to first token, % change against CuteAFD as shipped (median of 8 cells)KL_pb20 difference from the vLLM fork, P-B 8-16K (long code)↑ further from the vLLM fork · ↓ closervLLM forkCuteAFD as shippedspeed not measuredas shipped: first token +0.0% against as shipped; still +0.0090 [+0.0062, +0.0122] KL_pb20 from the vLLM fork at 8-16KBF16 head: speed not measured; still +0.0087 [+0.0059, +0.0119] KL_pb20 from the vLLM fork at 8-16K; does not fit 2x RTXBF16 headbest rule: speed not measured; still +0.0080 [+0.0066, +0.0096] KL_pb20 from the vLLM fork at 8-16Kbest ruleW8A16: first token +3.5% against as shipped; still +0.0072 [+0.0048, +0.0096] KL_pb20 from the vLLM fork at 8-16KW8A16amax rule: speed not measured; still +0.0068 [+0.0046, +0.0090] KL_pb20 from the vLLM fork at 8-16Kamax ruleBF16 KDA: speed not measured; still +0.0055 [+0.0026, +0.0084] KL_pb20 from the vLLM fork at 8-16K; does not fit 2x RTXBF16 KDAW8A16 + best rule: first token +4.1% against as shipped; still +0.0047 [+0.0030, +0.0065] KL_pb20 from the vLLM fork at 8-16KW8A16 + best ruleevery switch: speed not measured; still +0.0041 [+0.0027, +0.0054] KL_pb20 from the vLLM fork at 8-16K; does not fit 2x RTXevery switchW8A16 + amax rule: first token +4.2% against as shipped; still +0.0030 [+0.0011, +0.0049] KL_pb20 from the vLLM fork at 8-16KW8A16 + amax rule

How to use it. On two RTX GPUs, read the filled triangles: the lowest is the closest-to-vLLM setting that serves, and its position across is its first-token cost.

Table view: the exact numbers
SettingFirst token against as shipped (range over cells)Decode against as shippedRemaining difference from the vLLM fork, 8-16KServes on 2x RTX
as shipped0 (reference)1.00x (reference)+0.0090 [+0.0062, +0.0122]yes
W8A16+3.5% (+3.4% to +3.6%)0.96-1.08x per cell+0.0072 [+0.0048, +0.0096]yes
W8A16 + amax rule+4.2% (+4.0% to +4.2%)0.93-1.09x per cell+0.0030 [+0.0011, +0.0049]yes
W8A16 + best rule+4.1% (+4.1% to +4.6%)0.96-1.04x per cell+0.0047 [+0.0030, +0.0065]yes
amax rulenot measurednot measured+0.0068 [+0.0046, +0.0090]yes
best rulenot measurednot measured+0.0080 [+0.0066, +0.0096]yes
BF16 headnot measurednot measured+0.0087 [+0.0059, +0.0119]no
BF16 KDAnot measurednot measured+0.0055 [+0.0026, +0.0084]no
every switchnot measurednot measured+0.0041 [+0.0027, +0.0054]no

Speed: per content cell (1K and 32K prompts, 1 and 4 streams, code and prose; 8 requests each), the median per request divided by the mean of the as-shipped launches run before and after the setting. Decode stayed inside the base-to-base band for every measured setting. No interval is published for the speed ratios.

W8A16 prefill + amax scale rule as a deployment (follow-up K4e)

CuteAFD with W8A16 prefill and the amax scale rule on K4, through the full speed grid and the four long-output stages (declared before any request: FOLLOWUPS-K4e.md). The as-shipped drift subsets before and after stayed within the ±8% band of the main run's drift cells, so the columns compare directly. Per cell: the median over every measured request. Descriptive: one run; read speed against the K4 noise band.

Cell (prompt × streams, content)Decode tok/s: vLLM forkCuteAFD as shippedW8A16 + amaxFirst token s: vLLM forkCuteAFD as shippedW8A16 + amax
1K × 1, code145.7174.8179.20.270.420.44
1K × 1, json130.0145.3149.70.270.420.43
1K × 1, prose113.2126.6125.10.260.420.43
1K × 1, reasoning164.1219.3225.10.270.420.44
1K × 4, code78.489.994.00.831.261.31
1K × 4, json72.683.983.60.901.251.29
1K × 4, prose59.570.667.30.831.261.30
1K × 4, reasoning92.7113.7112.61.011.261.30
8K × 1, code146.7178.8168.62.201.831.90
8K × 1, json130.1153.0147.92.201.831.91
8K × 1, prose110.5115.9118.92.201.841.91
8K × 1, reasoning159.6220.4212.92.201.841.91
8K × 4, code68.475.674.85.715.305.52
8K × 4, json60.769.068.85.725.305.52
8K × 4, prose54.762.760.65.735.305.53
8K × 4, reasoning72.183.197.35.735.325.54
32K × 1, code142.4169.7174.69.057.377.67
32K × 1, prose108.5121.4123.19.047.387.69
32K × 4, code47.375.075.224.0027.5528.69
32K × 4, prose41.063.159.024.0527.5728.71
128K × 1, code144.6171.8176.036.3030.0831.19
128K × 1, prose113.2119.9117.236.4230.0931.20
StageContentRequestsvLLM fork: finished / at cap, median tokens, checkCuteAFD as shipped: the sameW8A16 + amax: the sameW8A16 + amax: median decode tok/s
L1prose80 / 8, 8,192, words/required 0.000 / 8, 8,192, words/required 0.000 / 8, 8,192, words/required 0.0080.6
L1code80 / 8, 8,192, all tests pass 0/80 / 8, 8,192, all tests pass 0/80 / 8, 8,192, all tests pass 0/8113.0
L1reasoning88 / 0, 536, correct 8/88 / 0, 631, correct 8/88 / 0, 611, correct 8/8185.3
L1json80 / 8, 8,192, valid 0/80 / 8, 8,192, valid 0/80 / 8, 8,192, valid 0/8119.7
L2prose82 / 6, 32,768, words/required 0.972 / 6, 32,768, words/required 0.864 / 4, 32,350, words/required 0.9984.4
L2code80 / 8, 32,768, all tests pass 0/85 / 3, 31,018, all tests pass 5/82 / 6, 32,768, all tests pass 2/8120.7
L2reasoning88 / 0, 599, correct 8/88 / 0, 624, correct 8/88 / 0, 642, correct 8/8181.6
L2json82 / 6, 32,768, valid 2/82 / 6, 32,768, valid 2/83 / 5, 32,768, valid 3/8144.1
L3prose87 / 1, 32,764, words/required 0.968 / 0, 34,842, words/required 0.968 / 0, 35,193, words/required 1.0179.8
L3code88 / 0, 51,343, all tests pass 8/88 / 0, 39,378, all tests pass 8/88 / 0, 37,537, all tests pass 8/8123.4
L3reasoning88 / 0, 706, correct 8/88 / 0, 558, correct 8/88 / 0, 544, correct 8/8180.0
L3json86 / 2, 66,812, valid 5/87 / 1, 55,715, valid 3/87 / 1, 67,902, valid 6/8162.0
L3sprose11 / 0, 29,505, words/required 0.811 / 0, 33,344, words/required 0.981 / 0, 26,290, words/required 0.78125.2
L3scode11 / 0, 55,168, all tests pass 0/11 / 0, 64,335, all tests pass 1/11 / 0, 57,465, all tests pass 1/1162.0
L3sreasoning11 / 0, 639, correct 1/11 / 0, 638, correct 1/11 / 0, 672, correct 1/1258.2
L3sjson11 / 0, 15,788, valid 1/11 / 0, 8,596, valid 1/11 / 0, 13,638, valid 1/1199.4