Skip to content

Add CUDA Nemotron 3.5 Bolt Omni export with native mixed quantization - #779

Open
rui-ren wants to merge 36 commits into
mainfrom
rui-ren/bolt-cuda-onboarding
Open

rui-ren wants to merge 36 commits into
mainfrom
rui-ren/bolt-cuda-onboarding

Conversation

@rui-ren

@rui-ren rui-ren commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Add CUDA export support for the actual multimodal architecture and native
mixed-format checkpoint storage of
nvidia/NVIDIA-Nemotron-3.5-Bolt-74B-A9B-24GB,
pinned to Hugging Face revision
c6cc2e8ffa353403213d6b9b18aaf8eb684d705a.

Full-model numerical acceptance remains blocked. This PR does not establish
shipping readiness, full multimodal generation, speculative integration,
performance, or a 24 GB deployment footprint. Export success and matching
greedy tokens do not clear failed hidden-state/cache comparisons.

This description consolidates the implementation and review follow-ups as of
2026-10-20. Current PR head:
77404b2ba5ae73514d891c584db3f0e68333457a, which merges upstream main after
the review fixes at 5ff29b274b5d23e19b1aab3d1e8224316b4a3e0b.
Historical artifact results below are not qualification of this exact head.

Implementation

  • Implement the nested 88-layer Nemotron-H Puzzle decoder with heterogeneous
    per-layer MoE topology, C-RADIOv4 vision encoder, image/video projector and
    source-bound EVS prompt compaction. Bolt is not a Lightning alias and has
    no built-in MTP.
  • Export separate decoder, vision_encoder and embedding graphs with
    sparse KV, convolution and FP32 SSM state interfaces. Preserve all 88
    runtime layer descriptors, including the trailing stateless MoE.
  • Preserve IQ2 codebook blocks, original Q8 FP16 scale bits and NVFP4 E4M3
    bytes through transactional, fail-closed streaming weight loading. Do not
    substitute affine INT2 or reconstruct the complete checkpoint into dense
    BF16 storage.
  • Emit model-agnostic native IQ2/Q8/A16 NVFP4 operators with the required
    complete-weight and output/bias rounding boundaries.
  • Reuse shared components while adding source-precision variants where
    same-input evidence requires them: RADIOv4 dense MatMul/bias accumulation
    in FP32; Puzzle outer/final RMSNorm, convolution epilogues and SiLU with
    explicit rounding boundaries. These do not change default
    Nemotron-H/Lightning arithmetic.
  • Pin config, checkpoint, tokenizer and generation assets consistently.
    Reject unsupported dtype/provider/dequantization routes before large I/O.
    Generate graph-faithful prepared-feature GenAI metadata rather than a
    fictitious ORT-extensions media-processing pipeline.
  • Preserve full past-plus-current attention masks and ordinary embeddings
    on absent-media cached steps, including generated token 18. Retain strict
    placeholder accounting when media is present.
  • Integrate a separately labeled, unregistered, opt-in source-chunk
    component/model/task with an explicit BOOL-scalar cache-phase contract.
    It is experimental, not a replacement for the ordinary registered route
    or evidence of full-model acceptance.

Review findings addressed

Finding Change
Direct Puzzle/Omni defaults disagreed with source conversion Direct defaults now use timestep minimum 0.0 and FP32 SSM state. Supported explicit overrides remain intact; the base Nemotron-H defaults are unchanged. Tests cover direct construction, graph cache I/O and ordinary/experimental task entry points for both families.
Chunked prefill accepted conflicting batch/time dimensions Reject conflicting known batch/time dimensions across x, dt, B and C, plus incompatible initial-state batch sizes, before reshaping. Preserve valid symbolic dimensions.
JUnit teardown accounting assumed one pytest version Assert testcase/error/failure semantics while accommodating the supported teardown suite-count difference. Production logging is unchanged.
CUDA FP16 source/oracle comparison inherited an unpinned accumulation mode Scope FP32 accumulation to the native CUDA FP16 source cross-check when the backend flag exists, then restore the caller's setting. The independent oracle, exact assertions and production arithmetic are unchanged.
Cached masks and streaming serialization policy Preserve cached full-length masks and select the existing bounded streaming-save policy through the weight-loading report: one worker, 1 GiB shards.

The first four follow-ups were published in a6b850c4 and 5ff29b27.
Enabling native FP16 accumulation reproduced the three biased rank-1/2/3
oracle failures: 2/9 elements differed, maximum absolute difference
2^-20. This establishes a test-reference precision vulnerability, not
an ORT production-output defect or proof of the reviewer's original flags.
The exact A100/Torch 2.13 reviewer environment was not rerun.

Review dispositions and reproduction details:
configuration/shape/JUnit fixes,
FP16 oracle fix.

Numerical qualification: artifact-specific, not exact-head acceptance

The fixed gates remain: all required outputs finite, normalized RMSE
<= 0.03, cosine similarity >= 0.999, and exact required greedy tokens.
No threshold was loosened to obtain a pass.

The retained source-chunk baseline was exported from clean checkout
a8da7270fa2519eec737f103bc1d662b9accc174. These results apply to that
artifact and its recorded runtime, not automatically to the current PR head
or ordinary/default graph:

Validation category Status Scope
Source fidelity PASS 28,885 sources: 28,882 exact bindings and 3 validated metadata tensors; valid external data and zero unexpected FP32 downcasts
Native packed CUDA execution PASS Qualified custom IQ2/Q8/A16 NVFP4 route on H100; not the source's SM120/SM121 production backend
Full decoder numerical parity FAIL 1,215 PASS / 281 FAIL of 1,496 comparisons, all finite; hidden-state/cache failures remain
Ordinary greedy generation PASS Exact eight-token sequence shown below; not full decoder parity
Hidden instrumentation invariance PASS All 776 common outputs typed-byte identical
Single-image vision parity PASS NRMSE 0.0073951044; cosine 0.9999730932; exact masks/indices
Five-/seven-frame compact vision parity PASS NRMSE 0.0103372724 / 0.0092369952; exact EVS selections
Prepared image-feature to embedding PASS Four scoped cases; not live/public GenAI media generation
Whole multimodal generation NOT_RUN Held pending ordinary decoder correctness
Full-package GenAI pairing for this artifact NOT_RUN Tiny/public token-only fixtures do not qualify this package
Speculative integration NOT_RUN No acceptance/rollback or performance claim
24 GB deployment footprint NOT_RUN Not established by checkpoint size or H100 execution

Expected and observed ordinary greedy tokens for the retained eight-token
controls are:

[1049, 1044, 1032, 1050, 1044, 1032, 1051, 1044]  ->  1, 2, 3,

Logits and token identity passing do not override failed state/hidden
comparisons. Actual-source and native same-input component replays, routing
controls and prefix conditioning localize differences but do not establish a
full-model remedy.

Preserved controls and negative experiments

These are separate artifacts/runtime variants, not successive claims that
the production model passes:

Variant Preserved result
Ordinary native-v8, explicit memory reuse disabled Full decoder parity FAIL. Logits 8/8 PASS; KV 105/128 PASS; convolution states 192/320 PASS; SSM states 320/320 PASS; hidden states 445/712 PASS. Exact eight tokens.
Ordinary native-v8, planner-patched default reuse All 776 decoder and 8 embedding arrays byte-identical to the no-reuse control; preserves its numerical failures.
Original native-v8 default-policy attempt NOT_RUN: decoder-session creation hit the 600-second client timeout before inference; not a numerical failure.
Source-chunk baseline above 1,215 PASS / 281 FAIL of 1,496.
Local packed-BF16/cuBLAS diagnostic 1,198 PASS / 298 FAIL of 1,496.
Expanded-FP32 NVFP4 plus local packed-cuBLAS diagnostic 1,059 PASS / 437 FAIL of 1,496.
Same combined diagnostic plus reciprocal grouped norm 1,034 PASS / 462 FAIL of 1,496; no improvement or production correction established.

All negative evidence, reference definitions and original packages remain
preserved. Dequantized or expanded-precision diagnostics are not native
IQ2/24 GB deployment qualification. Earlier v5/v6/v7 results are historical
controls, not the current acceptance result.

The qualified layer-0 diagnostic reproduces source/native control endpoints
bitwise and passes all 12 single-block gates. Its first observed BF16
activation drift is grouped norm (4/221,184 values, NRMSE 6.97e-6), but that
has not been established as the cause of the full decoder failure.
Audited evidence and scope.

Validation and CI

  • The configuration/shape/JUnit follow-up selection passed 157 tests,
    with 2 skips and 49 deselections. The two skips require sealed CUDA
    chunk-prefill replay fixtures; they are not numerical passes.
  • JUnit reporting controls also passed all 16 tests under pytest 7.4.3.
  • All 18 CUDA dense-linear cases passed with ambient FP16 accumulation
    deliberately enabled; the source-check scope restored that ambient
    setting afterward.
  • At 5ff29b27, lint, L1 smoke, L3 synthetic parity, fast integration,
    build and all six Windows/Linux Python matrix checks passed. L4/L5 were
    cancelled; neither is a passing suite.
  • At current head 77404b2, L1 smoke, L3 synthetic parity and lint checks
    have passed. The platform unit matrix, fast integration and L4/L5 were
    still running at this description update. No all-green CI or
    exact-head full-model CUDA acceptance is inferred.

CI graph/API/synthetic coverage is separate from actual-checkpoint
numerical qualification. Tests requiring external sealed evidence or a
pinned local source checkout do not become qualified through skips.

Reference and runtime boundaries

  • Reuse the actual pinned 90-shard checkpoint: 24,083,745,496 file bytes.
    No unnecessary checkpoint redownload or complete dense reconstruction.
  • The independent decoder reference validates all 28,491 decoder sources,
    with 394 separately validated vision/projector sources. It uses declared
    eager text attention, source Mamba Triton semantics and explicit cache
    precision; diagnostic projection reconstruction is labeled separately.
  • Historical qualification uses a Python 3.12 exporter/reference with
    Torch 2.14.1+cu130 and Transformers 5.19.0, plus an isolated Python 3.10
    ORT CUDA worker. Exact imported paths, source/runtime hashes, commands,
    arrays, provider profiles and token sequences remain in artifact receipts.
    These are not claims about stock released ORT or a clean build at every
    later companion PR head.
  • Floating payload execution is CUDA. Host metadata operations are
    explicitly allowed and audited; strict whole-package
    CPU-fallback-disabled loading is not qualified.
  • Native source b12x execution targets SM120/SM121 and was not run on
    H100/SM90. The custom H100 packed route does not prove those backend
    semantics, public media generation, or the model's advertised footprint.

Companion PRs

Repository PR Scope
ONNX Runtime #33400 Native CUDA mixed-format operators and scoped precision corrections
ONNX Runtime #33407 Allocation-planner compatibility index; preserves ordering/eligibility and is not a model arithmetic fix
ONNX Runtime GenAI #2741 Prepared-feature/hybrid-cache integration and explicit cache-phase handling
Olive #2733 Native-preservation/package-validation recipe; not requantization or full-model qualification

Each is a separate deliverable. Their publication, scoped tests or CI do
not establish full-package pairing or model readiness here.

Remaining acceptance gate

Provide reproducible prefill and reused-state decoder qualification for
the exact intended production graph and runtime, including logits,
hidden states, KV/conv/SSM states and exact ordinary generation. Locate and
correct the first divergence before changing arithmetic; retain original
failures and unchanged gates. Experimental source-chunk and local backend
variants must remain explicitly distinguished from the ordinary route.

Until that passes, full multimodal generation, speculative integration,
performance and 24 GB deployment remain unqualified.

Documentation: docs/nemotron-h-omni.md and
docs/nemotron-h-omni-processing.md.

@CLAassistant

Copy link
Copy Markdown

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.
1 out of 2 committers have signed the CLA.

✅ rui-ren
❌ Copilot
You have signed the CLA already but the status is still pending? Let us recheck it.

@github-actions

github-actions Bot commented Oct 15, 2026 •

Copy link
Copy Markdown

Performance Comparison

Comparing 030db176 → 1cf2447e

Model Metric Baseline Current Delta
bert (feature-extraction) model_size_bytes 359 KB 359 KB +0.0% ⚪
bert (feature-extraction) num_nodes 68 68 +0.0% ⚪
falcon model_size_bytes 364 KB 364 KB +0.0% ⚪
falcon num_nodes 66 66 +0.0% ⚪
gemma2 model_size_bytes 428 KB 428 KB +0.0% ⚪
gemma2 num_nodes 105 105 +0.0% ⚪
gpt2 model_size_bytes 324 KB 324 KB +0.0% ⚪
gpt2 num_nodes 54 54 +0.0% ⚪
llama model_size_bytes 425 KB 425 KB +0.0% ⚪
llama num_nodes 60 60 +0.0% ⚪
llama (static-cache) model_size_bytes 425 KB 425 KB +0.0% ⚪
llama (static-cache) num_nodes 56 56 +0.0% ⚪
mamba (ssm-text-generation) model_size_bytes 296 KB 296 KB +0.0% ⚪
mamba (ssm-text-generation) num_nodes 94 94 +0.0% ⚪
phi3 model_size_bytes 421 KB 421 KB +0.0% ⚪
phi3 num_nodes 58 58 +0.0% ⚪
phi3 (static-cache) model_size_bytes 421 KB 421 KB +0.0% ⚪
phi3 (static-cache) num_nodes 54 54 +0.0% ⚪
qwen2 model_size_bytes 425 KB 425 KB +0.0% ⚪
qwen2 num_nodes 60 60 +0.0% ⚪
qwen2 (static-cache) model_size_bytes 425 KB 425 KB +0.0% ⚪
qwen2 (static-cache) num_nodes 56 56 +0.0% ⚪
qwen3_5_moe (hybrid-text-generation) model_size_bytes 506 KB 506 KB +0.0% ⚪
qwen3_5_moe (hybrid-text-generation) num_nodes 269 269 +0.0% ⚪
qwen3_5_text (hybrid-text-generation) model_size_bytes 458 KB 458 KB +0.0% ⚪
qwen3_5_text (hybrid-text-generation) num_nodes 131 131 +0.0% ⚪
qwen3_5_vl (hybrid-qwen-vl) model_size_bytes 977 KB 977 KB +0.0% ⚪
qwen3_5_vl (hybrid-qwen-vl) num_nodes 461 461 +0.0% ⚪
t5 (seq2seq) model_size_bytes 836 KB 836 KB +0.0% ⚪
t5 (seq2seq) num_nodes 176 176 +0.0% ⚪
whisper (speech-to-text) model_size_bytes 1008 KB 1008 KB +0.0% ⚪
whisper (speech-to-text) num_nodes 128 128 +0.0% ⚪

No performance regressions.

@github-actions

github-actions Bot commented Oct 15, 2026 •

Copy link
Copy Markdown

🏗️ Architecture Diff

Comparing 030db176 → 1cf2447e

Model Sub-model Changes Status
bert (feature-extraction) model 0 ⚪
falcon model 0 ⚪
gemma2 model 0 ⚪
gemma4 (gemma4) decoder 0 ⚪
gemma4 (gemma4) embedding 0 ⚪
gemma4 (gemma4) vision_encoder 0 ⚪
gemma4_text model 0 ⚪
gpt2 model 0 ⚪
llama model 0 ⚪
llama (static-cache) model 0 ⚪
mamba (ssm-text-generation) model 0 ⚪
phi3 model 0 ⚪
phi3 (static-cache) model 0 ⚪
qwen model 0 ⚪
qwen (static-cache) model 0 ⚪
qwen2 model 0 ⚪
qwen2 (static-cache) model 0 ⚪
qwen2_moe model 0 ⚪
qwen2_moe (static-cache) model 0 ⚪
qwen3 model 0 ⚪
qwen3 (static-cache) model 0 ⚪
qwen3_5_moe (hybrid-text-generation) model 0 ⚪
qwen3_5_text (hybrid-text-generation) model 0 ⚪
qwen3_5_vl (hybrid-qwen-vl) decoder 0 ⚪
qwen3_5_vl (hybrid-qwen-vl) embedding 0 ⚪
qwen3_5_vl (hybrid-qwen-vl) vision_encoder 0 ⚪
qwen3_moe model 0 ⚪
qwen3_moe (static-cache) model 0 ⚪
qwen3_next (hybrid-text-generation) model 0 ⚪
t5 (seq2seq) decoder 0 ⚪
t5 (seq2seq) encoder 0 ⚪
whisper (speech-to-text) decoder 0 ⚪
whisper (speech-to-text) encoder 0 ⚪

No architecture changes detected. ✅


Legend: ⚪ No change · 🔵 Minor (attrs/inits) · 🟡 Moderate (nodes added/removed) · 🔴 Major (interface changed)

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

Unresolved correctness and serialization issues accompany failed decoder numerical gates and pending corrected-package qualification.

3 open findings
What changed in this PR

Adds pinned Nemotron 3.5 Bolt Omni support to Mobius’s ONNX export pipeline. Full-model numerical qualification remains incomplete.

Changes:

  • Adds heterogeneous Puzzle decoding, RADIOv4 vision, and image/video prompt processing.
  • Preserves native mixed-format weights through transactional loading and prepared-feature GenAI metadata.
  • Adds precision corrections, regression tests, and qualification documentation.
File Description
tests/​model_coverage_test.py Documents standalone Puzzle coverage exception.
tests/​_test_configs.py Adds tiny Puzzle and Omni configurations.
testdata/​cases/​vision-language/​nemotron-3.5-bolt-74b.yaml Declares pinned qualification case.
src/​mobius/​tasks/​_nemotron_h_omni.py Builds three-component Omni package.
src/​mobius/​tasks/​_cache_utils.py Preserves configured SSM state dtype.
src/​mobius/​tasks/​__init__.py Registers Omni task.
src/​mobius/​models/​nemotron3_diarization.py Reuses parameter-realization helper.
src/​mobius/​models/​nemotron_h.py Adds Puzzle topology and precision handling.
src/​mobius/​models/​nemotron_h_puzzle_test.py Tests MoE numerical precision.
src/​mobius/​models/​nemotron_h_omni.py Composes native Omni components.
src/​mobius/​models/​nemotron_h_omni_test.py Tests component validation.
src/​mobius/​models/​kimi_k3.py Preserves FP32 residual-scoring weights.
src/​mobius/​models/​kimi_k3_test.py Checks reduced-precision arithmetic consistency.
src/​mobius/​models/​_nemotron_h_omni_vision.py Implements projection and video compaction.
src/​mobius/​models/​__init__.py Exports new model classes.
src/​mobius/​integrations/​transformers/​_nemotron_h_omni_weights.py Defines native streaming weight bindings.
src/​mobius/​integrations/​transformers/​_nemotron_h_omni_weights_test.py Tests storage fidelity and atomic failure.
src/​mobius/​integrations/​transformers/​_nemotron_h_omni_processing.py Validates media and compacts prompts.
src/​mobius/​integrations/​transformers/​_builder.py Pins sources and selects native loading.
src/​mobius/​integrations/​transformers/​_builder_test.py Tests pinning and unsupported-mode rejection.
src/​mobius/​integrations/​ort_genai/​genai_config.py Adds Omni runtime metadata.
src/​mobius/​integrations/​ort_genai/​auto_export.py Maps hybrid caches and pinned assets.
src/​mobius/​integrations/​ort_genai/​_nemotron_h_omni_test.py Tests prepared-feature metadata.
src/​mobius/​integrations/​gguf/​_runtime_evidence_test.py Separates current topology from historical counts.
src/​mobius/​integrations/​_weight_loading.py Adds transactional whole-package streaming.
src/​mobius/​components/​_rms_norm.py Adds FP32 gated normalization.
src/​mobius/​components/​_radio_v4_vision.py Implements RADIOv4 backbone.
src/​mobius/​components/​_radio_v4_vision_test.py Tests backbone parity and shapes.
src/​mobius/​components/​_quantized_linear.py Adds native packed projection operators.
src/​mobius/​components/​_quantized_linear_test.py Updates activation-dtype validation.
src/​mobius/​components/​_native_packed_linear_test.py Tests native operator contracts and rounding.
src/​mobius/​components/​_multimodal.py Adds flat media-feature mixing.
src/​mobius/​components/​_mamba_block.py Adds dtype annotations and masking hook.
src/​mobius/​components/​_float32_linear.py Preserves FP32 accumulation through bias.
src/​mobius/​components/​_float32_linear_test.py Tests dense rounding boundaries.
src/​mobius/​components/​_float32_gated_rms_norm_test.py Tests grouped normalization precision.
src/​mobius/​components/​_flat_input_mixer_test.py Tests feature accounting and absent media.
src/​mobius/​components/​_common.py Shares parameter realization and propagates dtype.
src/​mobius/​components/​__init__.py Exports reusable components.
src/​mobius/​_testing/​ort_inference.py Corrects scalar, empty, and strided transport.
src/​mobius/​_testing/​ort_inference_test.py Tests tensor transport round trips.
src/​mobius/​_registry.py Registers pinned Omni and Puzzle architectures.
src/​mobius/​_configs/​per_model/​_nemotron_h_puzzle.py Resolves per-layer topology and state settings.
src/​mobius/​_configs/​per_model/​_nemotron_h_puzzle_test.py Tests Puzzle extraction and validation.
src/​mobius/​_configs/​per_model/​_nemotron_h_omni.py Parses nested architecture and storage contracts.
src/​mobius/​_configs/​per_model/​_nemotron_h_omni_test.py Tests Omni configuration contracts.
src/​mobius/​_configs/​_base.py Adds per-layer configuration hook.
src/​mobius/​_configs/​__init__.py Exports new configuration classes.
docs/​nemotron-h-omni.md Documents export and qualification limits.
docs/​nemotron-h-omni-processing.md Documents media preparation and decoding handoff.

🧠 Review effort: Balanced


💡 Configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@rui-ren

rui-ren commented Oct 15, 2026

Copy link
Copy Markdown
Contributor Author

Fixed the L1 smoke failure in 2c9857a. The component-quantization path leaves a LayerNormalization activation dtype unresolved during graph construction; Float32Linear incorrectly treated that as an unsupported dtype. Known unsupported dtypes still raise; graph-wide inference now resolves unknown activations, retaining FP32 MatMul+bias and CastLike. Added six F32/F16/BF16 inference regressions. Full unchanged L1 suite: 1,745 passed, 52 existing skips; dense/vision CPU+CUDA selection: 176 passed, zero skips. No smoke-test exclusions or tolerance changes. Fresh remote CI is starting.

@titaiwangms

Copy link
Copy Markdown
Contributor

Full review

Recommendation: request changes before merge. Reviewed head: 52205332bd4fe488204de0b902b126ba8c188008; base: b1e9c8e9dec1dfa206183f957e77d07cfb734df2. Keeping this PR in draft is appropriate.

Five reviewers covered implementation, readability, failure modes, numerical/reference contracts, and integration. The author updated the branch during review, so a second targeted five-reviewer pass inspected the complete delta from 1edfa52 to 52205332. Verification was repeated on the latter head. The consolidated result is 3 Major findings and 2 Minor findings.

Confirmed findings

All paths below are relative to src/mobius/.

F1 — Major: cached decoding rejects a valid full attention mask

Location: integrations/transformers/_nemotron_h_omni_processing.py:153-158

compact_omni_prompt requires attention_mask.shape == input_ids.shape even for cached, absent-media decoding. However, the decoder interface requires a past-plus-current mask (tasks/_base.py:272-277), and Puzzle explicitly preserves that full mask (models/nemotron_h.py).

Current-head tiny repro:

input_ids:       int64 [[18]]
attention_mask:  int64 ones([1, 28])
calls:          ()
vision_outputs: ()
hidden_size:    16
cached_decode:  True

Observed: ValueError: attention_mask must match input_ids shape

The [1,1] mask control succeeds, but truncating the real decoder mask is not a valid fix.

Minimal fix: retain exact-shape validation for prefill compaction. For cached no-media calls, accept a rank-two mask with matching batch and sufficient past-plus-current length, and return it unchanged. Add the full-mask regression, including ordinary generated token 18.

F2 — Major: direct configuration defaults change recurrence and cache semantics

Location: _configs/per_model/_nemotron_h_puzzle.py:31-40,83-89

Direct NemotronHPuzzleConfig construction, also inherited by NemotronHOmniConfig, retains mamba_time_step_min=0.001 and mamba_ssm_dtype=None. The source reader explicitly sets runtime minimum 0.0 and default FP32 SSM state.

Both families reproduced this difference on current-head tiny BF16 graphs:

Construction Runtime timestep minimum SSM input/output dtype
Direct constructor 0.001 BFLOAT16
from_transformers 0.0 FLOAT

The ports were past_key_values.0.ssm_state and present.0.ssm_state, each shaped [batch,4,4,8]. Direct construction is a public build_from_module route and is exercised by the added tiny configurations.

Minimal fix: override these dataclass defaults on Puzzle so Omni inherits them, preserve explicit source overrides, and test direct BF16 construction. This finding does not claim that source-reader exports use the wrong defaults.

F3 — Major: native lazy loading bypasses the existing bounded-streaming save policy

Location: integrations/transformers/_nemotron_h_omni_weights.py:183-201; consumer: _model_package.py:758-795,827-840

The plan reports output_weight_format="native-mixed-precision" without streaming_external_data=True. Consequently, it selects neither the dense nor preserved-streaming save policy. Existing native GPT-OSS loading uses that flag.

Actual tiny package saves on the reviewed head showed:

Observation Native report Control with streaming flag
Writer shard limit None 1073741824 (1 GiB)
Streaming staged publication Not selected by this report Selected
Existing destination Ordinary save behavior Explicit refusal

Package-local max_workers was 8 versus 1, but the installed onnx_ir.save has no max_workers parameter. This is not evidence of eight actual writer workers, OOM, peak-memory usage, or a blanket atomicity requirement for ordinary saves. It is a reproducible failure to select the existing preserved-streaming policy and shard bound.

Minimal fix: set streaming_external_data=True, or carry this lifecycle requirement structurally through the shared streaming interface. Add a tiny native save-policy regression.

F4 — Minor: the default revision pin misses early CLI probes

Location: integrations/transformers/_builder.py:409-419, integrations/ort_genai/auto_export.py:2094-2100; affected caller: __main__.py:285-311

The first CLI Hub/Diffusers probe happens before the builder applies the default Bolt revision. A current-head mocked CLI probe receives revision=None when omitted, and the supplied revision when explicit.

A mutable default-branch pipeline index could change routing before the pin, but a present live misroute was not established. The documented explicit-revision command is unaffected.

Minimal fix: share checkpoint source/revision resolution and apply it before the first Hub probe, rather than duplicating more model-specific pin branches across entry points.

F5 — Minor: new FP16 CUDA tests assume an unsupported source/oracle equivalence

Location: components/_float32_linear_test.py:92-96

All three biased FLOAT16 CUDA cases, ranks 1/2/3, fail at:

torch.testing.assert_close(source, reference, rtol=0, atol=0)

Observed on the supplied A100/PyTorch backend: 2/9 mismatched elements, maximum absolute difference 9.5367431640625e-07. The assertion is before ORT output comparison.

An earlier-head diagnostic explicitly recorded that source assertion failure and continued the unchanged rank-2 ORT-versus-oracle array assertions; those completed. The current-head batch still reports the three original failures separately. No ORT output defect was established by these failures.

Minimal fix: separate the component's defined FP32-through-bias arithmetic oracle from native PyTorch backend qualification. Keep cancellation sentinels and exact arithmetic checks; do not globally loosen tolerances or hide the source-backend limitation.

Reuse, scalability, and Lightning relationship

The whole-package loader usefully reuses shared plans, source accounting, and staged binding. The new Float32AccumulationMamba2Block subclass scopes the intended precision changes without changing default Mamba parameter/cache contracts. Native IQ2/Q8/A16 semantics are not interchangeable with the existing affine quantization factory; a dedicated native plan is not inherently ad hoc.

One nonblocking consolidation opportunity is the new public realize_parameters helper alongside the existing OCR captured-parameter helper. Test exact root/subgraph scoping before consolidating; do not assume they are interchangeable or introduce a universal framework merely to remove duplication.

This PR does not require Lightning #761 to merge first. The reviewed heads are parallel branches from the same base, neither containing the other. They reuse the preexisting Nemotron-H foundation rather than depending on #761's MTP/BF16-reconstruction modules. Shared-file overlap still requires integration and regression testing after either merges.

The separate runtime deliverables are microsoft/onnxruntime#33400 for native operators and microsoft/onnxruntime-genai#2741 for prepared-feature/hybrid-cache generation. Their existence is not a claim of stock released-runtime support.

Findings ledger and dissent

Raised by Finding Disposition
Code + Deep Cached attention-mask mismatch Confirmed Major, F1
Code Direct configuration defaults Confirmed Major, F2
Critical; Integration corroboration Native streaming save-policy selection Confirmed Major, F3, limited to observed policy/shard behavior
Integration Early revision pin Confirmed Minor, F4; original Major severity overruled because a current live misroute was not established
QA, P1 triage FP16 CUDA source/oracle failures Confirmed Minor, F5; not established as a production ORT numerical defect

The second-round delta review established no additional material correctness findings. It did not clear F1-F5. Readability suggestions about hook and precision-contract documentation remain nonblocking.

Validation

The final-head offline batch produced:

449 collected / 51 deselected / 398 selected
393 passed, 3 failed, 2 skipped in 25.66s
  • The three failures are F5.
  • The two skips require an unavailable pinned processor-source checkout.
  • Eight opt-in real checkpoint cases were deselected by not integration, not executed.
  • New Mamba precision tests: 15 passed; causal convolution tests: 28 passed.
  • Provider-labelled nodes: CPU 28 passed; CUDA 31 passed and 3 failed. These are node-ID counts, not total device-execution coverage.
  • Current-head tiny probes reconfirmed F1-F4.
  • A separate CPU carry boundary passed exact equality: state [10,20,30] plus input [40] returns present [20,30,40].

Imports were verified against the reviewed worktree. No checkpoint downloads or dependency installations were performed. The continuation diagnostic is not counted as a passing substitute for a failed pytest case.

Attributed open questions and exclusions

  • Deep / Critical: exact pinned native/HF/Triton arithmetic and complete Conv -> CastLike -> Swish plus reused-state checkpoint feedback remain independently unqualified.
  • Integration: companion GenAI handling of the actual graph's position_ids and FP32 SSM allocation was not executed. The in-repository delta wiring was checked.
  • Critical: inherited lazy reads check layout/scales, not source-content identity; caller immutability versus a content-identity guarantee needs an explicit contract.
  • Deep: ONNX's positive-K wording versus ORT's support for TopK K=0 remains a portability question, not an observed ORT bug.
  • Readability: captured-helper equivalence and exhaustive shared Linear dtype-hint consumer coverage remain unverified. No generic-factory replacement for the native mixed formats was established.

Not checked: fresh full-checkpoint export, native IQ2 execution, companion runtime execution, full-model parity/generation, performance, 24 GB residency, exhaustive repository tests, or full lint/type qualification.

Historical v5/v6 failures and later corrected variants are distinct evidence. This review neither asserts that the latest arithmetic necessarily retains identical historical errors nor clears its fresh full-package qualification gates. Threat-model coverage was bounded to external configuration/tensors/media provenance, lazy-source lifetime, and output policy; this was not a broad security audit.

@rui-ren

rui-ren commented Oct 16, 2026 •

Copy link
Copy Markdown
Contributor Author

Full numerical qualification: FAIL. This candidate is not shipping-ready.

The source-chunk candidate now has a complete eight-step comparison: all 1,496 required arrays are finite and aligned, but 281 fail the unchanged normalized-RMSE <=0.03 / cosine >=0.999 gates. A separate lead audit recomputed every metric/gate from the preserved FP64 sums and confirmed the verdict.

Check Status Result
Exact source-value fidelity PASS 28,885 sources; 28,882 exact bindings; three validated metadata records; zero unexpected FP32 downcasts
Ordinary greedy token identity PASS All eight tokens match exactly
Full logits PASS 8/8 arrays
Embeddings PASS 8/8 arrays; source/native bytes identical
KV cache FAIL 110/128 arrays: keys 64/64, values 46/64
Convolution cache FAIL 229/320 arrays
SSM cache PASS 320/320 arrays
Hidden states FAIL 540/712 arrays
Native IQ2 CUDA execution PASS (execution only) 171,442 profiled MatMulGGMLIQ2XXS CUDA events; not a full-model accuracy pass
Vision/media on this new package NOT_RUN Previous V8 vision results are not transferred
Speculative integration NOT_RUN Held until ordinary decoder correctness

Exact expected/actual tokens: [1049,1044,1032,1050,1044,1032,1051,1044]. Matching tokens and logits do not override the failed cache/hidden gates.

The first prefill common-output threshold crossing is convolution state at global layer27 (NRMSE about0.033628); the first failed prefill hidden output is hidden_38 (0.03204191). The worst required array is cached step5 hidden_18: NRMSE 0.099375863, cosine 0.995051808. These are localization observations, not proof of a faulty kernel. Embedding/hidden_00 are bitwise source-identical, while prefill hidden_01 already differs (NRMSE about0.000279793). A same-input first-layer substage investigation is now authorized; no arithmetic patch is justified yet.

The diagnostic-header issue is resolved in a separately versioned local validator: the exporter intentionally removes non-interface symbolic aliases, leaving legitimate partially anonymous axes. The validator now distinguishes raw anonymous SymbolicDim(None) from known conflicting dimensions, including the literal name "None", without rewriting partial metadata or relaxing rank/dtype/topology/runtime-shape guards. Its targeted file passes185 tests, including86 new regressions. The instrumented run preserved all776 common arrays bitwise against the ordinary baseline; all97 original public output declarations remain unchanged and no common-shape refinement was needed.

Actual CUDA execution/provider/library capture passed, with no unexpected CPU floating-point computation. The original qualified29 runtime was used; the newer allocator55db runtime was not substituted. All28 original package files remained unchanged during this completed qualification run; its only package addition was the sibling diagnostic header model.hidden.onnx. Subsequent stage probes are separately authorized. Arrays, profiles, exact tokens, commands, hashes and per-array metrics are preserved.

Export/source provenance is unchanged: Mobius a8da7270fa2519eec737f103bc1d662b9accc174, model revision c6cc2e8ffa353403213d6b9b18aaf8eb684d705a, and the separately reviewed unreleased shape overlay 7c42021b4e844f50624558ad4916a4e4b80262a9 from onnx-shape-inference#135. The actual weighted CPU export completed in429.22s, with24 external shards capped at1GiB and28,963 all-scope external references audited. This is completion evidence, not a paired performance improvement.

Receipt caveat remains: the unchanged exporter used *.onnx.data*, which misses model.onnx-00001-of-000NN.data; its original external-data hash map is empty. A separate complete reference-derived24-shard accounting sidecar and independent full-file hash audit supply that coverage. The source-value checker independently examines checkpoint values and real external references; it does not depend on the empty map.

Standalone1e-5 component failures remain open independently. A separate identical-prepared-input microcase localized its first exposed difference to five one-ULP BF16 weighted-B values; cumsum FP32, CB FP32 and intrachunk BF16 coefficients were bitwise equal. Source pre-cast FP32 arithmetic is still unobserved, so this is not a proven cast/exp cause or a demonstrated cause of the full-model failure. No thresholds, golds, precision, backend, masks or cache semantics were changed.

Sealed comparison SHA256: d28eca14ce84327b4e36f0d7ecf039fb048d535a0654d2e1eb79216cebead476.
Validation manifest SHA256: c0083a127e01ec8fdb679986331e6758dcbc837825fa1033fa9c22abc087d8e6.

No full-model readiness, public-Python GenAI validation, 24GB deployment, speculative acceptance or model-performance claim is made.

@rui-ren

rui-ren commented Oct 16, 2026

Copy link
Copy Markdown
Contributor Author

CUDA numerical investigation update (not model acceptance)

The original full-decoder result is unchanged: 1,215/1,496 numerical comparisons pass; 281 fail at the fixed NRMSE <= 0.03 / cosine >= 0.999 gates. All comparisons are finite; the eight greedy tokens match, but that does not establish decoder parity.

The first same-input discrepancy is already visible in the layer-0 NVFP4 input projection, with M=27, N=18,560, K=4,096. On the same checkpoint bytes and BF16 input:

Projection variant BF16 elements differing from frozen source
Original native A16 default 85 / 501,120
Existing BF16 dequantization + cuBLAS fallback (ORT_FP4_GEMV_MMA=0, diagnostic only) 167 / 501,120
Standard-operator expanded FP32 operand diagnostic 0 / 501,120

The original 85 differences are 80 one-step plus five five-step BF16 differences, not uniformly one-ULP differences. Disabling MMA is not a remedy and was not adopted.

The last row uses the existing runtime, not a new operator or precision-policy patch: typed views of the original packed FLOAT4 and FLOAT8 local-scale bytes -> FLOAT casts and local multiplication -> FLOAT-operand Gemm(transB=1) -> original FP32 global-scale multiplication -> BF16 store. The expanded local weight exists only in process memory; no expanded-weight file was created. The frozen reference, original package, thresholds and baseline runtime remain unchanged.

For this one projection, all 501,120 final BF16 values match the frozen source bitwise. All 27 observed FP32 post-global products for output row 6239 and all 4,096 local-weight FLOAT bits in that row, including signed zero, also match. Actual CUDA profiling/logging records cublasSgemm_v2, FP32 operands/output, default math, use_tf32=0, and the FP32 FFMA kernel. Pre-global accumulators remain unobserved.

This narrows the role of operand/backend computation semantics. It does not prove a defect in the existing A16 operator, whose summation order is unspecified, or that this projection explains every full-model failure. It is not native packed-A16 qualification, official SM120 qualification, a performance result, or proof of a 24 GB deployment footprint. No new native precision API has been implemented.

Reproduction pins: HF revision c6cc2e8ffa353403213d6b9b18aaf8eb684d705a; published Mobius head a8da7270fa2519eec737f103bc1d662b9accc174; original validation runtime pybind SHA256 f1ad43edce7b119d813d659fc39aa3e2beb88542617aad5017854bc051b9ad74, CUDA provider 394cc8fadb5006635368e96c8cd0fe124462d1a2a6eb67c3b7fc953f11d19c5d. Final single-projection report SHA256: 76b223475132092e46a0170edb1953cf598238181e8df43b41b19c0b8d46b780; independently verified source/output raw BF16 SHA256: b3926b8322b3a5af1990522b35a5aba63927bed618392d375e97fae5ddabcb8a.

Full-model readiness remains unqualified. Media, speculative integration and deployment-memory claims remain held.

@rui-ren

rui-ren commented Oct 16, 2026

Copy link
Copy Markdown
Contributor Author

Expanded-FP32 follow-up: single-projection equality is not a decoder remedy

Following the single-projection result, the diagnostic replaced all 80 NVFP4 projections with the same explicitly expanded FLOAT-operand expression, using unchanged checkpoint payloads, baseline runtime and frozen reference.

Two decoder forwards completed: prefill and the first cached step. The harness then stopped because its adapter requested decode-00.npz instead of the frozen contract's decode-01.npz. The preserved outputs from both completed forwards were scored offline using the declared contract filenames, without another model execution.

The comparison is worse on the same 374 entries, not a comparison of partial counts against the full 1,496:

Same prefill + first cached-step comparisons PASS FAIL
Original native A16 baseline 346 28
Expanded FLOAT-operand diagnostic 311 63

All 374 comparisons are finite and aligned; thresholds remain NRMSE <= 0.03 and cosine >= 0.999. The parent independently checked the actual arrays, pinned source NPZ/JSON checksums, declared native-dtype value hashes, state-layout alignment, FP64 metric sums and gates. Prefill profiling records 80 CUDA FLOAT Gemms and no substitution back to the native A16 operator. BLAS API/kernel symbols were not observed in this full-decoder run.

The input embeddings and hidden_00 are source-exact. Prefill layer-0 hidden_01 improves from 644 differing BF16 elements to 24 (NRMSE 0.0000531975), but errors remain downstream. The first prefill convolution-cache threshold failure is cache 22, NRMSE 0.0329912; its input hidden_22 already differs, so this is not evidence of a convolution-kernel defect. The worst observed partial comparison is cached-step convolution cache 38, NRMSE 0.0573950. Layer-0 internal projection and grouped-normalization outputs were not exposed in this full-decoder run; a specific remaining component cause is not established.

Only the generated prefix [1049, 1044] is available. The expanded variant's full 1,496 comparisons and eight-token identity are NOT_COMPLETED. The original native baseline's complete result remains 1,215 PASS / 281 FAIL. No native precision-policy implementation or production arithmetic change is justified by this experiment, and no 24 GB, media, speculative, performance or shipping-readiness claim is made.

Partial-run artifact-manifest SHA256: 1b3f0a0ddf8fdf29829c5fd842926b3fdaf20cec3d5fd6e70e3f6dfd4e5a46de. Offline same-entry analysis manifest SHA256: 890057e32509d946c029a7aa42d3ec3f6932bf43005465ff116a0526fe0d1f06. Existing package files, checkpoint, reference and earlier failure evidence were preserved.

@rui-ren

rui-ren commented Oct 16, 2026 •

Copy link
Copy Markdown
Contributor Author

Routing-boundary investigation (diagnostic replays, not full-model acceptance)

All 40 per-layer source/native routing contracts agree: actual heterogeneous expert counts/top-k values, dimensions, scoring, selection bias, grouping, routing normalization/scaling and dtypes. No global-default or per-layer topology mismatch was found.

The source-conditioned component controls also pass the original float gates:

Isolated control NRMSE Result
Layer-0 grouped normalization 0.00000696678 PASS; four BF16 output differences
First MoE block, layer 1, identical source input 0.000446536 PASS; 1,782 BF16 residual-output differences

The source controls reproduce the frozen source endpoints bitwise. The norm's internal source FP32 registers remain unobserved. The first MoE observer preserves endpoints and typed operators, but its complete native hardware tail audit is incomplete; it is not globally qualified.

A separate, smaller routing-only sweep executed the pinned source norm/router callables and unchanged native routing prefixes on recorded prefill hidden states. Layer-1 routing fixtures reproduce the earlier captures bitwise, all executed native floating operators are on CUDA, and this sweep's CUPTI capture completed without overflow. These results are explicitly REPLAYED_ROUTING_ON_RECORDED_HIDDEN, not routes captured during a new complete decoder execution:

Routing replay Matching expert sets Changed rows
Both implementations receive identical frozen source hidden inputs 1,079 / 1,080 1
Source hidden inputs versus the original native decoder's recorded hidden trajectory 931 / 1,080 149

The sole identical-input mismatch is layer 34/token 3: source selects expert 372 where native selects 264. The normalization output already differs in one BF16 element, and the Kth/K+1 selection-score gap is 1.9073486328125e-6 in each implementation, with opposite expert ordering and no boundary tie. All 200 same-input floating comparisons pass the fixed float gates, despite this discrete routing difference.

On the original native hidden trajectory, the earliest replayed set change is layer 3/token 6 (source expert 211 versus native expert 210). On identical source inputs, layer 3 instead matches all 27 token sets. This distinguishes a conditional change following upstream hidden drift from evidence of a broken local TopK kernel. Selected sets and expert-associated weights were compared, not unsorted positional indices.

The parent independently verified all 1,080 replayed rows, TopK validity, exchanged IDs, boundary gaps and the layer-34 normalization difference from retained arrays. These controls show sensitivity at discrete routing boundaries; they do not establish the cause of every full-decoder failure or justify a precision workaround.

An additional static audit ruled out a missing IQ2/Q8 local-weight cast: both round the complete decoded weight to the activation type before FP32 multiplication. The historical correction 1c1b300 is present in the frozen CUDA provider and unchanged in ORT PR #33400 head 749b72c; the retained object/source lineage was checked. No new cast patch or production arithmetic change is justified by that candidate. Audit report SHA256: 5d4136dfcdf858b5f377b400cc729ad80766dbdba28bf11a4c9a40756ae17fc7.

The original full-model result remains 1,215 PASS / 281 FAIL of 1,496 under unchanged thresholds. No production arithmetic, reference, acceptance threshold or routing indices were changed. Media, speculative integration, deployment-memory/performance and shipping readiness remain unqualified.

Routing report SHA256: a52ec9d363a90bedcfad0bcc529c7e7d2bd3ccaf44ed00cdb22ab2950353769a; boundary detail: BOUNDARY_ADDENDUM.json. First-MoE report: e273f01bf5ee4860c2468db7526e880f92060e9be5d06be8e0876d513ffa6d35; grouped-norm report: 87c343854842a6b50bc9c8cb07bc080cc99a98f1c008f3d5da60cb4bca2a8b71.

Bounded BF16 cuBLAS projection diagnostic

One session/one forward compared two source-conditioned projections, each through its original packed operator and a standard BF16 CUDA Gemm. Complete weights were decoded with the unchanged pinned CPU helpers, cast to BF16 and stored inline in a separate diagnostic header. This is a dequantized BF16 single-projection diagnostic, not native packed execution or a 24 GB deployment result.

Projection Packed differences vs frozen source BF16 Gemm differences vs frozen source
Layer 1 Q8 latent input projection, 27 rows 38 / 27,648 0 / 27,648
Layer 1 IQ2 expert 1 up projection, token 16 1 / 2,048 0 / 2,048

The IQ2 result is a new M1 source-input control, not the earlier masked M27 native expert branch. Packed Q8 NRMSE is 0.00014840342519891798; packed IQ2 NRMSE is approximately 1.605e-8. Both packed operators already pass the unchanged component gates; the bitwise Gemm matches do not establish a packed-kernel contract violation or a full-model remedy.

All four typed compute nodes ran on CUDA. Actual Gemm calls were cublasGemmEx, BF16 A/B/C, CUBLAS_COMPUTE_32F, default math; five successful driver launches were captured without callback errors/overflow. Historical source cuBLAS math flags remain unobserved, so matching outputs do not establish identical source algorithms. The parent independently recomputed raw metrics, checked frozen input/output bindings and verified the manifest/header and execution evidence. No production changes, builds or full-model rerun were performed. Retained evidence plus header: 13,129,440 bytes; the worker was reaped and GPU 4 released.

Report SHA256: 23077960cb89d6c8e9e2927804f796f0e305cc2cf0419874a5d57d2fa008eda3. Full-decoder parity remains FAIL; this only identifies a bounded backend candidate for further review.

Native packed BF16 cuBLAS candidate: first-MoE control

A local, unpublished ORT candidate (60e4052a60a0a8ec41e81fcf5648413864b0b0be) changes BF16 IQ2/Q8 execution to temporary BF16 CUDA weight decoding followed by stock BF16 cuBLAS GEMM with FP32 accumulation. Checkpoint/ONNX weights remain packed; there is no persistent dense-weight cache. This does introduce transient expanded CUDA scratch, so it does not establish a 24 GB execution footprint. FP32/FP16 direct paths are unchanged.

The candidate passes 29 focused CUDA regressions without skips and matches the two frozen-source projection controls bitwise. In one source-conditioned forward of the unchanged full first-MoE graph, its residual endpoint now matches all 110,592 BF16 values bitwise; the original native endpoint differs at 1,782 values. The parent independently verified the artifact manifest, original input, raw endpoint arrays and 2,661 CUDA node-profile events. The bounded callback evidence records 484 BF16 cuBLAS calls with compute32F/default math. This is the actual masked-M27, 240-expert component, not the M1 projection proxy.

Candidate CUDA provider SHA256: dc978a1d2f75a0617b074224dd0ed1e8c164a27c11cd051bf91dd53eccba258a. First-MoE report SHA256: 8e4afe933ec445368f127780020390ae78491c535c6cec5843b58cff11496ff5. The isolated runtime combines fresh candidate units with qualified retained build inputs; it is not a clean build of the published ORT head.

Scope remains component-only. No separate observer-invariance claim is made for this component control. One fresh full 1,496-array/eight-token candidate qualification has been authorized, including a new 776-output ordinary/instrumented bitwise-invariance check, unchanged numerical gates and exact generated tokens. It has no numerical result yet. The original full-decoder result remains 1,215 PASS / 281 FAIL; current-package media, GenAI pairing, speculation, performance and deployment-memory readiness are not established by this result.

Full candidate qualification: FAIL, despite exact greedy tokens

The fresh full run of the local 60e4052a packed-BF16/cuBLAS candidate is complete. The parent independently recomputed all 1,496 comparisons from retained raw arrays, verified source-native value hashes before layout adaptation, and confirmed the unchanged finite/NRMSE <= 0.03/cosine >= 0.999 gates.

Output family PASS FAIL
Logits 8 0
Embedding 8 0
Attention K 64 0
Attention V 57 7
Convolution state 225 95
SSM state 320 0
Instrumented hidden states 516 196
Total 1,198 298

All 776 ordinary/instrumented common outputs pass the fresh typed-byte invariance check. All eight greedy tokens exactly match the source: [1049, 1044, 1032, 1050, 1044, 1032, 1051, 1044]. Exact generation is therefore PASS for this declared case, but full decoder numerical parity is FAIL. The original runtime's separate result remains 1,215 PASS / 281 FAIL; the candidate's isolated source-exact first-MoE endpoint did not establish an aggregate improvement or solve full-model parity.

The candidate stays local/unpublished and is not selected as a qualified shipping fix. No thresholds, source values, model graph arithmetic or reference definitions were changed. Causal localization now uses saved prefill/cached arrays; a first failing entry in comparison-file order must not be confused with the first failing layer in execution order. No recurrence or precision change is justified yet.

Runtime CUDA SHA256: dc978a1d2f75a0617b074224dd0ed1e8c164a27c11cd051bf91dd53eccba258a. Full report SHA256: e82e65c7e8779b1f2da6d1d6b709254652524c5410a4287421ea89e59db06677. Manifest SHA256: 7c91c9bc7e0cc99994f61c0c618c56910103f9626347318de1d16f7efabf2a51. The earlier RPC-harness failure is preserved separately and produced no inference outputs; this report is the completed corrected attempt.

Current-package multimodal generation, GenAI full-package pairing, speculation, performance and 24 GB deployment readiness remain unqualified.

Current-package single-image component: independently audited PASS

The unchanged native-export-source-chunk-v2 vision graph was executed with the local 60e4052a candidate runtime, using the pinned FLOAT image (1, 3, 480, 640) and scalar is_video=False. Exactly one session and one forward completed; the native BF16 (300, 4096) features were retained losslessly as UINT16 bits.

The parent independently rehashed the raw/source/profile archives, recomputed the full-tensor F64 metrics and verified exact source retention masks/indices:

Check Result
Finite / NRMSE <= 0.03 / cosine >= 0.999 PASS
NRMSE 0.0073951044078977915
Cosine 0.9999730932389951
Retention mask and kept indices Source-exact
Actual typed placement 708 CUDA nodes; 15 CPU nodes, all INT64-only
Profiled model runs 1

Execution manifest SHA256: 7a00291b0f3e6ac8f40012b211d2f9a7d2839dde8afcc4c74cfc665421321f00. Raw output SHA256: ac5fba570bb0de5a8a3fe615bf966bc17d944277551be6837292d9a5b0e35291. Source archive SHA256: 5a4009c9a17f7b9db1b8519fde29d522929ca08d96ffc32e68d3f2a6ccd722ec. Typed profile archive SHA256: dba113f3bd44d0f5d78d43aab318f5f62756be297f5acebd05fbc4c1ffdf9577. The exact command and runtime/graph pins are preserved in current-media-gpu7-component-v4/FINAL_REPORT.json.

This is one current-package vision component case, not an embedding/decoder or multimodal-generation pass. Current-package video execution, merged-embedding parity, multimodal generation and full GenAI runtime pairing remain NOT_RUN. Full decoder numerical parity remains FAIL: 1,198 PASS / 298 FAIL; the separate declared ordinary eight-token sequence remains exact.

Saved-array localization: chronology, not a new precision fix

The completed CPU-only comparison establishes the actual graph-topological order across all output families. The first candidate prefill threshold failure really is layer-36 V; the earliest cached failed layer is layer-17 output at step 5. Every step's first saved bit drift is the layer-0 raw pre-convolution projection tail, not a convolution output. Cached failures must be interpreted with each trajectory's own already-divergent prior states.

Against the original runtime, 1,141 entries pass both, 224 fail both, 57 newly pass and 74 newly fail. Candidate/old layer-0 observed states and first hidden output are bitwise identical at all eight steps, but this does not expose candidate internal projection/normalization registers or prove a sole cause. The independently source-exact first-MoE component was conditioned on source input; the full candidate actually supplies a different preceding hidden state. No recurrence, precision, threshold or reference change is justified by the aggregate counts alone.

The local candidate remains unpublished/unselected for shipping. Speculation, performance and 24 GB deployment readiness remain unqualified.

Native GenAI tiny pairing: PASS, not full-package qualification

One existing native test process built from GenAI 6e3480b4 completed exactly four cases, zero skips: CPU/CUDA scalar-phase numerical/state assertions and CPU/CUDA native BF16/F32-buffer/prepared-text equivalence. The parent independently checked the XML, receipt/evidence seals and four observed library hashes. The scalar BOOL phase transition False -> True passes.

Actual mapped libraries were core 601db2b2ed986ee1aeb797c8b9d7dda841be96db384403e30d2de3c78e44ae68, CUDA provider dc978a1d2f75a0617b074224dd0ed1e8c164a27c11cd051bf91dd53eccba258a, shared provider 98cc35d20a8701b425d3b51ebbbd9186744c9abcec5d2270879f6c165a735228, and GenAI CUDA 81add9eab7de002917e8b2fdf8aa3d2818141836bc489e17b96e0dbf6e8a1c08. No old core62/provider394/Python-f1ad mapping was observed. The native test binary embeds GenAI core; this is not execution of the GenAI shared core or public Python API. ORT operator placement is unobserved in this harness.

Receipt SHA256: 5bee3a913622989c286e8082d50cf780e8d554f26e8ea7153a1b33e8d7fdf62f; exact command, environment, fixture pins and XML are retained in genai-candidate-tiny-pair-v1/. Full-package pairing/generation remain NOT_RUN/HOLD, and full decoder numerical parity remains FAIL: 298/1,496 arrays. This tiny local composite-runtime result is not a clean public-PR build, IQ2/Q8/NVFP4 arithmetic qualification, performance result or 24 GB claim.

Exact-head golden CI: real initialization failure, then job cancellation

At Mobius head 1782df1a, both L4 and L5 completed CANCELLED at the official one-hour bound. Immediate traceback reporting worked: the first actual failure in each was text-generation/arcee-afm-4.5b, FLOAT32, during ORT session initialization:

BFCArena::AllocateRawInternal: Failed to allocate memory for requested buffer of size 188743680

That is a 180 MiB allocation request, before numerical comparison/generation, not a reported accuracy-gate failure. The requested provider order is CUDA then CPU, but the failed arena's device and actual RAM/VRAM availability are unobserved. These runs used serial pytest, not xdist workers. The Arcee failure returned; later Bamba cases timed out, so it was not simply Arcee hanging until cancellation.

The workflows, Arcee case/class and session-constructor path are identical to the recorded base, which does not prove the failure is inherited or rule out changed shared graph behavior. No capacity, leak, PR-regression or surgical-fix verdict is established. Both complete official job streams were hashed; bounded traces, setup versions and head/base citations are preserved in bolt-golden-1782-completed-triage-v1/. L1 smoke remains separately PASS; L4/L5 are not passing. No numerical threshold, model dtype, test selection or timeout was changed to hide these failures.

Current-package compact video vision: both declared cases PASS

The unchanged current-package vision graph and local candidate runtime now pass both retained clips. Each ran once, in its own fresh one-session/one-forward/profile attempt. The parent independently rehashed raw/source/profile archives, recomputed F64 metrics, checked exact native EVS masks/indices, and inspected all 793 typed profile nodes.

Prepared-input case Native BF16 features NRMSE Cosine Mask/indices
Five frames -> three tubelets (256, 4096) 0.010337272383661786 0.9999466127106735 Source-exact
Seven frames -> four tubelets (307, 4096) 0.00923699521644999 0.9999573530155512 Source-exact

Both preserve final-frame repetition and temporal-patch-2 semantics; these are ordered shifted-photo clips, not natural-video sampling. Native selection was computed by the graph, not injected from source indices. Direct unpruned dense-video output remains unobserved.

Placement is not entirely GPU floating arithmetic: each video profile contains 755 CUDA and 38 CPU nodes, including two actual CPU FP64 shape-scalar operations (Sqrt for spatial-grid size and Mul for retained-token count) plus four scalar casts. Their input/output shapes and shape-derived graph lineage were checked. No CPU activation-tensor floating arithmetic was observed, but an all-floating-CUDA claim would be false.

The seven-frame final report SHA256 is ef4369a664f929006c8497a716e0e0d33802e442d497ea9f8da21d84f1ff4984; five-frame execution manifest SHA256 is aa4f201736a44ecde7a405ee6b7c5b05743e862e8cc04a6a5552e28c1109208a. Exact commands, lossless outputs, complete gzip profiles, runtime maps and seals remain in the separate current-media-gpu7-video-odd-{default,feature-dependent}-v1/ directories. Both worker trees were reaped and the GPU released.

Together with the previously reported single-image result, all three declared prepared-input vision-component cases pass on the current package. This does not qualify the raw-media processor, merged embedding, decoder/media integration or multimodal generation. Those integration gates remain NOT_RUN/HOLD; the unchanged native candidate's full decoder remains 1,198 PASS / 298 FAIL.

One explicitly labeled expanded-FP32 NVFP4 graph plus native packed-IQ2/Q8-cuBLAS diagnostic has now been authorized, after independent 71-test CPU qualification and exact graph/header/source pin checks. It uses two sequential reaped workers, the same frozen 1,496 comparisons/eight tokens and a fresh 776-output invariance check. It has no numerical result yet. This is a separate non-self-contained diagnostic variant, not native FLOAT NVFP4 support, a qualified shipping package, speculative/performance evidence or a 24 GB deployment claim.

Initialization update: the first combined diagnostic stopped before any forward: ORT rejected symlinked external data while checking an initializer in a nested If/Scan subgraph. Only embedding construction succeeded; ordinary decoder construction failed, hidden worker never started, and all 1,496 comparisons/776 invariance checks are NOT_RUN, not numerical failures. Worker cleanup succeeded and GPU4 was released. Failed-attempt report SHA256: 36f155004b98c2d091e466d894eb1744e832ebe1aa65028d267cfdfde1e9412a. No automatic retry or policy disabling was performed. A separate CPU-only regular-file-layout control is being qualified before any new execution authorization.

Supported-layout follow-up: actual native CPU controls now verify that a regular single-link external payload loads, while symbolic links and multiple hard links both produce the expected nested If/Scan policy rejection. No checks were disabled and no payloads were copied or linked. A new, explicitly named unshipped diagnostic header was placed beside the existing expanded diagnostic and original payloads; canonical model.onnx/GenAI selection and every pre-existing file remained unchanged. The directory's sole new filename and timestamp delta are recorded. The parent independently ran 80/80 CPU regressions and verified header/wrapper/guard/descriptor pins. Qualification report SHA256: e30661b8a06d0b9179dd0469d92cb1176a821f4ea24c5f0b1e24f00b3e1aa5d9. A fresh, separately authorized full-v2 diagnostic is now in progress; there is no numerical result to report yet.

Independent image-merge reference is ready, not native integration: the unchanged pinned upstream whole forward method was invoked six times with a real checkpoint-backed BF16 embedding table, an explicitly substituted retained-source feature provider, and a stop-at-decoder capture boundary. Ten guards pass; actual counts are six method calls, three projector-boundary calls, five native embedding lookups and five decoder-boundary captures. No language-model or vision forward occurred. Only the 21 accessed checkpoint rows were hash-verified; the full logical table was mmap-backed without a 1 GiB initializer/copy, not claimed fully verified or loaded. The parent independently audited all sealed files, all ordinary-token rows, all 300 inserted source-feature rows and ordinary no-media token18. Primary BF16 merged-reference SHA256: 0665b798b0d2803b72f1d2553412cada07aaf32741e8eebd323ba9591c99236c; receipt SHA256: 8083e712810bbef0a13cd7de4e0f3e44a992f93923cf605eee88d2e482d227fb. The short/excess-feature contract was characterized without changing upstream behavior. Native current-package embedding, real GenAI/public-Python media integration and multimodal generation remain NOT_RUN/HOLD.

Combined diagnostic completed: FAIL, not a shipping remedy

The supported-layout full-v2 attempt completed all three sessions and 24 forwards using two sequential, reaped workers. The parent independently rehashed the sealed evidence and recomputed every one of the 1,496 comparisons from lossless raw arrays, checking original source dtype/value hashes before the declared state-layout adaptations and applying unchanged F64 gates.

Output family PASS FAIL
Embedding 8 0
Logits 8 0
SSM state 320 0
Key cache 54 10
Value cache 40 24
Raw projection / convolution-history cache 162 158
Hidden outputs 467 245
Total 1,059 437

All outputs are finite. The actual ordinary greedy tokens remain exactly [1049, 1044, 1032, 1050, 1044, 1032, 1051, 1044], and the frozen execution harness reports fresh 776/776 typed-byte ordinary/instrumented invariants. The parent verified the sealed invariance receipt, not a second independent raw recomputation of all 776 pairs; hidden archives intentionally retain only the 89 hidden outputs.

This explicitly labeled expanded-FP32 NVFP4 graph + native packed-IQ2/Q8 cuBLAS variant performs worse on full-state gates than both separate prior controls: original native 1,215/281, packed-cuBLAS native 1,198/298, combined diagnostic 1,059/437. Local source-conditioned component equality did not establish full-model parity. There is no new production correction or selected shipping variant.

The first reported prefill threshold failure is layer22's raw pre-convolution projection-history tail, NRMSE approximately 0.0333035; that cache is not the convolution output and a later threshold crossing does not establish the first causal substage. The first saved FP32 SSM difference is much smaller and passes its gate. Read-only three-trajectory causal localization is proceeding before any arithmetic change.

Full report SHA256: 44eb84f78af6f3500f0739fe18da4a642a2a7ec17db3378f56a0a29a5324e547; manifest SHA256: be88322f27fc2cd5991d255c2af89fdf2008f7976260648a5a76436418c77c53. Raw arrays, exact command, complete lossless profiles, actual library maps, source protections and worker-lifetime evidence are retained in packed-cublas-nvfp4-combined-full-validation-v2/. Sampled GPU peak was 46,993 MiB, not a 24 GB qualification. Both workers were reaped and GPU4 released.

Full decoder parity remains FAIL. Exact eight-token identity and passing logits/SSM do not override hidden/KV/conv-history failures. Native FLOAT NVFP4 support, official SM120/121 W4A4 parity, a 24 GB footprint, public GenAI/media generation, speculative integration and performance remain unqualified. No thresholds, reference definitions, cache semantics or padding masks were changed to obtain a pass.

Current embedding and prepared native image-feature wiring: scoped PASS

One bounded GPU7 attempt completed one worker, one original current-package embedding session and four acknowledged forwards/comparisons, with no retry. The source-feature image case, unchanged no-media 328-token case and ordinary no-media token18 case are each BF16 bitwise identical to the independently qualified upstream-method reference. The fourth case uses the retained, actual current V4 native vision output—not substituted source features—and passes against that same independent source merged-reference: F64 NRMSE 0.00739508357, cosine 0.99997309339, all finite. All 28 ordinary token positions remain source-bitwise exact; all 300 inserted rows are byte-identical to the actual native feature input.

The parent independently recomputed all four comparisons from lossless BF16 outputs, verified the native-feature input lineage and insertion/ordinary-position invariants, rechecked all 21 accessed target embedding rows, and audited the complete four-run profile and actual mapped-library hashes. Placement is 76 CUDA events and four CPU scalar INT64 Greater-to-BOOL events, zero CPU floating events; this is not an all-CUDA-node claim. Actual embedded core/CUDA/shared hashes are f1ad43ed / dc978a1d / 98cc35d2, the local candidate runtime rather than a newly qualified public GenAI runtime. Worker exit0, reap, monitor termination, GPU release and resource postconditions passed.

Report SHA256: 355766e96b279bde41540ef01573dfc2c0d25e620fa4dae81933fe24563c5142; execution manifest SHA256: 997f275717dd0d83294b0dd3d8313a245f124c4d37c7ee10a35a5fcd636b4bcf. Commands, lossless arrays, maps, complete profile and receipts are retained in current-embedding-source-reference-gpu7-v2/. This advances prepared image-feature → original embedding component wiring only: no new vision/source/decoder forward, live processor, public GenAI API or whole multimodal generation was executed. The full decoder variants above still FAIL; full-model shipping, full-package GenAI/media generation, speculation, performance and 24 GB claims remain HOLD.

Saved-array localization: an earlier observable bracket, not a recurrence diagnosis

The combined prefill has exact hidden_00 input but 24 differing BF16 values out of 110,592 in hidden_01 after layer0, versus 644 in the native-cuBLAS control. This boundary itself still passes (NRMSE 5.31974875e-5, cosine 0.999999998585). The layer0 raw xBC pre-convolution cache tail improves from eight BF16 differences to zero, but covers only the final three positions/30,720 values—not the full 501,120-value projection or z/dt slices. The earlier saved FP32 SSM state has 1,111 unequal values, first sampled difference one ULP, and passes its unchanged gate (NRMSE 6.27831258e-8). Neither this tiny state discrepancy nor layer22's later threshold crossing establishes a faulty recurrence.

The parent verified all localization artifact seals, independently checked the selected four raw prefill boundaries in both current native/combined variants, and cross-checked all 1,496 paired native/combined metric entries against their frozen full-run records. The combined variant fixes 82 previously failing comparisons but introduces 221 failures versus the native candidate; aggregate correctness therefore worsens despite the smaller first-layer BF16 difference count. Full input normalization/projection, actual convolution output, activation, recurrence readout, grouped normalization and output-projection internals remain UNOBSERVED in these saved full-model arrays. A CPU-only same-input first-layer stage-probe preflight is being prepared; no new GPU attempt or arithmetic change is authorized.

Localization report SHA256: f9ea2c91cb3c9efb9ccb32889c89f426a2b06e0559f57cdc612784bdccfff882; artifact manifest SHA256: 15a1df3b6e731b2807cca849f8d3b8d30731ca886c3f677e4c3ce6127de9c88c. Resource caveat: the read-only analysis completed, but its 600-second wall assertion tripped during final sealing at 600.09s; metadata-only preservation finished at 621.19s. This is explicitly not a resource-PASS claim. No further array analysis, model/source forward, ORT session or GPU execution occurred after that boundary.

Layer-0 source reproducibility probe v3: qualification FAIL, native stages NOT_RUN

The one authorized same-input component attempt stopped at the first unhooked source forward, before source hooks or either native ONNX cut ran. The original source block reproduced its frozen BF16 hidden_01 and raw K4 convolution-cache tail bitwise. Its FP32 SSM state did not reproduce bitwise: 1,623 / 1,048,576 values differ.

Parent independently verified the report, manifest, every retained artifact hash/size, all three actual raw endpoints, and recomputed the source-source state metrics in FP64:

Comparison Raw FP32 differences Normalized RMSE Cosine
New isolated source vs frozen full-source SSM 1,623 8.625278524139882e-8 0.9999999999999963
Retained combined native vs frozen full-source SSM 1,111 6.278312575289959e-8 0.9999999999999979
Retained combined native vs new isolated source SSM 1,816 9.921347881875378e-8 0.9999999999999951

All three source outputs are finite. These small errors satisfy the numerical thresholds but do not override the separately declared bitwise reproducibility gate. This is a failed diagnostic qualification, not a new full-model numerical run. No first-stage arithmetic attribution is justified.

A concrete invocation mismatch was subsequently found by reading the pinned source: the original full model calls _update_mamba_mask (modeling_nemotron_h.py:1464,1473,1554-1563), which maps this all-one prefill mask to None; the v3 isolated caller passed literal ones directly to the block. This is a confirmed caller difference, not an established cause of the SSM mismatch. A fresh CPU-only correction is being qualified using the original upstream method and regression coverage for padded masks. No precision, recurrence, backend or numerical-gate change has been made.

Actual execution: one source model, one source forward, zero hooked forwards, zero native workers/sessions/forwards/profiles, no retry. GPU4 was released and package/source protections passed. Sampled peaks: host RSS 1,606,520,832 bytes; GPU 2,059 MiB. The original failed controller did not retain the source child's exact numeric exit/PID or post-forward maps/flags; those evidence limitations are explicit, not reconstructed.

Evidence: /home/mobius/bolt-cuda-validation/combined-layer0-same-input-stage-probe-v3

  • Report SHA256: 897de326f6579be08cf20821e3a334a2fc65291784d58bfdcccd7db8737e64d2
  • Manifest SHA256: f89771821e201cf85a5e02cd7d537dad990215c3da90d63b37eb162c13fba0dc
  • Consumed parent execution authority SHA256: 129f8152e65f66a52d015dfd3ee7ebbbee7fdbf9ec29c1ed4e2f736fd2792ec8

Unchanged readiness: all previously reported full decoder variants still FAIL their declared numerical gates. The eight matching greedy tokens do not establish full parity. Public GenAI/media generation, speculative integration, official SM120/121 W4A4, 24 GB deployment and performance claims remain NOT_RUN/HOLD.

Qualified layer-0 probe v4: first observed BF16 activation drift is grouped normalization

The corrected source caller now uses the original full-model _update_mamba_mask and cache-position route. Both unhooked and hooked source forwards reproduce all three frozen source endpoints bitwise. Both native endpoint/control and exposed-stage cuts reproduce all three retained CURRENT COMBINED native endpoints bitwise. This qualifies this single-prefill diagnostic; it is not a full decoder pass or a controlled proof that the mask alone caused v3's source-state difference.

Parent independently verified all artifact seals, actual raw arrays/types/shapes/hashes, original source and native endpoint identities, both native input feeds, source PID/exit/counters, ACK sequences, and one model run per typed profile. The graph variant remains the expanded-FP32 NVFP4 + packed-cuBLAS combined diagnostic, not proof of a native 24 GB deployment.

On identical input values, source/native BF16 results are bitwise exact through input normalization, all 501,120 projection values, raw pre-convolution values, raw timestep, convolution, actual SiLU, and actual WITH-D readout. The first observed BF16 activation difference is:

Observed boundary Raw differences / values Normalized RMSE Cosine Numerical gate
Grouped-normalization BF16 output 4 / 221,184 6.9667752772221276e-6 0.999999999975732 PASS
Output projection 112 / 110,592 6.599646917742011e-5 0.9999999978222609 PASS
Residual output 24 / 110,592 5.319748750037972e-5 0.9999999985850216 PASS
FP32 final SSM cache 1,111 / 1,048,576 6.278312575289947e-8 0.9999999999999981 PASS

All 12 compared stage/state boundaries satisfy the unchanged finite/NRMSE <= 0.03/cosine >= 0.999 gates. Raw K4-to-K3 convolution-cache comparison is exact. FP32 SSM cache differences are separately observed; "first BF16 activation difference" does not claim no earlier FP32 internal roundoff.

Both native profiles contain 607 CUDA events and 26 CPU INT64/BOOL shape/control events, zero CPU floating events, and exactly one model run. One attempt, controller/source exit0, two source forwards followed by two sequential fully reaped native workers/sessions/forwards/profiles. GPU4 released. Sampled peaks: host about 1.62 GB, GPU 2,399 MiB; retained evidence about 56.44 MB; sealing completed in 194.95 seconds.

Root cause is not established. The actual source kernel's sigmoid/gating, reduction and multiply-by-reciprocal ordering versus the native Swish/QuickGelu, reduction and division route are investigation candidates. The four BF16 differences are not yet demonstrated to cause the full-model failures. A separate CPU-only, same-input grouped-normalization diagnostic is being qualified; no arithmetic remedy has been applied.

Evidence: /home/mobius/bolt-cuda-validation/combined-layer0-same-input-stage-probe-v4

  • Report SHA256: 6aab7172a22bf89ed8c26b3fb6c584fc9305205125a40902e1a1deb9c0fca542
  • Manifest SHA256: a8e7c2e567ee374317ced65d08ce9014a2b81cab0cd6311d6f13cf0218c61706
  • Parent offline audit script SHA256: 1852f710e56e4a3561240233c4d26ad62fa3d43b78ab39c158dd1e0bb71f9d3d

Unchanged readiness: full decoder FAIL for all previously measured variants; exact eight-token ordinary sequence PASS only in its stated scope. Public GenAI/media generation, speculation, official SM120/121 W4A4, 24 GB footprint and performance remain NOT_RUN/HOLD. Unexposed original kernel registers, processed timestep and internal recurrence are UNOBSERVED.

@titaiwangms

Copy link
Copy Markdown
Contributor

Follow-up review at 1782df1a4ca4273b90e43b9ce92ee5ed77e721c6

Reviewed the increment from 52205332bd4fe488204de0b902b126ba8c188008 with five static review roles and a bounded offline test/probe pass. My recommendation remains request changes before approval. This is not based solely on CI status.

Resolved findings

  • Cached attention masks: no-media cached calls now accept and preserve the full past-plus-current mask. The batch-1/batch-2, INT64/BOOL regression cases passed.
  • Streaming serialization policy: the native loading report now sets streaming_external_data=True, selecting the existing shared policy. The tiny regression checks three serializer calls with one worker and 1-GiB shards. This confirms policy propagation, not full-export memory or deployment qualification.

Remaining approval gates

1. Major: direct configuration defaults still disagree with source conversion.

src/mobius/_configs/per_model/_nemotron_h_puzzle.py:32-41,85-90

Direct Puzzle/Omni construction inherits mamba_time_step_min=0.001 and mamba_ssm_dtype=None; from_transformers() selects 0.0 and FLOAT by default. Using valid tiny BF16 configurations, we reproduced:

Entry point Runtime timestep minimum SSM graph input/output dtype
Direct constructor defaults 0.001 BFLOAT16
Source-converted control 0.0 FLOAT

The ordinary graphs therefore expose different cache ABIs, and the new source-chunk task rejects the direct controls with TypeError: Chunked prefill candidate requires FP32 cached SSM state.

Please make the Puzzle configuration defaults consistent with the family conversion policy, preserving explicitly supported overrides, and cover direct construction for both Puzzle and Omni. This is not a request to make the experimental source-chunk block accept non-FLOAT state.

2. Full-model numerical qualification is still an open merge gate.

The latest supplied full-model report still records 1,215/1,496 passing comparisons and 281 failures against the unchanged numerical gates. Exact generated-token identity does not clear hidden-state/cache failures. These are author-reported results, not a fresh full-model execution by this review.

The manual-only source-chunk candidate is clearly labelled experimental, which is good. However, the default Puzzle FP32 SiLU and all-mixer/final-normalization changes also affect the ordinary registered model. Please provide reproducible decoder/cache qualification for the exact production artifact/runtime intended for merge, distinguishing it from experimental candidates and unpublished local variants. Alternatively, a separately scoped experimental/component PR can be evaluated on its own acceptance criteria.

Additional findings

  • Minor, new — missing shared batch/time validation: src/mobius/components/_chunked_prefill.py:264-297. With H=G=P=N=1, x=BF16[2,128,1,1], dt=FLOAT[1,256,1], and B/C matching x, construction and CheckerPass both accept the inputs. The chunk reshape uses x's batch size and can reinterpret the mismatched operand's time axis as batch. Please reject conflicting known batch/time dimensions and initial-state batch sizes. The probe establishes missing rejection; it does not claim an executed numerical-output mismatch.
  • Minor, new — JUnit teardown accounting: tests/ci_reporting_test.py:105. Both CI=true/false teardown cases fail under pytest 9.0.3 because the emitted JUnit tests count is 4, not the hard-coded 3. Please validate the assertion against supported pytest behavior rather than changing production logging merely to force the count.
  • Minor, carried — three FP16 CUDA oracle tests: src/mobius/components/_float32_linear_test.py:96. Biased rank-1/2/3 cases still fail exact PyTorch source-versus-oracle equality before ORT comparison: 2/9 elements, maximum absolute difference 2^-20. This is not evidence of an ORT production-output defect.
  • The earlier early-CLI revision-pin concern is unchanged; no new live misroute was established in this pass.

Verification and review limits

One 13-file offline batch: 480 passed, 5 failed, 110 skipped, with 13 integration cases deselected. The five failures are the three carried numerical-oracle cases plus the two new JUnit cases. Of the skips, 108 require external sealed qualification evidence and two require a pinned local source checkout. Passing graph/API tests do not replace those skipped numerical/placement gates.

Environment: Python 3.12.13, ORT 1.30.0, ONNX IR 1.0.0, PyTorch 2.13.0/CUDA 13.0, pytest 9.0.3, A100. Exact-head import origins were verified in an isolated worktree. No dependency installs, model downloads, full-model exports, performance measurements, or downstream GenAI execution were performed.

The component/block/model/task separation and reuse of existing weights, projections, vision/embedding graphs, and streaming machinery are positive changes. The absence of standard lowerings for the three native packed MatMuls is unchanged, but is not being presented here as a newly demonstrated correctness defect.

Review dispositions/open questions: the inherited ordinary default_task was raised as a Major by integration review; I do not retain it as a blocker because the documented candidate entry point explicitly requires its task instance. Explicit non-FLOAT candidate rejection is intentional, not a second independent Major. Text-candidate hybrid metadata completeness, the downstream BOOL-phase runtime contract, independent source-precision authority, and widened-multiply/add domain limits remain unqualified questions rather than confirmed failures.

No full-model, native packed-kernel, GenAI pairing, performance/24-GB deployment, or complete standard-only qualification is implied by this follow-up.

@rui-ren

rui-ren commented Oct 16, 2026

Copy link
Copy Markdown
Contributor Author

CUDA diagnostic update: source-order grouped normalization is not a full-model fix

The new full CUDA run completed all 1,496 comparisons. Independent recomputation from the lossless output/reference arrays confirms 1,034 PASS / 462 FAIL, all finite, under the unchanged normalized-RMSE <= 0.03 and cosine >= 0.999 gates.

Diagnostic PASS FAIL
Previous expanded-FP32 NVFP4 + packed-cuBLAS baseline 1,059 437
Same baseline + grouped-norm Reciprocal/Mul operation order 1,034 462

There were 59 FAIL-to-PASS and 84 PASS-to-FAIL transitions: 25 more failures overall. This candidate must not be promoted as an accuracy improvement or an ORT correctness fix. Small backend rounding differences are not themselves evidence of an incorrect operator implementation.

The candidate changes only 40 grouped Mamba norm Div sites per decoder header to Reciprocal followed by Mul. Weights, reference, runtime, masks, cache semantics and numerical thresholds are unchanged. Actual ordinary/hidden CUDA profiles each retain all 40 Reciprocal sites. The first failing comparison in the existing report order is prefill present.22.conv_state: normalized RMSE 0.0366602660, cosine 0.9993279289. This is a threshold-failure location, not proof of the first divergent arithmetic substage.

Scope Status
Full decoder numerical parity FAIL
Ordinary eight-token greedy identity PASS, scoped to the existing test
Common-output instrumentation invariance PASS, 776/776 sealed typed-byte comparisons
Source fidelity Existing scoped evidence unchanged; no weights changed
Vision/media parity Not rerun in this decoder-only diagnostic
Official SM120/121 W4A4 / 24 GB deployment NOT_RUN
Speculative integration / performance NOT_RUN / HOLD

Expected and actual token IDs both remain [1049, 1044, 1032, 1050, 1044, 1032, 1051, 1044]. Token identity does not override 462 hidden/cache numerical failures.

The first attempt stopped at the retention/project-allocation guard; its failure and all 57 sealed files remain preserved. This fresh attempt changed only evidence handling: after worker1 exited and was reaped, 99 input and 97 output arrays in its redundant RPC scratch were verified against durable canonical archives or inline actual small inputs before retiring those two scratch files. The original 2 GiB run / 200 GiB project limits were not raised. Both workers exited 0 and were reaped; GPU4 was released; no guard/cleanup error occurred. No production code or PR head changed.

Evidence identity:

  • HF revision: c6cc2e8ffa353403213d6b9b18aaf8eb684d705a.
  • Mobius PR head: 1782df1a4ca4273b90e43b9ce92ee5ed77e721c6.
  • Native runtime candidate source: 60e4052a60a0a8ec41e81fcf5648413864b0b0be.
  • Loaded Python core SHA256: f1ad43edce7b119d813d659fc39aa3e2beb88542617aad5017854bc051b9ad74.
  • Candidate ordinary header SHA256: 960f36cdcf2f3dfd5e989ee2df62f3cbd6215315ee4ce396804f6a52ecb54ed4.
  • Candidate hidden header SHA256: ed28172bc31e16ec04f7cf47f10481e778d76d9aa9df0e4b9905f25b6e8162ce.
  • Result manifest SHA256: 5295a4bd55be3c79d2eacee5db203d9207befee65b3a772df231af42805bd342 (79 sealed files, independently verified).
  • Local evidence: /home/mobius/bolt-cuda-validation/combined-groupnorm-reciprocal-full-validation-v2.

The reference remains an H100 BF16 reconstruction, not official SM120/121 W4A4 execution or proof of a 24 GB footprint. Shipping remains blocked by decoder parity. Next investigation is localization using retained evidence, not another blind precision variant.

@rui-ren

rui-ren commented Oct 16, 2026

Copy link
Copy Markdown
Contributor Author

CUDA diagnosis update: layer-22 tail failure is reproduced by incoming trajectory drift

Shipping remains blocked. The latest full decoder diagnostic is still 1,034 PASS / 462 FAIL under the unchanged finite-output, normalized RMSE <=0.03 and cosine >=0.999 gates. Its eight greedy tokens match, but that does not establish decoder readiness. No production arithmetic change or new commit is justified by these probes; draft head remains 1782df1a4ca4273b90e43b9ce92ee5ed77e721c6.

The following bounded H100 diagnostics were independently audited from retained typed arrays, source-weight hashes, runtime provenance and controls:

Diagnostic Qualified result Limit
Whole MoE layer 14, three identical-input source/native comparisons All stage gates pass; frozen source endpoint and both native retained endpoints reproduce bit-for-bit; expert membership agrees for all 81 rows Not full-model parity; mixture differences are 0/2/2 values across the three inputs
Layer-22 projection/convolution prefix, three identical-input comparisons All 24 stage gates pass; all three convolution-state tails are byte-exact between source and native Native prefix contains no recurrence; source full-block hidden output, K4 cache and SSM byte controls anchor the reference
Source-only norm/router survey, all 10 MoE layers through layer 22, three retained trajectories All 12 ordered layer-14 controls pass; earliest expert-membership differences occur at layer 5, not layers 1 or 3 This evaluates original source routing on different incoming activations; native actual routes outside the previously observed layer 14 remain unobserved

Why layer 22 is not evidence of a local convolution bug: actual graph ancestry shows present.22.conv_state is the trailing raw projected BC buffer, before Conv. Running the original source block on the baseline/candidate native incoming activations produces exactly the same failing frozen-tail NRMSE values, 0.033303476072324686 / 0.03666026600684389, while same-input source/native tails are byte-exact. The upstream origin is not yet established.

At layer 5, original-source expert sets differ between the frozen-source and baseline trajectories on token rows 9,17,21, and between frozen-source and reciprocal-candidate trajectories on rows 9,17. Source cutoff margins are approximately 3.53e-5,1.81e-5,3.72e-5. These are routing-sensitivity observations, not a confirmed ORT routing-kernel defect. A comparison of actual native layer-5 routing with full-layer endpoint controls is in preparation; it has not run.

All model floating-point computation in the layer-22 native probe was CUDA-placed. Its profile also contains 18 CPU int64/bool metadata events and 3 CUDA MemcpyFromHost events; it must not be described as an entirely CUDA-only graph. No CPU floating-point model fallback was found. Owned workers exited successfully and were reaped; GPU 4 was released.

Reference scope remains the pinned H100 BF16 reconstruction against the explicitly labeled expanded-FP32 NVFP4 diagnostic native graph. This does not establish official SM120/121 W4A4 execution, a 24 GB deployment footprint, performance, or speculative readiness.

Preserved local evidence under /home/mobius/bolt-cuda-validation/:

  • combined-layer14-source-component-gpu-v1, manifest SHA256 e93ed7bd6d06df414a0098aac9691d618597e7a5d57eaf658a6ab3ce7e5b1bea
  • combined-layer22-conv-source-gpu-v1, manifest SHA256 2ab9d7d6f76fdd5f1aebb79b61f0061182c952919c02940f47d1b004bc2e1145
  • combined-upstream-routing-source-gpu-v1, manifest SHA256 37df7d7699e1338808ed9526a971485d25c9c8e38db5a62f12ec2d1dce7e555e

Exact launch scripts, separately hashed authorizations, typed raw arrays, commands and process/profile records are preserved in the corresponding preparation/result directories and session artifacts. These are local artifacts, not publicly downloadable attachments. No thresholds were relaxed, no failing evidence deleted, and no performance claim is being made.

@rui-ren

rui-ren commented Oct 16, 2026

Copy link
Copy Markdown
Contributor Author

CUDA layer-5 MoE diagnostic: scoped PASS, shipping block unchanged

The corrected observer completed three identical-input source/native comparisons (frozen source, retained baseline, retained candidate). Independent verification covered all 51 sealed files, 45 raw typed source/native arrays, 487 loaded/post-run source tensor hashes, the frozen source endpoint, all 12 ordered source-router controls, and both native retained endpoint controls.

Boundary SOURCE input Baseline input Candidate input
Normalization differing values 0 0 0
Router logits differing values 0 0 0
Mixture differing BF16 values 0 2 3
Residual differing BF16 values 0 2 2
Different selected expert sets / 27 rows 0 0 0

All 18 same-input numerical boundary gates pass the unchanged finite-output / FP64 NRMSE <= 0.03 / cosine >= 0.999 criteria. Expert weights are compared after alignment by expert ID; TopK order is not interpreted as membership. The largest mixture NRMSE is approximately 3.6531e-5.

The native expert-set changes between different incoming trajectories reproduce the original-source survey: source-to-baseline rows 9/17/21, source-to-candidate 9/17, baseline-to-candidate 21. No same-input MoE5 routing-set mismatch was observed. This supports upstream activation sensitivity at this boundary, not a routing-kernel defect or a global causal explanation.

The native profile contains exactly three model runs, 7,983 CUDA-provider events, and zero CPU-provider events. Both source/native children exited 0 and were fully reaped; the H100 was released.

Preserved negative evidence: the earlier run stopped because six observer contracts incorrectly borrowed flattened HF router shapes for ONNX taps that retain the batch axis. The repair changes those diagnostic contracts and adds explicit raw-layout checks plus failure-path exit receipts; it changes no graph, model arithmetic, backend, weights, source controls, or numerical thresholds. That earlier run remains FAIL/NATIVE_INCOMPLETE. Separately, runtime provenance now explicitly includes 37 current shared-library hashes, with 12 newly covered files verified against installed-package RECORD hashes; their historical hashes remain unobserved, not retrospectively qualified.

Evidence manifest: 2b6c0d1996a9f29f2731fdfe19dbd3369e4e85143cc277db9c11a70aa1db08b1.

Full decoder remains FAIL (1,034 PASS / 462 FAIL of 1,496 for the latest complete diagnostic). This component result does not establish model readiness, official SM120/121 W4A4 compatibility, a 24 GB footprint, performance, or speculative integration. No production arithmetic fix is claimed.

@rui-ren

rui-ren commented Oct 16, 2026 •

Copy link
Copy Markdown
Contributor Author

CUDA diagnostic update: source-conditioned layers 1-5

Scoped controls PASS; full decoder remains FAIL (1,034 PASS / 462 FAIL). This is a counterfactual boundary experiment, not an ordinary-decoder rerun or a production fix.

Two unchanged native prefixes (baseline and the previously retained Reciprocal/Mul candidate) each ran three cases, changing only the hidden activation supplied after layer 0. The seven auxiliary feeds, including original prefill caches, embedding, mask and phase, were unchanged. Each worker first reproduced all five retained hidden outputs and six layer-5 router taps byte-for-byte before running counterfactual cases: 22/22 controls PASS. No source-model forwards or CPU floating-point model execution ran in this experiment; reference values came from pinned, previously qualified source evidence.

Native prefix Layer-5 expert-set mismatch rows: own input -> frozen-source input Hidden-06 NRMSE: own input -> frozen-source input
Baseline [9,17,21] -> [] 0.006689984888 -> 0.002190649801
Reciprocal/Mul candidate [9,17] -> [] 0.006314742985 -> 0.002209058819

With frozen-source hidden-01 supplied, hidden-02 and hidden-03 became byte-exact in both prefixes; hidden-04 through hidden-06 still differed. Thus this boundary intervention removes the observed first layer-5 membership differences, but does not establish an exclusive/global cause, validate a production remedy, or qualify full-model parity. The earliest remaining observed BF16 normalized-activation mismatch is one element at layer-3 norm on identical hidden-03 inputs. Earlier FP32 sigmoid differences at router 1 remain; layer-3 norm is not the first remaining numerical difference of every dtype.

The parent independently verified all 47 sealed files, 271 pins, 54 protected package entries, 138 raw output arrays and 126 FP64 comparisons. Fixed gates remain finite outputs, NRMSE <=0.03 and cosine >=0.999. Profiles contain 55,116 CUDA events, plus 282 CPU integer/bool metadata events and zero CPU floating-point events. Both workers exited 0 and were fully reaped; the H100 returned to 4 MiB. Sampled peaks were 1,426,530,304 bytes aggregate RSS and 3,637 MiB GPU use; these are sampled observations, not formal peak guarantees or a full-model footprint.

Evidence: combined-early-prefix-source-conditioning-gpu-v1; manifest SHA256 fad228275807385dfecee48aab6e4600b3943aab637aa16b54e90379dd969d84; 110,880,178 retained bytes; 274.64 seconds inclusive. This timing is diagnostic execution/sealing time, not an inference performance benchmark.

Provenance remains HF revision c6cc2e8ffa353403213d6b9b18aaf8eb684d705a, Mobius PR head 1782df1a4ca4273b90e43b9ce92ee5ed77e721c6, candidate ORT source 60e4052a60a0a8ec41e81fcf5648413864b0b0be, pybind SHA256 f1ad43edce7b119d813d659fc39aa3e2beb88542617aad5017854bc051b9ad74, CUDA library SHA256 dc978a1d2f75a0617b074224dd0ed1e8c164a27c11cd051bf91dd53eccba258a.

Shipping remains HOLD. This experiment does not change the previously recorded decoder FAIL, establish official SM120/121 W4A4 execution or a 24 GB deployment footprint, qualify public GenAI/media generation or speculation, demonstrate a performance improvement, or identify an ORT operator defect.

Follow-up: isolated layer-3 normalization, CUDA only

Both original endpoints reproduced their frozen controls, and both separately observed endpoints reproduced their respective original controls: 4/4 byte controls PASS. Checkpoint, original native external and standalone inline gamma values were byte-exact; original source math, operator attributes, FP32 intermediate precision and runtime policies were preserved.

At coordinate [0,8,196], the observed FP32 values differ by one FP32 ULP:

Observation FP32 value FP32 bits BF16 result bits
Original HF forward's pre-cast operand -0.7441406846046448 0xBF3E8001 0xBF3F
Native FP32 graph-output observer variant -0.744140625 0xBF3E8000 0xBF3E

-0.744140625 is exactly the halfway point between these BF16 neighbors. Independent integer round-to-nearest-even analysis matches all 110,592 output elements in each observed run: the native midpoint rounds to the even neighbor; the source value is one FP32 ULP more negative and rounds to the other neighbor. Neither observed final cast is incorrect for its respective input. The earlier computational origin of that FP32 ULP is not isolated. Native graph-output observations are not a claim about original untapped kernel registers.

Observed FP32 NRMSE is 4.5995350922882724e-8, cosine 0.9999999999999987; the BF16 endpoint has one difference, NRMSE 0.0001408069641106986, cosine 0.9999999900937948. These local comparisons pass the unchanged numerical gates; they do not change the full-decoder FAIL.

The parent verified 42 sealed files, all 336 pins and the unchanged 54-entry canonical package. Both source calls used the original NemotronHRMSNorm; each source process's 35 mapped ELF hashes matched the 37 prospective pins. The two native profiles contain one model run each, six CUDA provider events total and zero CPU provider events. All four processes exited 0 and were fully reaped; GPU use returned to 4 MiB.

Evidence: combined-layer3-plain-norm-precision-gpu-v1; manifest SHA256 03708dbc33b0269d0e63218ab2c3ffa2da4fc84584fe8a502368d3fb2678abfb; 3,748,682 retained bytes; 100.31 seconds inclusive, not a performance benchmark. No arithmetic remedy, confirmed operator defect, full-model pass or shipping claim follows from this result.

@rui-ren

rui-ren commented Oct 19, 2026 •

Copy link
Copy Markdown
Contributor Author

Follow-up fixes pushed in a6b850c (parent 1782df1). Keeping this PR draft; this is not a full-model qualification claim.

Addressed:

  • Direct Puzzle configuration now defaults to runtime mamba_time_step_min=0.0 and FP32 SSM state; Omni inherits the same policy. The base Nemotron-H configuration and explicit supported overrides remain unchanged. Added direct-construction coverage for both families, ordinary input/output SSM cache dtypes, explicit overrides, and both manual source-chunk task entry points. Non-FLOAT source-chunk state remains intentionally unsupported.
  • ChunkedPrefillScan now rejects conflicting known batch/time dimensions across x/dt/B/C and conflicting initial-state batch size before reshaping. Tests include x BF16[2,128,1,1] versus dt FLOAT[1,256,1], separate time mismatches, B/C mismatches, state batch mismatch, and valid symbolic dimensions.
  • JUnit tests now validate three testcase elements and the expected failure/error payload, allowing the two pytest teardown accounting conventions (3 testcase count versus 4 phase-report count). Production CI logging is unchanged. Both pytest 7.4.3 and 9.1.1 reporting suites pass; I did not rerun pytest 9.0.3 itself.

Validation: exact worktree imports verified. Focused combined suite: 157 passed, 2 skipped, 49 deselected on Python 3.12 / Torch 2.14.1+cu130 / H100, with CUDA-only numerical cases selected; no CPU inference campaign. Cases named sealed and CPU-provider numerical cases were excluded by the selection. Two additional chunk-prefill CUDA replay tests skipped because MOBIUS_CHUNK_PREFILL_FIXTURES was unset (confirmed with pytest -rs); these are not numerical passes. Reporting suite separately: 16 passed on pytest 7.4.3. Ruff lint/format and git diff --check pass. Missing xdist/execnet test plugins were installed into a session-only target directory, not the pinned model runtime.

Reproduction from this checkout (P=/home/mobius/validation_lightning_h100_normfix_20261011/runtime/bin/python; D is a directory containing the test-only xdist and execnet packages):

PYTHONPATH=src:$D PYTHONDONTWRITEBYTECODE=1 CUDA_VISIBLE_DEVICES=4 HF_HUB_OFFLINE=1 OMP_NUM_THREADS=2 OPENBLAS_NUM_THREADS=2 "$P" -m pytest src/mobius/_configs/per_model/_nemotron_h_puzzle_test.py src/mobius/_configs/per_model/_nemotron_h_omni_test.py src/mobius/components/_chunked_prefill_test.py src/mobius/models/nemotron_h_source_chunk_test.py src/mobius/components/_float32_linear_test.py tests/ci_reporting_test.py -q -k "not sealed and not padded_lane_tree_and_fma_on_cpu and not CPUExecutionProvider" --tb=short -p no:cacheprovider

Still OPEN:

  1. Exact-production-artifact full decoder/cache numerical qualification. No full export or full-model CUDA run was performed for this commit. Prior failed full-model evidence remains failed; token identity and passing component tests do not clear it. No thresholds changed. Current retained-evidence allocation is 214502772736 bytes against the existing 214748364800-byte cap, leaving only 245592064 bytes; a fresh full package cannot be added within that budget without a separately justified retention/export plan. Existing evidence/checkpoints were preserved.
  2. The three FP16 CUDA native-PyTorch-versus-oracle failures reported on A100/Torch 2.13.0 were NOT reproduced on the available H100/Torch 2.14.1 runtime (the selected biased rank1/2/3 FP16 cases pass here). No oracle tolerance, precision flags, assertion or production arithmetic was changed to hide that version/hardware-dependent result. That finding remains open pending matching-environment diagnosis.

No full-model, native packed-kernel, GenAI pairing, performance, 24GB-fit, or standard-only qualification is implied. The already-resolved masks/streaming findings remain unchanged.

@rui-ren

rui-ren commented Oct 19, 2026

Copy link
Copy Markdown
Contributor Author

Additional oracle investigation and fix: 5ff29b2 (parent a6b850c).

I reproduced the exact reported failure signature on the available H100/Torch2.14.1 runtime by explicitly setting torch.backends.cuda.matmul.allow_fp16_accumulation=True: biased CUDA FP16 rank1/2/3 each fail the native-source-versus-independent-oracle assertion with 2/9 elements different and maximum absolute error 2^-20. The two tiny cancelling residuals become zero. This is a demonstrated mechanism for that signature; it does NOT prove what backend setting the original A100/Torch2.13 reviewer used.

The component is explicitly Float32Linear, with FP32 accumulation through the bias epilogue. Its native low-precision source cross-check previously left the accumulator contract implicit. The test now temporarily disables FP16 accumulation only for that CUDA FP16 source cross-check, using a scoped monkeypatch context that restores the incoming flag. On Torch versions without the flag, no override is applied. The mathematical independent oracle, exact source/oracle assertion, exact ORT-output assertions, fixture values and production arithmetic remain unchanged; no numerical tolerance was loosened.

Before this change: 3/3 selected regressions FAIL under ambient FP16 accumulation=True at the source assertion. After this change: all18 CUDA dense epilogue cases PASS under the same ambient=True setting, and an explicit post-suite check confirms the ambient flag is still True. The process restores its original flag in finally. Tiny backend probes also checked cuBLAS/cuBLASLt and reduced-precision-reduction toggles on the two already-installed Torch versions (2.6/CUDA12.6 and2.14.1/CUDA13); only explicitly enabled FP16 accumulation reproduced the signature in these probes. No model downloads or full exports were performed.

Reproducer/verification from the exact checkout with its dependencies:

import pytest, torch
prior = torch.backends.cuda.matmul.allow_fp16_accumulation
try:
    torch.backends.cuda.matmul.allow_fp16_accumulation = True
    code = pytest.main([
        "src/mobius/components/_float32_linear_test.py", "-q",
        "-k", "dense_epilogue and CUDAExecutionProvider",
        "--tb=short", "-p", "no:cacheprovider",
    ])
    assert code == 0
    assert torch.backends.cuda.matmul.allow_fp16_accumulation is True
finally:
    torch.backends.cuda.matmul.allow_fp16_accumulation = prior

Lint/format/diff checks pass. Matching the original A100/Torch2.13 environment remains unexecuted, so I am not claiming a fresh pass there. Full-model decoder/cache qualification remains the open major merge gate; this reference-test precision correction does not clear it. PR stays draft.

@rui-ren
rui-ren marked this pull request as ready for review October 20, 2026 00:40
Copilot AI and others added 19 commits November 4, 2026 00:25
Add a reusable Float32AccumulationMamba2Block and wire only Nemotron H Puzzle to its source precision boundaries: include bias in FP32 convolution before one native store, and add FP32 readout and D*x before one native store. Keep default Mamba2/Lightning behavior, model-dtype caches, activations, recurrence and packed projection contracts unchanged.

Share causal cache preparation and cover zero-width/ND caches, tiny dtype-sensitive graphs, architecture-specific wiring and eight actual-checkpoint CUDA regressions. Full L1 plus related regressions: 1820 passed, 52 existing skips. Actual-checkpoint boundaries match source exactly; 24 separately labeled runtime-v4 local arrays pass unchanged gates. Full corrected decoder parity is not claimed.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: rui-ren <15321482+rui-ren@users.noreply.github.com>
Annotate causal convolution outputs only when the input dtype is known. This avoids assigning an optional type to strict Value.dtype setters while preserving graph-wide inference for unresolved values. The six remaining Mamba/model typing diagnostics reproduce on exact parent2c9857a3.

Validation: integrated L1 and precision selection1795passed60skips; all75 Mamba regressions including eight actual-checkpoint boundary cases passed without skips.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: rui-ren <15321482+rui-ren@users.noreply.github.com>
Record fresh source fidelity, vision and ordinary generation evidence without relabeling failed decoder-state and hidden gates. Distinguish the source-matched activation rebuild from the preserved stale runtime, report actual memory/context bounds, and link the passing L1 fix.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: rui-ren <15321482+rui-ren@users.noreply.github.com>
Apply gamma to FP32 normalized activations before one native store. Keep the required native biased-Conv store before complete FP32 Swish and a separate native activation store. Wire reusable variants only into Puzzle outer/final norms and Mamba; standard RMSNorm, ordinary Nemotron-H, Lightning, packed projections and the parent Mamba activation contract remain unchanged.

Add deferred-dtype, F32/F16/BF16 prefill/cache, parameter-name and 88-layer wiring regressions, plus opt-in strict source-fixture CUDA controls. All 64 focused CPU tests, 47 verified-runtime CUDA tests and two tiny graph builds pass. Ten production fixtures are bitwise source-exact; full-decoder parity is not inferred or rerun.

Signed-off-by: rui-ren <15321482+rui-ren@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
ModuleList exposes generic Module elements to static analysis. Validate the existing pre-norm as RMSNorm before accessing its epsilon, retaining the exact per-layer value, parameter path and graph operations. Add a varied-epsilon regression across all88 layer replacements. The new Module.norm diagnostic is removed; the six pre-existing MyPy diagnostics remain unchanged.

Signed-off-by: rui-ren <15321482+rui-ren@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Describe the distinct outer RMSNorm, Conv output and SiLU rounding boundaries. Record source-exact fixture and full-size graph-equivalence evidence without treating the decoder-session timeout as numerical parity or relabeling the preserved v7 failures.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: rui-ren <15321482+rui-ren@users.noreply.github.com>
Record actual H100 image/video parity and exact-head smoke checks without promoting unexecuted decoder gates. Document the controlled no-reuse session result separately from numerical qualification and link the dedicated Olive preservation recipe.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: rui-ren <15321482+rui-ren@users.noreply.github.com>
Publish complete no-reuse qualification results without relabeling the preserved default-policy timeout. Distinguish passing SSM states and exact tokens from failed KV, convolution and hidden gates, and record the source-hidden projection control without claiming an upstream cause.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: rui-ren <15321482+rui-ren@users.noreply.github.com>
Mark native mixed-precision plans as streamed so default saves use bounded shards and serial materialization. Preserve past-plus-current attention masks during cached no-media decoding while retaining strict prefill validation. Normalize encoded infinity inside attribute-based configurations and type the heterogeneous layer topology explicitly. Add focused regressions for all three review findings.

Signed-off-by: rui-ren <15321482+rui-ren@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: rui-ren <15321482+rui-ren@users.noreply.github.com>
Implement parameter-free 128-lane prefill with BF16 dot operands, FP32 mixed-precision GEMM outputs and FP32 chunk carry. Preserve the padded source scan association and keep D, masks, cache phase selection and all model/default wiring outside the primitive.

Add CPU graph/API/shape/type regressions and opt-in sealed CUDA intermediate and production-prefix fixture replay with placement audits. Document numerical limits and the explicit cache-lifecycle adapter proposed for a separately reviewed next phase.

Signed-off-by: rui-ren <15321482+rui-ren@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Expose a reusable explicit-phase Mamba2 block and unregistered text/Omni model-task pairs. Preserve default graphs, learned parameter paths, native cache ABI and cached FP32 recurrence while keeping source-chunk prefill opt-in. Derive optional GenAI phase metadata from the actual BOOL scalar graph input and provide a poisoned success-only validation caller.

Cover checkpoint mask transitions, source production boundaries, opposite offset/phase controls and default isolation. Retain numerical diagnostic failures explicitly: this is not bitwise state, attention or full-model qualification.

Signed-off-by: rui-ren <15321482+rui-ren@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Read production diagnostic inputs through an explicitly configured, SHA-pinned immutable fixture root instead of the execution output directory. Verify every consumed JSON/NPZ, reject overlapping roots before worker writes, record source provenance, and allow explicit test GPU allocation. Document reproducible fresh-output commands and cover root guards without changing model math or qualification gates.

Signed-off-by: rui-ren <15321482+rui-ren@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Validate the immutable fixture root unconditionally before importing or starting the worker and before output creation. Cover the missing-environment bypass using a forbidden fake worker and an untouched output sentinel. Preserve source/model math, source fixtures, numerical gates and all other runtime behavior.

Signed-off-by: rui-ren <15321482+rui-ren@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Record the frozen runtime composition and unchanged 281/1496 full-decoder failures. Separate public token-only fixtures, routing replays and dequantized single-projection matches from full-package readiness, including the negative expanded-FP32 experiment.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: rui-ren <15321482+rui-ren@users.noreply.github.com>
L4/L5 jobs can hit their job timeout before pytest prints its final failure summary, losing the traceback for tests that already failed. Use the shared pytest configuration to emit and flush each failed setup/call/teardown report through the terminal reporter on GitHub Actions. Only the xdist controller prints worker reports; normal local output stays unchanged.

Preserve selection, capture, final summaries, JUnit and exit status. CPU-only subprocess regressions verify traces survive a later hard exit and validate passing runs and normal completion. This improves diagnostic reliability only; it does not resolve or reclassify existing L4/L5 model failures.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Rui Ren <15321482+rui-ren@users.noreply.github.com>
Exercise the existing reporting subprocess helper with the already-declared pytest-xdist plugin and two workers. Cover GitHub Actions and non-CI runs, requiring exactly one controller-side immediate failure header only in CI while preserving final status, JUnit counts and captured output. Keep the original fourteen reporting regressions unchanged.

Signed-off-by: Rui Ren <15321482+rui-ren@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Rui Ren <15321482+rui-ren@users.noreply.github.com>
Match direct Puzzle and inherited Omni runtime timestep and FP32 SSM cache defaults to source conversion while preserving explicit overrides. Cover ordinary and experimental task cache interfaces. Reject conflicting known batch/time and state batch dimensions before chunk reshapes. Validate JUnit testcase/error payloads across pytest teardown accounting conventions without changing production logging. Full-model CUDA parity and the reviewer-specific FP16 oracle discrepancy remain open qualification gates.

Signed-off-by: Rui Ren <15321482+rui-ren@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Explicitly enabled native FP16 accumulation reproduces the reported three exact source-versus-oracle failures (two of nine elements, maximum error 2^-20) before ORT output comparison. Scope the native source cross-check to the component's declared FP32-accumulation contract and restore the caller's backend flag afterward. Keep exact assertions, independent oracle, and production arithmetic unchanged. All 18 CUDA dense cases pass with ambient FP16 accumulation enabled and the flag is restored. This does not establish the reviewer's original backend settings or full-model parity.

Signed-off-by: Rui Ren <15321482+rui-ren@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Record the linear refresh onto current main, focused CPU graph/config/weight/metadata and precision validation, and the November 9 handoff deadline. Preserve the existing numerical failures and native runtime limits; no architecture, rounding or checkpoint contracts are changed.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: rui-ren <15321482+rui-ren@users.noreply.github.com>
@rui-ren
rui-ren force-pushed the rui-ren/bolt-cuda-onboarding branch from 77404b2 to 4649d18 Compare November 4, 2026 00:30
Replace routed all-expert expansion with packed IQ2 MoE banks and lower eligible native projections to packed CUDA kernels. Preserve FP16 GGML scale bits, translate signed Q8 payloads losslessly, and tile longer inputs without unsupported BF16 Pad or invalid padded routes. Keep the default exporter, routing, Mamba, attention masks, caches and media components unchanged.

The pinned production configuration shrinks from 156423 to 11263 total nodes, including nested bodies. This is a separate reduction-schedule variant, not a full-model numerical or performance acceptance. Add transactional graph/storage regressions, explicit CUDA integration coverage, builder preflight checks and backend documentation.

Validation: 140 tests pass with four explicit custom-runtime integration skips; cached built-in CUDA runtime passes projection/MoE tiles, symbolic control flow and the 128-pair boundary. Pinned lint and new-module MyPy pass; builder diagnostics match the original baseline.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: rui-ren <ruiren1225@gmail.com>
@rui-ren

rui-ren commented Nov 5, 2026

Copy link
Copy Markdown
Contributor Author

Implemented the opt-in compact CUDA exporter in a2ba3c3, fast-forwarded from the previous PR head.

MOBIUS_BOLT_PACKED_CUDA=1 mobius build \
  --model nvidia/NVIDIA-Nemotron-3.5-Bolt-74B-A9B-24GB \
  --revision c6cc2e8ffa353403213d6b9b18aaf8eb684d705a \
  --task nemotron-h-omni --dtype bf16 --ep cuda \
  --external-data onnx --output /fresh/path/bolt-packed

The default path is unchanged. The new path lowers 40 routed expert banks to MoEPackedIQ2XXS and 273 remaining projections to MatMulPacked*. It preserves GGML FP16 scale bits, translates signed Q8 bytes losslessly, and handles longer inputs with bounded row tiles. It introduces no auxiliary runtime weight .bin file; the packed tensors are normal ONNX initializers/external data. Requires the custom packed operators from ORT #33897/#33899, plus any original native operators retained by the chosen configuration.

The original router, Mamba recurrence/normalization, attention masks, cache interfaces, and media components are preserved. This deliberately does not substitute the benchmark's verification-snapshot Mamba interface for ordinary prefill/cached decoding. Packed projection reduction schedules and selected-route expert accumulation differ from the original backend, so this is a separately qualified graph variant.

Validation Result
Pinned 88-layer production-config structure PASS: 156,423 → 11,263 total nodes, counting nested bodies (~92.8% reduction); top-level 156,423 → 7,128. No checkpoint reads/materialization in this structural check.
Focused regression suites PASS: 140 tests; four explicitly opt-in Python/custom-runtime CUDA tests skipped in the normal suite. Covers exact payload/scale packing, every expert's bank ordering, external-data reload, unchanged source/media/interfaces, shared projection storage, idempotence, and pre-I/O rejection.
Actual cached CUDA runtime PASS: IQ2/Q8/NVFP4 and MoE row counts 1/8/9/17; additional final-source and symbolic-row probes, top-k 32 with 128-pair four-row tiles and tails, and a genuinely non-folded runtime If/Scan. Exact synthetic outputs and CUDA packed-op placement checked.
Pinned Ruff/formatter PASS: Ruff 0.16.2 through repository lintrunner adapters.
MyPy PASS for both new implementation modules. Builder has the same 10 pre-existing diagnostics as the unmodified PR baseline; not a claim that the entire repository is type-clean.
Full-checkpoint compact export/file size/source fidelity NOT_RUN. Tiny storage fidelity is not full-checkpoint acceptance.
Full decoder/state parity, generation, media/speculative integration, throughput/VRAM qualification NOT_RUN for this variant. Historical failures and unchanged readiness gates are not waived.

CUDA evidence uses the cached integrated runtime, not a clean rebuild of the latest ORT review heads: core SHA256 3aafbe369c5cc630ae8d4a7b82ce28e3d1e278da7f352e9d1761edd470e0305e, CUDA provider SHA256 c32f96fa92992d5f31e52b53c9dedcd0d3c9990f9e636c5ec53d2d1f5fac169e. Host integer shape/control work is allowed; this is not strict CPU-fallback-disabled or CUDA-graph-capture qualification.

Permanent custom-runtime regression entry:

MOBIUS_TEST_PACKED_CUDA=1 python -m pytest \
  src/mobius/components/_packed_cuda_test.py -k executes_cuda_projection -q

Local receipts, source/runtime hashes, placements, and regression XML are retained under /home/mobius/bolt-pluginfree-release-20261104/publication/compact-*. No full-model readiness or performance claim is made.

rui-ren and others added 2 commits November 5, 2026 09:37
Emit FP32 MoEGroupRouter outputs directly into MoEPacked, retaining the original FP32 router projection and external model scaling. Preserve complete IQ2/Q8 blocks in the native packed ABI, leave NVFP4 on its existing operator, and reject incompatible old packed graphs and altered routing expressions. Version the opt-in graph metadata and document normalization and rounding differences.

31 focused exporter/native-layout graph tests passed; Ruff lint and formatting passed. The existing CUDA Q8 precision test was blocked by the test environment lacking MatMulGGMLQ8_0 and is recorded separately, not counted as numerical success. Full exported-model runtime parity and generation remain unqualified.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: rui-ren <ruiren1225@gmail.com>
@rui-ren

rui-ren commented Nov 11, 2026

Copy link
Copy Markdown
Contributor Author

Published Task 5 exporter integration in 9fe55f0. The opt-in version-2 packed CUDA graph now uses full FP32 MoEGroupRouter selection/mixing outputs with the original FP32 router projection, consumes them directly in MoEPacked, and keeps model scaling external. Complete IQ2/Q8 blocks are preserved byte-for-byte; NVFP4 remains on its original operator/layout. Old packed graphs and unsupported routing expressions fail closed.

Validation: 31 focused exporter/native-layout graph tests passed; Ruff lint/format passed. Runtime APIs were published to microsoft/onnxruntime#33963 and synchronized through the existing dependent PRs. The available Python ORT lacks MatMulGGMLQ8_0, so its legacy CUDA execution test remains explicitly blocked, not counted as a numerical pass.

This is a separately qualified graph variant: normalization epsilon/reciprocal and output-rounding boundaries are documented. Full exported-model numerical parity, cached decoding, generation and speculative integration remain NOT_RUN pending Task 6 with the matching runtime. No full-model readiness or performance claim is made.

rui-ren and others added 4 commits November 11, 2026 15:54
Reload the authoritative nested Omni config when a newer native AutoConfig reuses the model type for a different architecture. Avoid generic PretrainedConfig layer proxies for the legacy Puzzle layout, preserving its original decoder and quantization metadata.

Add a regression covering the successful-but-incompatible AutoConfig path discovered during full-checkpoint validation.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: rui-ren <ruiren1225@gmail.com>
Supply source-normalized and scaled FP32 full mixing values to MoEPacked instead of scaling its already-rounded BF16 output. Keep shared operator APIs and internal native selection unchanged; non-unit normalized scaling uses an explicit FP32 top-k row denominator, while unit-scale routing remains fully internal. Add executable tests for coefficient precision, biased selection, ties, normalization and zero rows. The isolated production expert probe becomes exact for the cached step; this does not assert full-model acceptance.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: rui-ren <ruiren1225@gmail.com>
Emit full FP32 selection scores and mixing values at MoEGroupRouter outputs 1 and 2, omitting only the legacy dense output. Preserve six-input MoEPacked routing and pre-store coefficient scaling.

Bump packed graph metadata to ABI 3 so previously lowered five-output graphs fail closed and require re-export. Cover serialized wiring, coefficient preparation, idempotency and old-ABI rejection.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: rui-ren <ruiren1225@gmail.com>
Select denominator routes with repeated ArgMax and lower-index tie breaking instead of CUDA TopK. Accumulate unbiased mixing weights in selected-rank FP32 order instead of a tree ReduceSum, preserving the validated V3 native routing arithmetic before scaling and the BF16 output store.

Add exact CPU/CUDA coefficient regressions for cutoff ties, non-associative sums, zero weights, top-k boundaries, and unnormalized scaling. The new sum-order cases fail against the previous emitter. Weights, recurrence, cache interfaces, and the ORT runtime are unchanged.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: rui-ren <ruiren1225@gmail.com>
@rui-ren

rui-ren commented Nov 12, 2026

Copy link
Copy Markdown
Contributor Author

Published the V3 native routing-normalization source correction in 1cf2447.

Changed only:

  • src/mobius/models/_nemotron_h_omni_packed.py
  • src/mobius/models/_nemotron_h_omni_packed_test.py

For externally normalized, scaled routing, repeated ArgMax(select_last_index=0) now gives the same lower-expert-index cutoff tie handling as the native consumer. Selected unbiased mixing values are summed with sequential FP32 Add in rank order, then divided by (sum + 1e-20) and scaled before the BF16 output store. This replaces TopK plus tree ReduceSum. MoEPacked still selects its own routes and receives normalize_routing_weights=0; weights, recurrence, cache interfaces, and runtime code are unchanged. The mask is shape-derived to preserve symbolic token counts.

Validation on the isolated CUDA environment (ORT 1.28.0.dev20260722004, Python 3.12):

PYTHONPATH=src CUDA_VISIBLE_DEVICES=7 /home/mobius/validation_lightning_h100_normfix_20261011/runtime/bin/python -m pytest src/mobius/models/_nemotron_h_omni_packed_test.py -q --tb=short

25 passed, zero skipped, including all 12 CPU/CUDA-parameterized coefficient cases. Coverage includes cutoff ties, FP32 non-associativity, zero weights, top-k 1/2/8, and unnormalized scaling. The new normalized top-k-8 tests fail on both providers when executed with the previous emitter and pass with this commit. Repository lintrunner formatting and lint passed for both changed files using pinned Ruff 0.16.2; git diff --check passed.

This source change implements the arithmetic already qualified in /tmp/bolt-split-rc-latest-20261111-v3/package. That immutable flat native target+DFlash2 RC and its matching custom runtime are unchanged. Its native-regression acceptance is not new independent Hugging Face parity, multimodal export acceptance, performance qualification, or clean public-runtime-build evidence. Full-model validation was not rerun from this Mobius source commit. No additional ORT PR modification is required for this graph-level correction. CI for this new head is pending.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants