Skip to main content

Module minimax_engine

Module minimax_engine 

Source
Expand description

MiniMax M2 / M3 refusal, and why the reason it used to give was the wrong one.

This module used to say MiniMax “needs a loader, 256-expert sigmoid MoE routing and MTP draft heads, none of which exist yet”. Checked against llama.cpp, two of those three clauses are false and the third is only true of one of the two architectures:

  • MTP does not exist in either model. Neither .scratch/llama.cpp/src/models/minimax-m2.cpp nor minimax-m3.cpp creates a single nextn.* tensor, and gguf-py’s MODEL_ARCH.MINIMAXM2 / .MINIMAXM3 tensor lists contain no NEXTN_* entry, so no converter can emit MTP weights for these files. minimax-m3.cpp:9 states it: “MTP is not in released model weights.” A refusal naming a tensor family the checkpoint cannot contain is unreachable by construction — glm4moe’s q_lora_rank defect in a different costume.
  • Sigmoid MoE routing already exists here. loader.rs reads {arch}.expert_gating_func into GatingFunction::Sigmoid, loads blk.N.exp_probs_b.bias, and reads expert_weights_scale and expert_weights_norm. ferrox_moe::route_top_k_sigmoid is the routing DeepSeek-V3 and GLM-4-MoE use. “256 experts” is an hparam, not a ceiling.
  • Block-sparse attention is M3’s, not MiniMax’s. minimax-m2.cpp builds ordinary dense GQA attention (:112). The ported selection in ferrox_core::block_sparse is relevant only to M3’s MSA, and is the smallest piece of it.

What is actually true, per architecture, is in crate::capability — and that is deliberately the ONLY copy. The live refusal a user hits is LoadError::DedicatedArchitectureRequired, built from ArchPath::DedicatedOnly { reason } in loader.rs; this module’s MinimaxEngine::reject used to carry a second, longer, different reason that nothing ever printed. Two copies of one explanation is how they came to disagree, so reject now reads the catalog’s string rather than repeating it.

In short: minimax-m2 is UNAUDITED (a fixture or a parity run would settle it — see tests/minimax_refusal.rs), while minimax-m3 is genuinely UNIMPLEMENTED (the MSA indexer and its own KV cache).

Structs§

MinimaxEngine
MinimaxUnavailable