From 3a2baa5c8dc1d5ff1f41cf6909be5b410565f969 Mon Sep 17 00:00:00 2001 From: 0z5a Date: Tue, 6 Oct 2026 08:25:02 +0800 Subject: [PATCH] ScaleRLT: record three-family CUDA update correctness Signed-off-by: 0z5a --- .../results/h20-mcore-all-families/README.md | 16 + .../artifact.sha256.json | 14 + .../h20-mcore-all-families/cuda-gate.tar.gz | Bin 0 -> 21546 bytes .../independent-handback.json | 377 ++++++++++++++++++ 4 files changed, 407 insertions(+) create mode 100644 benchmarks/results/h20-mcore-all-families/README.md create mode 100644 benchmarks/results/h20-mcore-all-families/artifact.sha256.json create mode 100644 benchmarks/results/h20-mcore-all-families/cuda-gate.tar.gz create mode 100644 benchmarks/results/h20-mcore-all-families/independent-handback.json diff --git a/benchmarks/results/h20-mcore-all-families/README.md b/benchmarks/results/h20-mcore-all-families/README.md new file mode 100644 index 000000000..9d93d8de6 --- /dev/null +++ b/benchmarks/results/h20-mcore-all-families/README.md @@ -0,0 +1,16 @@ +# ScaleRLT — H20 MCore two-update correctness + +All twelve frozen tiny FP32 CUDA configurations passed on the original H20 using the existing 0z5a environment, source `2ad271d5fbb58f06170a05277b03663bf9d66b24`. Each candidate performs two actual MCore/DDP/AdamW updates against the ordinary replay oracle. Both token-mean and response-mean losses are included. The original full-gradient, parameter, Adam first/second-moment, counter and sample-accounting assertions are unchanged. + +| Family / schedule | Candidate updates | Maximum main-gradient error | Maximum parameter error | Complete update gate | Speed ratio | +| --- | ---: | ---: | ---: | --- | --- | +| Ouro ordinary | 4 | 1.192093e-07 | 5.960464e-08 | PASS | NOT_MEASURED | +| Ouro joint | 4 | 1.192093e-07 | 5.960464e-08 | PASS | NOT_MEASURED | +| Nanbeige ordinary | 4 | 5.960464e-08 | 2.980232e-08 | PASS | NOT_MEASURED | +| Nanbeige joint | 4 | 5.960464e-08 | 2.980232e-08 | PASS | NOT_MEASURED | +| Huginn independent latent | 4 | 7.152557e-07 | 9.302312e-08 | PASS | NOT_MEASURED | +| Huginn mixed latent | 4 | 1.177192e-06 | 2.094894e-07 | PASS | NOT_MEASURED | + +Pytest reports **12 passed, 36 warnings in 22.66s**. This is verification duration, not a baseline/candidate speed comparison. Twenty-four candidate updates and their matched ordinary references use tiny fixed trajectories; they do not establish official checkpoint accuracy, online reward convergence, memory saving or large-scale stability. Existing CPU BF16 failures remain failed. + +The natural controller, test, wrapper and finalizer exits are recorded; all four recorded PIDs are absent in a fresh read-only check and the compute list is empty. The offbox archive is 21,546 bytes with 84 verified payloads plus its manifest, SHA-256 `5cbea08375482e57936c9808a352fa3d12b22aabbb4a04a21723deac117f42ff`. Raw data: [`cuda-gate.tar.gz`](cuda-gate.tar.gz); independent handback: [`independent-handback.json`](independent-handback.json). diff --git a/benchmarks/results/h20-mcore-all-families/artifact.sha256.json b/benchmarks/results/h20-mcore-all-families/artifact.sha256.json new file mode 100644 index 000000000..f6169e93c --- /dev/null +++ b/benchmarks/results/h20-mcore-all-families/artifact.sha256.json @@ -0,0 +1,14 @@ +{ + "README.md": { + "bytes": 1961, + "sha256": "fdf98ac52d107f3e722a0386309b6b38d5fda3933fc1b9a949678b895a46c65c" + }, + "cuda-gate.tar.gz": { + "bytes": 21546, + "sha256": "5cbea08375482e57936c9808a352fa3d12b22aabbb4a04a21723deac117f42ff" + }, + "independent-handback.json": { + "bytes": 12383, + "sha256": "97c3785f3e2194e75195eb1e6aac4aad4b5beae3a56ed0fc3faa1a0de054676b" + } +} diff --git a/benchmarks/results/h20-mcore-all-families/cuda-gate.tar.gz b/benchmarks/results/h20-mcore-all-families/cuda-gate.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..f0753cd98b7e05c21fe197ef2e892ff63359f738 GIT binary patch literal 21546 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 z zUsy))p*K2AR6wnY*jXWf2J4@V3++qK*{i3PLWVurV>zsT<+1gA^NWKI9zj9?IaOF!R}$Bs3dU7>b}z@gGE<# zQ0|-yls4lojYwa}P`PCZka(#9@FP+=&bn_h0P>CPHd7EP#rx(@zNLk?zcbEId!6j= zvzz^rVC;0kJHYYhML3LTyOVKs^YV>iqnUHid9u4~)e(XD*krO&Dr`_yh{vCAxWpU{ zuUkc5s1wJ%|1Iz@y*p))O?oo*i_9vBNVldGHoVq2?cuHj{y<|M$HJ4AzJuHk%s3F% z`#Yh?5Y)jqcTnpqS8NP>L($Zk-*6wMo3g$kD~Gv$Mi6U~V^`m6W2?OC-rBbLc67xB zXyh(|U&HY^BT7UAnpweeOt(pgmp&xPwt1a>N{z)P+aaZr2o5mLLj1n4-?sm9*3@V+ ze&$JY=|eajVXz4*+Wvvlh{ov%1^#$Y{1XjAzRm?oottoJ{0C7%VmtY)0fMRXE;(?DHI(fX1A z5pcBryXzQENh~r(4ua|vZ2`d?<}Pn4ma|D_AvXJ1knqCK#hcZZXo-z3>Rah+?4~*i z9pGBVvYRA2vjTICZzeof{u-cY)SWtpJzZXtp_=HkTe5sSE}Zs{)+u9xZ7zZDO_W~0 zOH+FBO^kUgCVWh(mxBcza%-A66Eke_*0#$R?0q|hWvy)c*Lm~-v7?~*q&SmRMb|~J zN96b*#q`QU?*U^}UPSE}CEq?EZ0AYu4>hkY|4=)+vK$(|){gt#WZ1;Q$y*zQvUpxQxU0XY;aa_WH ziAC}#A0xV5A)a-Wr$E}@eLm>--r#rKe@(5iA72uRC>OjtJ3bX}&6jhXlCm{DLpgO@ zi;QyU__8bYf|YA`iBgJn9{=;~HtJTKZl)mytk&FsGr!P`Oi*xK7hJE1 z*JOZxSfR9TW?cz!!`Qtk@0~^ipHjUTb)xzh#eZXbybYa0P^5c0y`o>1+tcT-rif89 z#T~)G@~LywZ&404Rhg%5P&3b;q8qcqWOsh1W{_Ow z>c2wYi`N($#noxht}oxd$)i!SQ+;vv79rr;;tpxR*)9$kGYcdqnH}*kPkT^@(waHf z<*}x0`w*%0xuJVzQT*k}!u|uzhqU#e&RAA%B~&Ne(@*HZ&rUm+(xunG`=i?ys$-N@ zRVd^%fU%Z}?}dtaZI{CA9M6J_s7?|a$?B!LY;Z!hUU{)qp;@Gjq-JAB7awq(wo56p zN6NELQqxSa^%KY2jZSP#&vZoj7}l>Xj<8pQh)$#sTgjWRcf!tl>;kpc!XeXAC&G32 zt*(2!+}EhHO*{mh7CGbV=D(KxfP?_4s7$OdUsoE7YQJGfGTF3QK@&!grl4 zO-I*<0L8I1uAQE9Z!{Z*Ynm+FXSadLvP&*fijeFsV&)If^eX}BK;E6`)4Mjz-KxF+ zq<^zP|Agy`{G5sbSXKR-=79CS0Z8P)rd7Erc*1gB)KV`$l{L-T;|LY>-b{Z+A$?J1 z6JuuR8J|bOmp(jLrV$i%X7I+Z`KNhw2&-o*zy}2^PPWLFqK(0);z*Ei~@4KRsM-*xF-h6 z8rSYF%RmKI+3tKgsHgE*)_5Lfu)g`*;z`}8xLEyIuY4!CeD=OAO8!FB+XE#g(M5o& smEg|SI}he=I>a{Z_;#S+{=1RYhwr}lf0xyr)r)5NJ