//! End-to-end Nemotron-H-MoE (`nemotron_h_moe`) GGUF decode oracle. Ignored by //! default — needs the ~17 GB Q4_K_M 30B checkpoint on disk. Validates the //! 30B-class MoE path (lazy per-expert dequant) on a *sharp* prompt so the //! argmax can't be flipped by f32-vs-quant matmul noise. //! //! Reference (llama.cpp / llama-simple, no BOS): "The quick brown fox jumps over //! the lazy" -> " dog" (10575). //! //! Run: `cargo test -p jouleclaw-loader-gguf --release --features rayon \ //! --test real_nemotron_oracle -- --ignored --nocapture` use jouleclaw_loader_gguf::nemotron_gguf::NemotronMoe; const GG: &str = "/Volumes/macos_4TB_external_1/neuronexus_ai/model_library/nemotron-3-nano-Q4/nvidia_Nemotron-3-Nano-30B-A3B-Q4_K_M.gguf"; const FOX: [u32; 8] = [1784, 7586, 22980, 94137, 72993, 2136, 1278, 42757]; const DOG: u32 = 10575; #[test] #[ignore] fn real_nemotron_predicts_dog() { if !std::path::Path::new(GG).exists() { eprintln!("skip: nemotron GGUF not present"); return; } let m = NemotronMoe::load(GG).expect("load nemotron gguf"); eprintln!( "nemotron: {} layers, d={}, m_heads={} inner={} groups={} state={}, experts={}/{} +shared, attn {}q/{}kv hd={}", m.cfg.n_layers, m.cfg.d_model, m.cfg.m_heads, m.cfg.m_inner, m.cfg.n_groups, m.cfg.state, m.cfg.n_used, m.cfg.n_experts, m.cfg.n_heads, m.cfg.n_kv, m.cfg.head_dim ); let logits = m.forward(&FOX); let mut idx: Vec = (0..logits.len()).collect(); idx.sort_by(|&a, &b| logits[b].partial_cmp(&logits[a]).unwrap()); eprintln!("top5 = {:?} (expected {DOG} = ' dog')", &idx[..5]); assert_eq!(idx[0], DOG as usize, "greedy next token diverges from llama.cpp"); }