Download research/ob1b/exposure_arith.py from i64systems/remat: direct link, hf CLI and curl.
- Browser
- Download file 4.57 kB
-
https://huggingface.co/i64systems/remat/resolve/main/research/ob1b/exposure_arith.py
- Command line
-
hf download hf://i64systems/remat/research/ob1b/exposure_arith.py
-
curl -L -o exposure_arith.py https://huggingface.co/i64systems/remat/resolve/main/research/ob1b/exposure_arith.py
4.57 kB
| #!/usr/bin/env python3 | |
| """OB-1b: recompute every byte figure this leg quotes, from first | |
| principles, rather than copying stage 1's or OB-1's arithmetic forward. | |
| Two things are checked here: | |
| 1. THE ACCOUNTING IDENTITIES. resident_always is derived as | |
| TOTAL_MODEL_BYTES - L*E*PER_EXPERT_BYTES_PER_LAYER for both models and must | |
| equal the value the prereg and OB-1's RUNLOG state. | |
| 2. THE PREDICTION RULE. peak_concurrent_lease_bytes(K) = (E-K)*PER_EXPERT is | |
| checked against OB-1's THREE MEASURED points before it is used to predict | |
| anything, so the extrapolation rests on a rule that reproduced measurements | |
| rather than on an assertion. | |
| Measured peaks from research/ob1/RUNLOG-1.txt section 9 are hard-coded here as | |
| the check's input; they are OB-1's literal output, cited not recomputed. | |
| """ | |
| M20 = dict(name="gpt-oss-20b", total=12109566624, per_expert=13253760, L=24, E=32) | |
| M120 = dict(name="gpt-oss-120b", total=63387346208, per_expert=13253760, L=36, E=128) | |
| # OB-1 RUNLOG-1.txt section 9, literal. | |
| OB1_MEASURED_PEAK = {16: 212060160, 8: 318090240, 4: 371105280} | |
| OB1_MEASURED_ACCT = {16: 7232182944, 8: 4793491104, 4: 3574145184} | |
| OB1_MEASURED_EXP = {16: 1.674400, 8: 2.526252, 4: 3.388101} | |
| def resident_always(m): | |
| return m["total"] - m["L"] * m["E"] * m["per_expert"] | |
| def acct(m, K, peak): | |
| return resident_always(m) + K * m["L"] * m["per_expert"] + peak | |
| def main(): | |
| print("== ACCOUNTING IDENTITIES ==") | |
| for m in (M20, M120): | |
| ra = resident_always(m) | |
| print(" %-13s total=%d L=%d E=%d per_expert=%d" % ( | |
| m["name"], m["total"], m["L"], m["E"], m["per_expert"])) | |
| print(" %-13s total_expert_bytes = %d x %d x %d = %d" % ( | |
| "", m["L"], m["E"], m["per_expert"], m["L"] * m["E"] * m["per_expert"])) | |
| print(" %-13s resident_always = %d - %d = %d (%.2f pct of the model)" % ( | |
| "", m["total"], m["L"] * m["E"] * m["per_expert"], ra, | |
| 100.0 * ra / m["total"])) | |
| print(" CHECK resident_always(20b) == 1930678944 : %s" % (resident_always(M20) == 1930678944)) | |
| print(" CHECK resident_always(120b) == 2314020128 : %s" % (resident_always(M120) == 2314020128)) | |
| print() | |
| print("== THE PREDICTION RULE, CHECKED AGAINST OB-1'S THREE MEASURED POINTS ==") | |
| print(" rule: peak_concurrent_lease_bytes(K) = (E - K) * PER_EXPERT_BYTES_PER_LAYER") | |
| ok = True | |
| for K in (16, 8, 4): | |
| pred = (M20["E"] - K) * M20["per_expert"] | |
| meas = OB1_MEASURED_PEAK[K] | |
| a = acct(M20, K, meas) | |
| e = M20["total"] / float(a) | |
| good = (pred == meas and a == OB1_MEASURED_ACCT[K] | |
| and abs(e - OB1_MEASURED_EXP[K]) < 5e-7) | |
| ok = ok and good | |
| print(" K=%-3d predicted %d measured %d %s | ACCT %d (OB-1 %d) EXP %.6f (OB-1 %.6f) %s" % ( | |
| K, pred, meas, "MATCH" if pred == meas else "DIFFER", | |
| a, OB1_MEASURED_ACCT[K], e, OB1_MEASURED_EXP[K], "OK" if good else "MISMATCH")) | |
| print(" RULE REPRODUCES ALL THREE MEASURED POINTS EXACTLY: %s" % ok) | |
| print() | |
| print("== 20b PREDICTED CURVE, K in {2,1,0} (peak term PREDICTED, not measured) ==") | |
| print(" %-3s %14s %14s %14s %12s" % ("K", "pool_bytes", "peak_pred", "ACCT_pred", "EXP_pred")) | |
| for K in (2, 1, 0): | |
| pool = K * M20["L"] * M20["per_expert"] | |
| peak = (M20["E"] - K) * M20["per_expert"] | |
| a = acct(M20, K, peak) | |
| print(" %-3d %14d %14d %14d %12.6f" % (K, pool, peak, a, M20["total"] / float(a))) | |
| print() | |
| print("== 120b PREDICTED POINT, K=8 of 128 ==") | |
| K = 8 | |
| pool = K * M120["L"] * M120["per_expert"] | |
| peak = (M120["E"] - K) * M120["per_expert"] | |
| a = acct(M120, K, peak) | |
| print(" pool_bytes = %d x %d x %d = %d" % (K, M120["L"], M120["per_expert"], pool)) | |
| print(" peak_pred = (%d - %d) x %d = %d" % (M120["E"], K, M120["per_expert"], peak)) | |
| print(" ACCT_pred = %d + %d + %d = %d" % (resident_always(M120), pool, peak, a)) | |
| print(" EXP_pred = %d / %d = %.6f" % (M120["total"], a, M120["total"] / float(a))) | |
| print() | |
| print("== THE FLOOR OF THIS DESIGN (why K=0 is the end of the curve) ==") | |
| for m in (M20, M120): | |
| ra = resident_always(m) | |
| peak0 = m["E"] * m["per_expert"] | |
| a0 = ra + peak0 | |
| print(" %-13s K=0 ACCT = resident_always %d + peak %d = %d" % (m["name"], ra, peak0, a0)) | |
| print(" %-13s max exposure at K=0 = %.6f ; resident_always is %.1f pct of that floor" % ( | |
| "", m["total"] / float(a0), 100.0 * ra / a0)) | |
| if __name__ == "__main__": | |
| main() | |