Observed sparse-MMA microbenchmark peak on this Vast GB10: 992.018 TFLOP/s dense-equivalent, 99.20% of the 1 PFLOP/s target A ~2B-parameter language-model architecture designed around NVIDIA GB10 / SM121 sparse NVFP4 from the start, rather than retrofitting a…
Model Card
By Robert Francis, published under apache-2.0, revision 7d9cdaec1ccd.
Observed sparse-MMA microbenchmark peak on this Vast GB10: 992.018 TFLOP/s dense-equivalent, 99.20% of the 1 PFLOP/s target A ~2B-parameter language-model architecture designed around NVIDIA GB10 / SM121 sparse NVFP4 from the start, rather than retrofitting a generic Transformer. - 1,990,038,784 conventional parameters (0.498% below the 2B design target) - 600,000,000,000 training-token target (~302 tokens/parameter) - 16 sequential stages - 6 top-1 experts per stage, 96 experts total - model width 1280 - every expert uses 1280 -> 5120 -> 1280 SwiGLU - expert matrices are paired 4:8 structured sparse NVFP4 - native packed mxf4nvf4 SM121 sparse MMA is the target hot path - 20 query heads / 5…
Read Robert Francis's full model card
Current production state — RPV16-affine
- Parameters: 1,990,038,784 conventional parameters (~1.990B)
- Training target: 600 billion tokens
- Objective: autoregressive next-token prediction only
- Position scheme: NoPE, with causal/window structure only
- Production geometry: batch 24 × sequence 2048 = 49,152 tokens/microstep
- Expert routing: exact balanced top-1, 6 experts/stage, 8,192 rows/expert
- Sparse core: paired-4:8 packed NVFP4, dominant 1280↔5120 expert matrices
- Vocabulary: 129,280-token inherited AGILLM BPE
- Output distribution: affine rank-16 normalized product vocabulary over 505×256 token factors
- Update schedule: stages 15→0 one at a time, then one head/interface phase; no full-model gradient anchor
- Optimizer: static bank of 16 stage-local PagedAdamW8bit optimizers plus one head optimizer
- Measured full-cycle training rate: 42,018.5 tok/s after decoder warmup, versus 29,060.5 tok/s for the previous flat-head local-tied architecture (+44.6%)
- Observed sparse-MMA microbenchmark peak on this Vast GB10: 992.018 TFLOP/s dense-equivalent, 99.20% of the 1 PFLOP/s target
- Verified HF recovery checkpoint: RPV16-affine step 1856 / 91,226,112 seen tokens; HF path
recovery/rpv16-affine-step00001856.ckpt - Current local shared-quant recovery: step 2112 / 103,809,024 seen tokens
AGILLM-GB10-1PF
A ~2B-parameter language-model architecture designed around NVIDIA GB10 / SM121 sparse NVFP4 from the start, rather than retrofitting a generic Transformer.
Locked v2 architecture
- 1,990,038,784 conventional parameters (0.498% below the 2B design target)
- 600,000,000,000 training-token target (~302 tokens/parameter)
- 16 sequential stages
- 6 top-1 experts per stage, 96 experts total
- model width 1280
- every expert uses 1280 -> 5120 -> 1280 SwiGLU
- expert matrices are paired 4:8 structured sparse NVFP4
- native packed
mxf4nvf4SM121 sparse MMA is the target hot path - BF16 residual stream and FlashAttention-2 GQA
- 20 query heads / 5 KV heads / 64 head dimension
- local windows 256 -> 512 -> 1024, then four global stages
- exact AGILLM 129,280-ID BPE tokenizer bundle
- 256-dimensional token interface, projected to the 1280 compute core
- rotating stage-local updates plus one product-vocabulary head/interface phase; no full-model gradient anchor
The architecture is machine-readably frozen in ARCHITECTURE_LOCK.json.
Why the model looks strange
GB10 has an unusually large 128 GB GPU-addressable unified-memory pool but far less memory bandwidth than its sparse FP4 tensor-core issue capability would suggest. The model therefore tries to turn language-model training into large, repeatedly reusable sparse NVFP4 GEMMs instead of making the GPU shuffle small matrices and optimizer state all day.
The key expert shape, 1280 x 5120, comes from direct measurements on this GB10 and matches the existing paired-4:8 CUTLASS sparse runtime. It is not a copied Llama ratio.
1 PFLOP target
The repository reports these separately:
- register-resident sparse NVFP4 issue rate
- real sparse GEMM TFLOP/s
- whole-step useful TFLOP/s
- training tokens/s
- seen training tokens and language-model loss
No synthetic filler FLOPs are counted as useful model work.
Verified historical starting evidence on this GB10 was 969.794609 TFLOP/s best. After stopping all unrelated GPU compute and autotuning launch geometry/register pressure, the current checked peak is 992.017989 TFLOP/s, or 99.20% of 1 PFLOP/s, at 34 accumulators, 20 blocks/SM, 128 threads and 1200 iterations. The Vast container is denied permission to raise the GPU locked clock, so the remaining gap is presently host-clock limited. Search receipts are in evidence/1pf_search/.
NVIDIA's ~1 PFLOP figure is a sparse FP4 hardware ceiling, not a claim that an end-to-end training step can execute at 1 PFLOP/s. A 2 PFLOP number, if ever reported here, must be explicitly labelled algorithmic/effective useful compute and never confused with actual single-GB10 tensor issue throughput.
Real training canary
The model has already completed real training steps on HuggingFaceFW/fineweb-edu using the bundled tokenizer, causal cross-entropy, sparse forward kernels, backward propagation and AdamW.
Initial full-gradient canary:
- 1,986,888,960 exact parameters instantiated
- 512 real text tokens
- finite CE + auxiliary loss
- finite gradient norm
- all 288 sparse expert linears executed
- optimizer step completed
A two-microbatch accumulation test reused packed weights: the second microbatch added 288 sparse kernel calls but only 9 new packs, demonstrating the intended packed-weight-residency behavior. The subsequent stage-local schedule reduced live CUDA allocation substantially while retaining a real final-CE gradient for the selected stage.
Receipts are under evidence/canary/.
Data
agillm_gb10_1pf.py contains a streaming Hugging Face dataset loader. The intended 600B run uses a weighted mixture including FineWeb-Edu, FineWeb, Wikipedia, C4, Cosmopedia, Proof-Pile-2, Dolma and code sources. Source failures are allowed to fail over rather than stall training.
Run
python3 agillm_gb10_1pf.py profile
python3 agillm_gb10_1pf.py dataset-probe --dataset fineweb-edu
python3 agillm_gb10_1pf.py train --dataset fineweb-edu --batch 1 --seq 512 --steps 2 --grad-accum 2
The repository contains the exact tokenizer bundle and the current GB10 sparse runtime binaries plus CUDA source used to rebuild/audit them.
Repository policy
Source, target contracts, tokenizer, kernel sources, reproducibility receipts and promoted checkpoints belong here. Transient profiler dumps and every throwaway checkpoint do not. Hugging Face is a model repository, not a landfill with Git LFS.
Attribution
The upstream peak-MMA reproducer under third_party/gb10_peak_mma/ retains its BSD-3-Clause license and commit metadata. AGILLM-GB10-1PF source outside third-party material is Apache-2.0 unless a file says otherwise.
Production update — 2026-09-16
The active GB10 training architecture now uses NoPE, exact 8,192 routed rows per expert for the 24×2048 production geometry, one bounded native sparse context per layer, and checkpointed exact tied-vocabulary CE to avoid materialising the full 49,152×129,280 logit matrix. This reduced CUDA reserved memory from roughly 95.8 GB to roughly 24–36 GB during early stage rotation while improving warm microstep throughput into the ~19–23k tok/s range. Sparse packs remain stable between stage changes rather than growing every microstep.
Training uses a 17-slot hardware-native update cycle: stages 15→0 one at a time, followed by one exact tied token-interface anchor. No update makes all ~1.987B parameters trainable simultaneously. The target remains 600B training tokens.
RPV16-affine promotion — 2026-09-16
The flat 129,280-way tied-softmax head was replaced by a rank-16 affine product vocabulary. Since 129,280 = 505 × 256, each mixture component predicts a normalized 505-way factor and 256-way factor; each rank uses a different bijective affine permutation of token IDs before factorization. The mixture therefore remains a proper normalized distribution over all 129,280 token IDs while reducing the output-head compute width by roughly 10.5× versus the flat classifier.
The decoder was migrated with seven head-only optimizer updates from step 896 to step 952 before local stage training resumed. Loss moved from roughly 11.787 to 11.683 during that migration. A complete post-warm 17-phase cycle sustained 42,018.5 training tok/s end-to-end. Batch-size tests placed the full-graph throughput knee at batch 24 / 8,192 routed rows per expert: batch 12 (M=4096) and batch 48 (M=16384) were both slightly slower per token.
Benchmark and migration receipts are under evidence/rpv16/.
Shared activation quantization promotion — 2026-09-16
Production now quantizes each expert input once for gate + up instead of twice. Gate and up still use separate packed sparse weights, independent FP4 weight scales, and their ordinary native sparse GEMMs; only the identical activation quantization is shared. An 8,192-row expert A/B was bitwise identical for output, dX, and all gate/up/down weight gradients. Frozen-expert forward improved from 5.634 ms to 5.216 ms (+8.0%). A matched full stage-4 replay improved median throughput from 54,956 to 56,218 tok/s (+2.30%).
After live promotion from checkpoint 2048, the same stage-14 eight-microstep window improved from 30,188.7 to 31,515.2 tok/s (+4.39%), with exact 8,192-row routing and a successful optimizer update. The first shared-quant recovery checkpoint was written at step 2112 / 103,809,024 tokens. The previously published 42,018.5 tok/s full-cycle figure predates shared-quant; a new complete-cycle figure is not claimed until measured. Receipts are under evidence/sharedquant/.
Configuration
- Context length (tokens)
- 2,048
- Hidden size
- 1,280
- Attention heads
- 20
- Key/value heads
- 5
- Head dimension
- 64
- Vocabulary size
- 129,280
- Model type
- agillm_gb10_1pf_rpv16_affine_v3
Identity and Version
- Repository
- MarxistLeninist/AGILLM-GB10-1PF
- Publisher
- Robert Francis
- Task
- Not stated by the source
- Modality
- Other
- Library
- pytorch
- Parameters
- Not stated by the source
- Languages
- Not stated by the source
- Revision
- 7d9cdaec1ccd7c18c87ef14d655c58267b432491
- First published
- 2026-09-15
- Last updated
- 2026-09-18
Files and Weights
105 files, 298.5 GB in total. The weights are 47 files totalling 298.4 GB in ckpt, pt.
Every file
| File | Type | Size | SHA-256 |
|---|---|---|---|
| recovery/gb10-resume-pinned-step2994107-20260914/pretrain_step02994107_from02954544_20260914T2115Z.pt | Weights | 18.5 MB | 24fe0b3aea48 |
| recovery/gb10-resume-pinned-step2994107-20260914/pretrain_step02994107_from02954544_20260914T2115Z.pt.shards/core_base.pt | Weights | 608.7 MB | f9c2d7be7f28 |
| recovery/gb10-resume-pinned-step2994107-20260914/pretrain_step02994107_from02954544_20260914T2115Z.pt.shards/core_block_0000.pt | Weights | 140.0 MB | abbc792dd6ba |
| recovery/gb10-resume-pinned-step2994107-20260914/pretrain_step02994107_from02954544_20260914T2115Z.pt.shards/core_block_0001.pt | Weights | 140.2 MB | 78da14b8564b |
| recovery/gb10-resume-pinned-step2994107-20260914/pretrain_step02994107_from02954544_20260914T2115Z.pt.shards/core_block_0002.pt | Weights | 140.2 MB | 2b52e9600787 |
| recovery/gb10-resume-pinned-step2994107-20260914/pretrain_step02994107_from02954544_20260914T2115Z.pt.shards/core_block_0003.pt | Weights | 140.2 MB | 3836a17c29ce |
| recovery/gb10-resume-pinned-step2994107-20260914/pretrain_step02994107_from02954544_20260914T2115Z.pt.shards/core_block_0004.pt | Weights | 140.3 MB | 413d68430f71 |
| recovery/gb10-resume-pinned-step2994107-20260914/pretrain_step02994107_from02954544_20260914T2115Z.pt.shards/core_block_0005.pt | Weights | 140.3 MB | ca54cc76342f |
| recovery/gb10-resume-pinned-step2994107-20260914/pretrain_step02994107_from02954544_20260914T2115Z.pt.shards/core_block_0006.pt | Weights | 140.6 MB | 32e5e9ff15e5 |
| recovery/gb10-resume-pinned-step2994107-20260914/pretrain_step02994107_from02954544_20260914T2115Z.pt.shards/core_block_0007.pt | Weights | 140.8 MB | 83887252b47a |
| recovery/gb10-resume-pinned-step2994107-20260914/pretrain_step02994107_from02954544_20260914T2115Z.pt.shards/core_block_0008.pt | Weights | 140.7 MB | b34ce9c8e572 |
| recovery/gb10-resume-pinned-step2994107-20260914/pretrain_step02994107_from02954544_20260914T2115Z.pt.shards/core_block_0009.pt | Weights | 142.0 MB | 71b450eb0a66 |
| recovery/gb10-resume-pinned-step2994107-20260914/pretrain_step02994107_from02954544_20260914T2115Z.pt.shards/core_block_0010.pt | Weights | 142.0 MB | f2ebabcf594d |
| recovery/gb10-resume-pinned-step2994107-20260914/pretrain_step02994107_from02954544_20260914T2115Z.pt.shards/core_block_0011.pt | Weights | 142.1 MB | 72124bdefde1 |
| recovery/gb10-resume-pinned-step2994107-20260914/pretrain_step02994107_from02954544_20260914T2115Z.pt.shards/core_block_0012.pt | Weights | 142.1 MB | a39b7d8f2abe |
| recovery/gb10-resume-pinned-step2994107-20260914/pretrain_step02994107_from02954544_20260914T2115Z.pt.shards/core_block_0013.pt | Weights | 141.9 MB | cf8a67e2b63c |
| recovery/gb10-resume-pinned-step2994107-20260914/pretrain_step02994107_from02954544_20260914T2115Z.pt.shards/core_block_0014.pt | Weights | 142.0 MB | 780d64fe5fdb |
| recovery/gb10-resume-pinned-step2994107-20260914/pretrain_step02994107_from02954544_20260914T2115Z.pt.shards/core_block_0015.pt | Weights | 141.7 MB | 0b225bb07b09 |
| recovery/gb10-resume-pinned-step2994107-20260914/pretrain_step02994107_from02954544_20260914T2115Z.pt.shards/core_block_0016.pt | Weights | 142.0 MB | 95f6de77a118 |
| recovery/gb10-resume-pinned-step2994107-20260914/pretrain_step02994107_from02954544_20260914T2115Z.pt.shards/core_block_0017.pt | Weights | 141.6 MB | c13313025aa4 |
| recovery/gb10-resume-pinned-step2994107-20260914/pretrain_step02994107_from02954544_20260914T2115Z.pt.shards/core_block_0018.pt | Weights | 141.9 MB | c4f9f0544e24 |
| recovery/gb10-resume-pinned-step2994107-20260914/pretrain_step02994107_from02954544_20260914T2115Z.pt.shards/core_block_0019.pt | Weights | 141.8 MB | 4fc17d4c8d3d |
| recovery/rpv16-affine-step00000960.ckpt | Weights | 11.8 GB | 181100983069 |
| recovery/rpv16-affine-step00001664.ckpt | Weights | 11.8 GB | 4e9652af410f |
| recovery/rpv16-affine-step00001792.ckpt | Weights | 11.8 GB | 970d76fddcc6 |
| recovery/rpv16-affine-step00001856.ckpt | Weights | 11.8 GB | 40601f493370 |
| recovery/rpv16-affine-step00005120.ckpt | Weights | 11.8 GB | 0d6475e29453 |
| recovery/rpv16-targetfix-step00005248-v5.ckpt | Weights | 11.8 GB | 010583eb3d33 |
| recovery/rpv16-targetfix-step00029696-v5.ckpt | Weights | 11.8 GB | 6eb55659660c |
| recovery/rpv16-targetfix-step00058368-v5.ckpt | Weights | 11.8 GB | 51b286854fee |
| recovery/rpv16-targetfix-step00063488-v5.ckpt | Weights | 11.8 GB | c8c5af288f73 |
| recovery/rpv16-targetfix-step00068608-v5.ckpt | Weights | 11.8 GB | 46ad09e883e0 |
| recovery/rpv16-targetfix-step00074752-v5.ckpt | Weights | 11.8 GB | 866a064fcfa6 |
| recovery/rpv16-targetfix-step00075264-v5.ckpt | Weights | 11.8 GB | 62e8f0541bd5 |
| recovery/rpv16-targetfix-step00077312-v5.ckpt | Weights | 11.8 GB | a7e17441583a |
| recovery/rpv16-targetfix-step00080896-v5.ckpt | Weights | 11.8 GB | 22185bf7fc33 |
| recovery/rpv16-targetfix-step00082944-v5.ckpt | Weights | 11.8 GB | 625fc04166d5 |
| recovery/rpv16-targetfix-step00086528-v5.ckpt | Weights | 11.8 GB | 3ee65b0e0832 |
| recovery/rpv16-targetfix-step00089088-v5.ckpt | Weights | 11.8 GB | 41a82e916327 |
| recovery/rpv16-targetfix-step00091648-v5.ckpt | Weights | 11.8 GB | a8ab125c9999 |
| recovery/rpv16-targetfix-step00094208-v5.ckpt | Weights | 11.8 GB | 3371335e5c41 |
| recovery/rpv16-targetfix-step00096859-v8.ckpt | Weights | 11.8 GB | 5b2ecd5b428f |
| recovery/rpv16-targetfix-step00098304-v5.ckpt | Weights | 11.8 GB | 23e383fc83ed |
| recovery/rpv16-targetfix-step00102912-v5.ckpt | Weights | 11.8 GB | b9c67e751d7b |
| recovery/rpv16-targetfix-step00107008-v5.ckpt | Weights | 11.8 GB | 4f3a03020c17 |
| recovery/rpv16-targetfix-step00107520-v5.ckpt | Weights | 11.8 GB | 47f6c137c51e |
| recovery/rpv16-targetfix-step00109568-v5.ckpt | Weights | 11.8 GB | 51661f965f06 |
| ARCHITECTURE_LOCK.json | Configuration | 6.1 KB | — |
| TARGETS.json | Configuration | 3.5 KB | — |
| agillm_gb10_1pf.py | Configuration | 40.2 KB | — |
| config.json | Configuration | 1.1 KB | — |
| evidence/1pf_search/final_ridge.json | Configuration | 21.1 KB | — |
| evidence/1pf_search/fine_acc.json | Configuration | 24.0 KB | — |
| evidence/1pf_search/runtime_geometry.json | Configuration | 37.3 KB | — |
| evidence/AGILLM44_compute_status_at_fork.json | Configuration | 3.9 KB | — |
| evidence/RESULTS_VERIFIED.json | Configuration | 7.4 KB | — |
| evidence/canary/first_step_512.json | Configuration | 333 B | — |
| evidence/canary/grad_accum2_512.json | Configuration | 334 B | — |
| evidence/canary/stage_local_receipt.json | Configuration | 335 B | — |
| evidence/rpv16/headwarm_receipt.json | Configuration | 342 B | — |
| evidence/sharedquant/gateup_8192_ab.json | Configuration | 2.0 KB | — |
| evidence/sharedquant/live_promotion_step2048_to2112.json | Configuration | 1.4 KB | — |
| recovery/gb10-resume-pinned-step2994107-20260914/source_config_files/workspace/agillm43_dataset_hotload.json | Configuration | 13.6 KB | — |
| recovery/gb10-resume-pinned-step2994107-20260914/source_config_files/workspace/agillm43_production_v14/contracts/hot_config_owner_v25.json | Configuration | 15.7 KB | — |
| recovery/rpv16-targetfix-step00098304-v5.receipt.json | Configuration | 1.9 KB | — |
| recovery/rpv16-targetfix-step00107008-v5.receipt.json | Configuration | 1.8 KB | — |
| releases/2026-09-16_rpv16_affine/agillm_gb10_1pf.py | Configuration | 37.0 KB | — |
| releases/ga1-phaseclock-datacursor-v12-20260916/DECISION.json | Configuration | 1.6 KB | — |
| releases/ga1-phaseclock-datacursor-v12-20260916/agillm_gb10_1pf.rpv16_affine_sharedquant_phaseclock_datacursor_v1.py | Configuration | 46.6 KB | — |
| releases/ga1-phaseclock-datacursor-v12-20260916/dblock_b4_ar_after_gate_result.json | Configuration | 1.9 KB | — |
| releases/ga1-phaseclock-datacursor-v12-20260916/ga1_datacursor_v4_migration_receipt.json | Configuration | 344 B | — |
| releases/ga1-phaseclock-datacursor-v12-20260916/rpv16_ga1_seed20260917_m17.json | Configuration | 640 B | — |
| releases/ga1-phaseclock-datacursor-v12-20260916/rpv16_ga1_seed20260918_m85.json | Configuration | 639 B | — |
| releases/ga1-phaseclock-datacursor-v12-20260916/rpv16_ga8_seed20260917_m17.json | Configuration | 642 B | — |
| releases/rpv16-affine-sharedquant-v1/agillm_gb10_1pf.py | Configuration | 40.2 KB | — |
| releases/targetfix-v14-20260916/agillm_gb10_1pf.py | Configuration | 47.4 KB | — |
| releases/targetfix-v14-20260916/target_alignment_migration_receipt.json | Configuration | 1.8 KB | — |
| releases/targetfix-v14-20260916/targetfix_migration85_step5632.json | Configuration | 912 B | — |
| releases/targetfix-v14-20260916/targetfix_reset85_step5120.json | Configuration | 963 B | — |
| ARCHITECTURE.md | Documentation | 1.7 KB | — |
| LICENSE | Documentation | 717 B | — |
| README.md | Documentation | 9.3 KB | — |
| releases/ga1-phaseclock-datacursor-v12-20260916/README.md | Documentation | 836 B | — |
| third_party/gb10_peak_mma/LICENSE | Documentation | 1.5 KB | — |
| evidence/live/OWNER_NOTICE.txt | Other | 542 B | — |
| evidence/live/production_tail.jsonl | Other | 43.8 KB | — |
| evidence/rpv16/batch12_m4096.log | Other | 5.3 KB | — |
| evidence/rpv16/batch48_m16384.log | Other | 5.3 KB | — |
| evidence/rpv16/rpv16_affine_headwarm896.log | Other | 32.0 KB | — |
| evidence/rpv16/rpv16_affine_postwarm_cycle.log | Other | 76.2 KB | — |
| evidence/rpv16/rpv16_fullcycle896.log | Other | 76.1 KB | — |
| evidence/sharedquant/baseline_stage4_1857_1864.log | Other | 5.2 KB | — |
| evidence/sharedquant/candidate_stage4_1857_1864.log | Other | 5.2 KB | — |
| requirements.txt | Other | 53 B | — |
| runtime/libfused_quant.so | Other | 1.0 MB | 803b56fcf3e8 |
| runtime/libsparse_native.so | Other | 1.3 MB | a9bc81033f5e |
| runtime/src/fused_quant.cu | Other | 6.1 KB | — |
| runtime/src/sparse_native.cu | Other | 15.0 KB | — |
| supervisor.sh | Other | 945 B | — |
| third_party/gb10_peak_mma/COMMIT | Other | 41 B | — |
| third_party/gb10_peak_mma/peak_mma.cu | Other | 7.4 KB | — |
| .gitattributes | Repository | 1.9 KB | — |
| .gitignore | Repository | 71 B | — |
| recovery/gb10-resume-pinned-step2994107-20260914/pretrain_step02994107_from02954544_20260914T2115Z.pt.tokenizer.json | Tokenizer | 17.5 MB | 75f803b5d04e |
| tokenizer_bundle.json | Tokenizer | 17.5 MB | 1e1170051da8 |
License and Download
- License
- apache-2.0
- Access
- Open weights, no gate
- Download size
- 298.4 GB
Released by Robert Francis through its official repository on Hugging Face. Read the license.
Memory Requirements
| Precision | Weights in memory |
|---|---|
| As published | 298.4 GB |
Weights only, from the published parameter count; the key-value cache and runtime add to this.
Questions About AGILLM-GB10-1PF
Can I use AGILLM-GB10-1PF commercially?
Yes. AGILLM-GB10-1PF is released under Apache License 2.0. The Apache License 2.0 is a permissive open-source license. It permits commercial use, modification and redistribution. It requires keeping the license and copyright notices and any NOTICE file, stating significant changes, and it includes an express patent grant from contributors.
What is AGILLM-GB10-1PF's context length?
2,048 tokens, from the maximum position embeddings in its published configuration.