@@ -757,14 +757,15 @@ static const std::map<llm_tensor, llm_tensor_info> LLM_TENSOR_INFOS = {
757757 {LLM_TENSOR_INDEXER_PROJ , {LLM_TENSOR_LAYER_REPEATING , GGML_OP_MUL_MAT }},
758758 {LLM_TENSOR_INDEXER_ATTN_K , {LLM_TENSOR_LAYER_REPEATING , GGML_OP_MUL_MAT }},
759759 {LLM_TENSOR_INDEXER_ATTN_Q_B , {LLM_TENSOR_LAYER_REPEATING , GGML_OP_MUL_MAT }},
760- // NextN/MTP tensors are currently ignored (reserved for future MTP support)
761- // These tensors only exist in the last layer(s) and are treated as output tensors
762- {LLM_TENSOR_NEXTN_EH_PROJ , {LLM_TENSOR_LAYER_OUTPUT , GGML_OP_MUL_MAT }},
763- {LLM_TENSOR_NEXTN_EMBED_TOKENS , {LLM_TENSOR_LAYER_OUTPUT , GGML_OP_GET_ROWS }},
764- {LLM_TENSOR_NEXTN_ENORM , {LLM_TENSOR_LAYER_OUTPUT , GGML_OP_GET_ROWS }},
765- {LLM_TENSOR_NEXTN_HNORM , {LLM_TENSOR_LAYER_OUTPUT , GGML_OP_MUL }},
766- {LLM_TENSOR_NEXTN_SHARED_HEAD_HEAD , {LLM_TENSOR_LAYER_OUTPUT , GGML_OP_MUL_MAT }},
767- {LLM_TENSOR_NEXTN_SHARED_HEAD_NORM , {LLM_TENSOR_LAYER_OUTPUT , GGML_OP_MUL }},
760+ // NextN/MTP tensors are stored per-block (blk.%d.nextn.*) even though only the
761+ // last nextn_predict_layers blocks carry them. Classify as LAYER_REPEATING so
762+ // the model loader doesn't fault on the block index.
763+ {LLM_TENSOR_NEXTN_EH_PROJ , {LLM_TENSOR_LAYER_REPEATING , GGML_OP_MUL_MAT }},
764+ {LLM_TENSOR_NEXTN_EMBED_TOKENS , {LLM_TENSOR_LAYER_REPEATING , GGML_OP_GET_ROWS }},
765+ {LLM_TENSOR_NEXTN_ENORM , {LLM_TENSOR_LAYER_REPEATING , GGML_OP_MUL }},
766+ {LLM_TENSOR_NEXTN_HNORM , {LLM_TENSOR_LAYER_REPEATING , GGML_OP_MUL }},
767+ {LLM_TENSOR_NEXTN_SHARED_HEAD_HEAD , {LLM_TENSOR_LAYER_REPEATING , GGML_OP_MUL_MAT }},
768+ {LLM_TENSOR_NEXTN_SHARED_HEAD_NORM , {LLM_TENSOR_LAYER_REPEATING , GGML_OP_MUL }},
768769 // Nemotron 3 Super
769770 {LLM_TENSOR_FFN_LATENT_DOWN , {LLM_TENSOR_LAYER_REPEATING , GGML_OP_MUL }},
770771 {LLM_TENSOR_FFN_LATENT_UP , {LLM_TENSOR_LAYER_REPEATING , GGML_OP_MUL }},
@@ -877,6 +878,16 @@ bool llm_arch_is_diffusion(const llm_arch & arch) {
877878 }
878879}
879880
881+ bool llm_arch_supports_rs_rollback (const llm_arch & arch) {
882+ switch (arch) {
883+ case LLM_ARCH_QWEN35 :
884+ case LLM_ARCH_QWEN35MOE :
885+ return true ;
886+ default :
887+ return false ;
888+ }
889+ }
890+
880891bool llm_arch_supports_sm_tensor (const llm_arch & arch) {
881892 switch (arch) {
882893 case LLM_ARCH_GROK :
0 commit comments