Commit 5c965fd8c for llama.cpp
commit 5c965fd8ca0b8ecd24f4034c29f9c00c1c16aa43
Author: Anthony Wang <anthonywang903@gmail.com>
Date: Sun Oct 25 19:28:38 2026 +0800
llama-quant : fix 4D tensor quantization using ggml_nrows() and name-based expert detection (#30820)
* llama-quant : fix quantizing 4D tensors
nrows_total was ne[1]*ne[2], so for a 4D tensor only the first ne[2]
slices were quantized and the rest of the rows were dropped. Use
ggml_nrows(tensor) to count all rows, including ne[3].
Fixes #29916
* llama-quant : detect expert tensors by name and fix imatrix size for 4D tensors
The MXFP4_MOE path used ne[2] > 1 to detect MoE expert tensors. This is
wrong for non-expert tensors with 3 or more dims, e.g. MLA projections
(BailingMoE3) and 4D conv kernels. Use the tensor name instead: all
tensors used by GGML_OP_MUL_MAT_ID are named *_exps or *_chexps. This
also removes the BailingMoE3 special case.
The imatrix holds one vector of ne[0] values per 2D slice, so the
expected size is ne[0]*ne[2]*ne[3], not ne[0]*ne[2]. This matches how
the imatrix is indexed per row for 4D tensors in llama_tensor_quantize_impl.
Assisted-by: Claude Opus 5.5
diff --git a/src/llama-quant.cpp b/src/llama-quant.cpp
index 1348884dd..70feba14c 100644
--- a/src/llama-quant.cpp
+++ b/src/llama-quant.cpp
@@ -161,6 +161,12 @@ static tensor_category tensor_get_category(const std::string & tensor_name) {
return tensor_category::OTHER;
}
+// check if tensor is a MoE expert tensor (used by GGML_OP_MUL_MAT_ID)
+static bool tensor_is_expert(const std::string & tensor_name) {
+ return tensor_name.find("_exps.") != std::string::npos ||
+ tensor_name.find("_chexps.") != std::string::npos;
+}
+
// check if category is for attention-v-like tensors (more sensitive to quantization)
static bool category_is_attn_v(tensor_category cat) {
return cat == tensor_category::ATTENTION_V ||
@@ -296,7 +302,7 @@ static bool tensor_allows_quantization(const llama_model_quantize_params * param
// trivial checks first -- no string ops needed
if (params->only_copy) return false;
- // quantize only 2D and 3D tensors (experts)
+ // quantize only 2D+ tensors (matrices, experts, conv kernels)
if (ggml_n_dims(tensor) < 2) return false;
const std::string name = ggml_get_name(tensor);
@@ -541,12 +547,7 @@ static ggml_type llama_tensor_get_type_impl(quantize_state_impl & qs, ggml_type
} else if (ftype == LLAMA_FTYPE_MOSTLY_MXFP4_MOE) {
// MoE tensors -> MXFP4
// other tensors -> Q8_0
- // MLA projection tensors are also 3D, so match expert tensor roles explicitly.
- const bool is_bailingmoe3_expert = arch == LLM_ARCH_BAILINGMOE3 &&
- (category == tensor_category::FFN_UP ||
- category == tensor_category::FFN_GATE ||
- category == tensor_category::FFN_DOWN);
- if (tensor->ne[2] > 1 && (arch != LLM_ARCH_BAILINGMOE3 || is_bailingmoe3_expert)) {
+ if (tensor_is_expert(name)) {
new_type = GGML_TYPE_MXFP4;
} else {
new_type = GGML_TYPE_Q8_0;
@@ -1307,11 +1308,11 @@ static void llama_model_quantize_impl(const std::string & fname_inp, const std::
if (it == imatrix_data->end()) {
LLAMA_LOG_INFO("\n====== %s: did not find weights for %s\n", __func__, tensor->name);
} else {
- if (it->second.size() == (size_t)tensor->ne[0]*tensor->ne[2]) {
+ if (it->second.size() == (size_t)tensor->ne[0]*tensor->ne[2]*tensor->ne[3]) {
imatrix = it->second.data();
} else {
LLAMA_LOG_INFO("\n====== %s: imatrix size %d is different from tensor size %d for %s\n", __func__,
- int(it->second.size()), int(tensor->ne[0]*tensor->ne[2]), tensor->name);
+ int(it->second.size()), int(tensor->ne[0]*tensor->ne[2]*tensor->ne[3]), tensor->name);
// this can happen when quantizing an old mixtral model with split tensors with a new incompatible imatrix
// this is a significant error and it may be good idea to abort the process if this happens,
@@ -1319,7 +1320,7 @@ static void llama_model_quantize_impl(const std::string & fname_inp, const std::
// tok_embd should be ignored in this case, since it always causes this warning
if (!tensor_name_match_token_embd(tensor->name)) {
throw std::runtime_error(format("imatrix size %d is different from tensor size %d for %s",
- int(it->second.size()), int(tensor->ne[0]*tensor->ne[2]), tensor->name));
+ int(it->second.size()), int(tensor->ne[0]*tensor->ne[2]*tensor->ne[3]), tensor->name));
}
}
}
@@ -1341,7 +1342,7 @@ static void llama_model_quantize_impl(const std::string & fname_inp, const std::
const int64_t n_per_row = tensor->ne[0];
const int64_t nrows_per_expert = tensor->ne[1];
- const int64_t nrows_total = tensor->ne[1] * tensor->ne[2];
+ const int64_t nrows_total = ggml_nrows(tensor);
const size_t row_size_src = ggml_row_size(tensor->type, n_per_row);
const size_t row_size_dst = ggml_row_size(new_type, n_per_row);
diff --git a/tests/snapshots/deepseek-v3.1.schema b/tests/snapshots/deepseek-v3.1.schema
index 0e9dfd6ed..117a76833 100644
--- a/tests/snapshots/deepseek-v3.1.schema
+++ b/tests/snapshots/deepseek-v3.1.schema
@@ -2927,430 +2927,552 @@ blk.60.attn_k_b.weight q4_0
[MXFP4_MOE] mxfp4
output.weight q8_0
token_embd.weight q8_0
+blk.0.attn_k_b.weight q8_0
blk.0.attn_kv_a_mqa.weight q8_0
blk.0.attn_output.weight q8_0
blk.0.attn_q_a.weight q8_0
blk.0.attn_q_b.weight q8_0
+blk.0.attn_v_b.weight q8_0
blk.0.ffn_down.weight q8_0
blk.0.ffn_gate.weight q8_0
blk.0.ffn_up.weight q8_0
+blk.1.attn_k_b.weight q8_0
blk.1.attn_kv_a_mqa.weight q8_0
blk.1.attn_output.weight q8_0
blk.1.attn_q_a.weight q8_0
blk.1.attn_q_b.weight q8_0
+blk.1.attn_v_b.weight q8_0
blk.1.ffn_down.weight q8_0
blk.1.ffn_gate.weight q8_0
blk.1.ffn_up.weight q8_0
+blk.2.attn_k_b.weight q8_0
blk.2.attn_kv_a_mqa.weight q8_0
blk.2.attn_output.weight q8_0
blk.2.attn_q_a.weight q8_0
blk.2.attn_q_b.weight q8_0
+blk.2.attn_v_b.weight q8_0
blk.2.ffn_down.weight q8_0
blk.2.ffn_gate.weight q8_0
blk.2.ffn_up.weight q8_0
+blk.3.attn_k_b.weight q8_0
blk.3.attn_kv_a_mqa.weight q8_0
blk.3.attn_output.weight q8_0
blk.3.attn_q_a.weight q8_0
blk.3.attn_q_b.weight q8_0
+blk.3.attn_v_b.weight q8_0
blk.3.ffn_down_shexp.weight q8_0
blk.3.ffn_gate_shexp.weight q8_0
blk.3.ffn_up_shexp.weight q8_0
+blk.4.attn_k_b.weight q8_0
blk.4.attn_kv_a_mqa.weight q8_0
blk.4.attn_output.weight q8_0
blk.4.attn_q_a.weight q8_0
blk.4.attn_q_b.weight q8_0
+blk.4.attn_v_b.weight q8_0
blk.4.ffn_down_shexp.weight q8_0
blk.4.ffn_gate_shexp.weight q8_0
blk.4.ffn_up_shexp.weight q8_0
+blk.5.attn_k_b.weight q8_0
blk.5.attn_kv_a_mqa.weight q8_0
blk.5.attn_output.weight q8_0
blk.5.attn_q_a.weight q8_0
blk.5.attn_q_b.weight q8_0
+blk.5.attn_v_b.weight q8_0
blk.5.ffn_down_shexp.weight q8_0
blk.5.ffn_gate_shexp.weight q8_0
blk.5.ffn_up_shexp.weight q8_0
+blk.6.attn_k_b.weight q8_0
blk.6.attn_kv_a_mqa.weight q8_0
blk.6.attn_output.weight q8_0
blk.6.attn_q_a.weight q8_0
blk.6.attn_q_b.weight q8_0
+blk.6.attn_v_b.weight q8_0
blk.6.ffn_down_shexp.weight q8_0
blk.6.ffn_gate_shexp.weight q8_0
blk.6.ffn_up_shexp.weight q8_0
+blk.7.attn_k_b.weight q8_0
blk.7.attn_kv_a_mqa.weight q8_0
blk.7.attn_output.weight q8_0
blk.7.attn_q_a.weight q8_0
blk.7.attn_q_b.weight q8_0
+blk.7.attn_v_b.weight q8_0
blk.7.ffn_down_shexp.weight q8_0
blk.7.ffn_gate_shexp.weight q8_0
blk.7.ffn_up_shexp.weight q8_0
+blk.8.attn_k_b.weight q8_0
blk.8.attn_kv_a_mqa.weight q8_0
blk.8.attn_output.weight q8_0
blk.8.attn_q_a.weight q8_0
blk.8.attn_q_b.weight q8_0
+blk.8.attn_v_b.weight q8_0
blk.8.ffn_down_shexp.weight q8_0
blk.8.ffn_gate_shexp.weight q8_0
blk.8.ffn_up_shexp.weight q8_0
+blk.9.attn_k_b.weight q8_0
blk.9.attn_kv_a_mqa.weight q8_0
blk.9.attn_output.weight q8_0
blk.9.attn_q_a.weight q8_0
blk.9.attn_q_b.weight q8_0
+blk.9.attn_v_b.weight q8_0
blk.9.ffn_down_shexp.weight q8_0
blk.9.ffn_gate_shexp.weight q8_0
blk.9.ffn_up_shexp.weight q8_0
+blk.10.attn_k_b.weight q8_0
blk.10.attn_kv_a_mqa.weight q8_0
blk.10.attn_output.weight q8_0
blk.10.attn_q_a.weight q8_0
blk.10.attn_q_b.weight q8_0
+blk.10.attn_v_b.weight q8_0
blk.10.ffn_down_shexp.weight q8_0
blk.10.ffn_gate_shexp.weight q8_0
blk.10.ffn_up_shexp.weight q8_0
+blk.11.attn_k_b.weight q8_0
blk.11.attn_kv_a_mqa.weight q8_0
blk.11.attn_output.weight q8_0
blk.11.attn_q_a.weight q8_0
blk.11.attn_q_b.weight q8_0
+blk.11.attn_v_b.weight q8_0
blk.11.ffn_down_shexp.weight q8_0
blk.11.ffn_gate_shexp.weight q8_0
blk.11.ffn_up_shexp.weight q8_0
+blk.12.attn_k_b.weight q8_0
blk.12.attn_kv_a_mqa.weight q8_0
blk.12.attn_output.weight q8_0
blk.12.attn_q_a.weight q8_0
blk.12.attn_q_b.weight q8_0
+blk.12.attn_v_b.weight q8_0
blk.12.ffn_down_shexp.weight q8_0
blk.12.ffn_gate_shexp.weight q8_0
blk.12.ffn_up_shexp.weight q8_0
+blk.13.attn_k_b.weight q8_0
blk.13.attn_kv_a_mqa.weight q8_0
blk.13.attn_output.weight q8_0
blk.13.attn_q_a.weight q8_0
blk.13.attn_q_b.weight q8_0
+blk.13.attn_v_b.weight q8_0
blk.13.ffn_down_shexp.weight q8_0
blk.13.ffn_gate_shexp.weight q8_0
blk.13.ffn_up_shexp.weight q8_0
+blk.14.attn_k_b.weight q8_0
blk.14.attn_kv_a_mqa.weight q8_0
blk.14.attn_output.weight q8_0
blk.14.attn_q_a.weight q8_0
blk.14.attn_q_b.weight q8_0
+blk.14.attn_v_b.weight q8_0
blk.14.ffn_down_shexp.weight q8_0
blk.14.ffn_gate_shexp.weight q8_0
blk.14.ffn_up_shexp.weight q8_0
+blk.15.attn_k_b.weight q8_0
blk.15.attn_kv_a_mqa.weight q8_0
blk.15.attn_output.weight q8_0
blk.15.attn_q_a.weight q8_0
blk.15.attn_q_b.weight q8_0
+blk.15.attn_v_b.weight q8_0
blk.15.ffn_down_shexp.weight q8_0
blk.15.ffn_gate_shexp.weight q8_0
blk.15.ffn_up_shexp.weight q8_0
+blk.16.attn_k_b.weight q8_0
blk.16.attn_kv_a_mqa.weight q8_0
blk.16.attn_output.weight q8_0
blk.16.attn_q_a.weight q8_0
blk.16.attn_q_b.weight q8_0
+blk.16.attn_v_b.weight q8_0
blk.16.ffn_down_shexp.weight q8_0
blk.16.ffn_gate_shexp.weight q8_0
blk.16.ffn_up_shexp.weight q8_0
+blk.17.attn_k_b.weight q8_0
blk.17.attn_kv_a_mqa.weight q8_0
blk.17.attn_output.weight q8_0
blk.17.attn_q_a.weight q8_0
blk.17.attn_q_b.weight q8_0
+blk.17.attn_v_b.weight q8_0
blk.17.ffn_down_shexp.weight q8_0
blk.17.ffn_gate_shexp.weight q8_0
blk.17.ffn_up_shexp.weight q8_0
+blk.18.attn_k_b.weight q8_0
blk.18.attn_kv_a_mqa.weight q8_0
blk.18.attn_output.weight q8_0
blk.18.attn_q_a.weight q8_0
blk.18.attn_q_b.weight q8_0
+blk.18.attn_v_b.weight q8_0
blk.18.ffn_down_shexp.weight q8_0
blk.18.ffn_gate_shexp.weight q8_0
blk.18.ffn_up_shexp.weight q8_0
+blk.19.attn_k_b.weight q8_0
blk.19.attn_kv_a_mqa.weight q8_0
blk.19.attn_output.weight q8_0
blk.19.attn_q_a.weight q8_0
blk.19.attn_q_b.weight q8_0
+blk.19.attn_v_b.weight q8_0
blk.19.ffn_down_shexp.weight q8_0
blk.19.ffn_gate_shexp.weight q8_0
blk.19.ffn_up_shexp.weight q8_0
+blk.20.attn_k_b.weight q8_0
blk.20.attn_kv_a_mqa.weight q8_0
blk.20.attn_output.weight q8_0
blk.20.attn_q_a.weight q8_0
blk.20.attn_q_b.weight q8_0
+blk.20.attn_v_b.weight q8_0
blk.20.ffn_down_shexp.weight q8_0
blk.20.ffn_gate_shexp.weight q8_0
blk.20.ffn_up_shexp.weight q8_0
+blk.21.attn_k_b.weight q8_0
blk.21.attn_kv_a_mqa.weight q8_0
blk.21.attn_output.weight q8_0
blk.21.attn_q_a.weight q8_0
blk.21.attn_q_b.weight q8_0
+blk.21.attn_v_b.weight q8_0
blk.21.ffn_down_shexp.weight q8_0
blk.21.ffn_gate_shexp.weight q8_0
blk.21.ffn_up_shexp.weight q8_0
+blk.22.attn_k_b.weight q8_0
blk.22.attn_kv_a_mqa.weight q8_0
blk.22.attn_output.weight q8_0
blk.22.attn_q_a.weight q8_0
blk.22.attn_q_b.weight q8_0
+blk.22.attn_v_b.weight q8_0
blk.22.ffn_down_shexp.weight q8_0
blk.22.ffn_gate_shexp.weight q8_0
blk.22.ffn_up_shexp.weight q8_0
+blk.23.attn_k_b.weight q8_0
blk.23.attn_kv_a_mqa.weight q8_0
blk.23.attn_output.weight q8_0
blk.23.attn_q_a.weight q8_0
blk.23.attn_q_b.weight q8_0
+blk.23.attn_v_b.weight q8_0
blk.23.ffn_down_shexp.weight q8_0
blk.23.ffn_gate_shexp.weight q8_0
blk.23.ffn_up_shexp.weight q8_0
+blk.24.attn_k_b.weight q8_0
blk.24.attn_kv_a_mqa.weight q8_0
blk.24.attn_output.weight q8_0
blk.24.attn_q_a.weight q8_0
blk.24.attn_q_b.weight q8_0
+blk.24.attn_v_b.weight q8_0
blk.24.ffn_down_shexp.weight q8_0
blk.24.ffn_gate_shexp.weight q8_0
blk.24.ffn_up_shexp.weight q8_0
+blk.25.attn_k_b.weight q8_0
blk.25.attn_kv_a_mqa.weight q8_0
blk.25.attn_output.weight q8_0
blk.25.attn_q_a.weight q8_0
blk.25.attn_q_b.weight q8_0
+blk.25.attn_v_b.weight q8_0
blk.25.ffn_down_shexp.weight q8_0
blk.25.ffn_gate_shexp.weight q8_0
blk.25.ffn_up_shexp.weight q8_0
+blk.26.attn_k_b.weight q8_0
blk.26.attn_kv_a_mqa.weight q8_0
blk.26.attn_output.weight q8_0
blk.26.attn_q_a.weight q8_0
blk.26.attn_q_b.weight q8_0
+blk.26.attn_v_b.weight q8_0
blk.26.ffn_down_shexp.weight q8_0
blk.26.ffn_gate_shexp.weight q8_0
blk.26.ffn_up_shexp.weight q8_0
+blk.27.attn_k_b.weight q8_0
blk.27.attn_kv_a_mqa.weight q8_0
blk.27.attn_output.weight q8_0
blk.27.attn_q_a.weight q8_0
blk.27.attn_q_b.weight q8_0
+blk.27.attn_v_b.weight q8_0
blk.27.ffn_down_shexp.weight q8_0
blk.27.ffn_gate_shexp.weight q8_0
blk.27.ffn_up_shexp.weight q8_0
+blk.28.attn_k_b.weight q8_0
blk.28.attn_kv_a_mqa.weight q8_0
blk.28.attn_output.weight q8_0
blk.28.attn_q_a.weight q8_0
blk.28.attn_q_b.weight q8_0
+blk.28.attn_v_b.weight q8_0
blk.28.ffn_down_shexp.weight q8_0
blk.28.ffn_gate_shexp.weight q8_0
blk.28.ffn_up_shexp.weight q8_0
+blk.29.attn_k_b.weight q8_0
blk.29.attn_kv_a_mqa.weight q8_0
blk.29.attn_output.weight q8_0
blk.29.attn_q_a.weight q8_0
blk.29.attn_q_b.weight q8_0
+blk.29.attn_v_b.weight q8_0
blk.29.ffn_down_shexp.weight q8_0
blk.29.ffn_gate_shexp.weight q8_0
blk.29.ffn_up_shexp.weight q8_0
+blk.30.attn_k_b.weight q8_0
blk.30.attn_kv_a_mqa.weight q8_0
blk.30.attn_output.weight q8_0
blk.30.attn_q_a.weight q8_0
blk.30.attn_q_b.weight q8_0
+blk.30.attn_v_b.weight q8_0
blk.30.ffn_down_shexp.weight q8_0
blk.30.ffn_gate_shexp.weight q8_0
blk.30.ffn_up_shexp.weight q8_0
+blk.31.attn_k_b.weight q8_0
blk.31.attn_kv_a_mqa.weight q8_0
blk.31.attn_output.weight q8_0
blk.31.attn_q_a.weight q8_0
blk.31.attn_q_b.weight q8_0
+blk.31.attn_v_b.weight q8_0
blk.31.ffn_down_shexp.weight q8_0
blk.31.ffn_gate_shexp.weight q8_0
blk.31.ffn_up_shexp.weight q8_0
+blk.32.attn_k_b.weight q8_0
blk.32.attn_kv_a_mqa.weight q8_0
blk.32.attn_output.weight q8_0
blk.32.attn_q_a.weight q8_0
blk.32.attn_q_b.weight q8_0
+blk.32.attn_v_b.weight q8_0
blk.32.ffn_down_shexp.weight q8_0
blk.32.ffn_gate_shexp.weight q8_0
blk.32.ffn_up_shexp.weight q8_0
+blk.33.attn_k_b.weight q8_0
blk.33.attn_kv_a_mqa.weight q8_0
blk.33.attn_output.weight q8_0
blk.33.attn_q_a.weight q8_0
blk.33.attn_q_b.weight q8_0
+blk.33.attn_v_b.weight q8_0
blk.33.ffn_down_shexp.weight q8_0
blk.33.ffn_gate_shexp.weight q8_0
blk.33.ffn_up_shexp.weight q8_0
+blk.34.attn_k_b.weight q8_0
blk.34.attn_kv_a_mqa.weight q8_0
blk.34.attn_output.weight q8_0
blk.34.attn_q_a.weight q8_0
blk.34.attn_q_b.weight q8_0
+blk.34.attn_v_b.weight q8_0
blk.34.ffn_down_shexp.weight q8_0
blk.34.ffn_gate_shexp.weight q8_0
blk.34.ffn_up_shexp.weight q8_0
+blk.35.attn_k_b.weight q8_0
blk.35.attn_kv_a_mqa.weight q8_0
blk.35.attn_output.weight q8_0
blk.35.attn_q_a.weight q8_0
blk.35.attn_q_b.weight q8_0
+blk.35.attn_v_b.weight q8_0
blk.35.ffn_down_shexp.weight q8_0
blk.35.ffn_gate_shexp.weight q8_0
blk.35.ffn_up_shexp.weight q8_0
+blk.36.attn_k_b.weight q8_0
blk.36.attn_kv_a_mqa.weight q8_0
blk.36.attn_output.weight q8_0
blk.36.attn_q_a.weight q8_0
blk.36.attn_q_b.weight q8_0
+blk.36.attn_v_b.weight q8_0
blk.36.ffn_down_shexp.weight q8_0
blk.36.ffn_gate_shexp.weight q8_0
blk.36.ffn_up_shexp.weight q8_0
+blk.37.attn_k_b.weight q8_0
blk.37.attn_kv_a_mqa.weight q8_0
blk.37.attn_output.weight q8_0
blk.37.attn_q_a.weight q8_0
blk.37.attn_q_b.weight q8_0
+blk.37.attn_v_b.weight q8_0
blk.37.ffn_down_shexp.weight q8_0
blk.37.ffn_gate_shexp.weight q8_0
blk.37.ffn_up_shexp.weight q8_0
+blk.38.attn_k_b.weight q8_0
blk.38.attn_kv_a_mqa.weight q8_0
blk.38.attn_output.weight q8_0
blk.38.attn_q_a.weight q8_0
blk.38.attn_q_b.weight q8_0
+blk.38.attn_v_b.weight q8_0
blk.38.ffn_down_shexp.weight q8_0
blk.38.ffn_gate_shexp.weight q8_0
blk.38.ffn_up_shexp.weight q8_0
+blk.39.attn_k_b.weight q8_0
blk.39.attn_kv_a_mqa.weight q8_0
blk.39.attn_output.weight q8_0
blk.39.attn_q_a.weight q8_0
blk.39.attn_q_b.weight q8_0
+blk.39.attn_v_b.weight q8_0
blk.39.ffn_down_shexp.weight q8_0
blk.39.ffn_gate_shexp.weight q8_0
blk.39.ffn_up_shexp.weight q8_0
+blk.40.attn_k_b.weight q8_0
blk.40.attn_kv_a_mqa.weight q8_0
blk.40.attn_output.weight q8_0
blk.40.attn_q_a.weight q8_0
blk.40.attn_q_b.weight q8_0
+blk.40.attn_v_b.weight q8_0
blk.40.ffn_down_shexp.weight q8_0
blk.40.ffn_gate_shexp.weight q8_0
blk.40.ffn_up_shexp.weight q8_0
+blk.41.attn_k_b.weight q8_0
blk.41.attn_kv_a_mqa.weight q8_0
blk.41.attn_output.weight q8_0
blk.41.attn_q_a.weight q8_0
blk.41.attn_q_b.weight q8_0
+blk.41.attn_v_b.weight q8_0
blk.41.ffn_down_shexp.weight q8_0
blk.41.ffn_gate_shexp.weight q8_0
blk.41.ffn_up_shexp.weight q8_0
+blk.42.attn_k_b.weight q8_0
blk.42.attn_kv_a_mqa.weight q8_0
blk.42.attn_output.weight q8_0
blk.42.attn_q_a.weight q8_0
blk.42.attn_q_b.weight q8_0
+blk.42.attn_v_b.weight q8_0
blk.42.ffn_down_shexp.weight q8_0
blk.42.ffn_gate_shexp.weight q8_0
blk.42.ffn_up_shexp.weight q8_0
+blk.43.attn_k_b.weight q8_0
blk.43.attn_kv_a_mqa.weight q8_0
blk.43.attn_output.weight q8_0
blk.43.attn_q_a.weight q8_0
blk.43.attn_q_b.weight q8_0
+blk.43.attn_v_b.weight q8_0
blk.43.ffn_down_shexp.weight q8_0
blk.43.ffn_gate_shexp.weight q8_0
blk.43.ffn_up_shexp.weight q8_0
+blk.44.attn_k_b.weight q8_0
blk.44.attn_kv_a_mqa.weight q8_0
blk.44.attn_output.weight q8_0
blk.44.attn_q_a.weight q8_0
blk.44.attn_q_b.weight q8_0
+blk.44.attn_v_b.weight q8_0
blk.44.ffn_down_shexp.weight q8_0
blk.44.ffn_gate_shexp.weight q8_0
blk.44.ffn_up_shexp.weight q8_0
+blk.45.attn_k_b.weight q8_0
blk.45.attn_kv_a_mqa.weight q8_0
blk.45.attn_output.weight q8_0
blk.45.attn_q_a.weight q8_0
blk.45.attn_q_b.weight q8_0
+blk.45.attn_v_b.weight q8_0
blk.45.ffn_down_shexp.weight q8_0
blk.45.ffn_gate_shexp.weight q8_0
blk.45.ffn_up_shexp.weight q8_0
+blk.46.attn_k_b.weight q8_0
blk.46.attn_kv_a_mqa.weight q8_0
blk.46.attn_output.weight q8_0
blk.46.attn_q_a.weight q8_0
blk.46.attn_q_b.weight q8_0
+blk.46.attn_v_b.weight q8_0
blk.46.ffn_down_shexp.weight q8_0
blk.46.ffn_gate_shexp.weight q8_0
blk.46.ffn_up_shexp.weight q8_0
+blk.47.attn_k_b.weight q8_0
blk.47.attn_kv_a_mqa.weight q8_0
blk.47.attn_output.weight q8_0
blk.47.attn_q_a.weight q8_0
blk.47.attn_q_b.weight q8_0
+blk.47.attn_v_b.weight q8_0
blk.47.ffn_down_shexp.weight q8_0
blk.47.ffn_gate_shexp.weight q8_0
blk.47.ffn_up_shexp.weight q8_0
+blk.48.attn_k_b.weight q8_0
blk.48.attn_kv_a_mqa.weight q8_0
blk.48.attn_output.weight q8_0
blk.48.attn_q_a.weight q8_0
blk.48.attn_q_b.weight q8_0
+blk.48.attn_v_b.weight q8_0
blk.48.ffn_down_shexp.weight q8_0
blk.48.ffn_gate_shexp.weight q8_0
blk.48.ffn_up_shexp.weight q8_0
+blk.49.attn_k_b.weight q8_0
blk.49.attn_kv_a_mqa.weight q8_0
blk.49.attn_output.weight q8_0
blk.49.attn_q_a.weight q8_0
blk.49.attn_q_b.weight q8_0
+blk.49.attn_v_b.weight q8_0
blk.49.ffn_down_shexp.weight q8_0
blk.49.ffn_gate_shexp.weight q8_0
blk.49.ffn_up_shexp.weight q8_0
+blk.50.attn_k_b.weight q8_0
blk.50.attn_kv_a_mqa.weight q8_0
blk.50.attn_output.weight q8_0
blk.50.attn_q_a.weight q8_0
blk.50.attn_q_b.weight q8_0
+blk.50.attn_v_b.weight q8_0
blk.50.ffn_down_shexp.weight q8_0
blk.50.ffn_gate_shexp.weight q8_0
blk.50.ffn_up_shexp.weight q8_0
+blk.51.attn_k_b.weight q8_0
blk.51.attn_kv_a_mqa.weight q8_0
blk.51.attn_output.weight q8_0
blk.51.attn_q_a.weight q8_0
blk.51.attn_q_b.weight q8_0
+blk.51.attn_v_b.weight q8_0
blk.51.ffn_down_shexp.weight q8_0
blk.51.ffn_gate_shexp.weight q8_0
blk.51.ffn_up_shexp.weight q8_0
+blk.52.attn_k_b.weight q8_0
blk.52.attn_kv_a_mqa.weight q8_0
blk.52.attn_output.weight q8_0
blk.52.attn_q_a.weight q8_0
blk.52.attn_q_b.weight q8_0
+blk.52.attn_v_b.weight q8_0
blk.52.ffn_down_shexp.weight q8_0
blk.52.ffn_gate_shexp.weight q8_0
blk.52.ffn_up_shexp.weight q8_0
+blk.53.attn_k_b.weight q8_0
blk.53.attn_kv_a_mqa.weight q8_0
blk.53.attn_output.weight q8_0
blk.53.attn_q_a.weight q8_0
blk.53.attn_q_b.weight q8_0
+blk.53.attn_v_b.weight q8_0
blk.53.ffn_down_shexp.weight q8_0
blk.53.ffn_gate_shexp.weight q8_0
blk.53.ffn_up_shexp.weight q8_0
+blk.54.attn_k_b.weight q8_0
blk.54.attn_kv_a_mqa.weight q8_0
blk.54.attn_output.weight q8_0
blk.54.attn_q_a.weight q8_0
blk.54.attn_q_b.weight q8_0
+blk.54.attn_v_b.weight q8_0
blk.54.ffn_down_shexp.weight q8_0
blk.54.ffn_gate_shexp.weight q8_0
blk.54.ffn_up_shexp.weight q8_0
+blk.55.attn_k_b.weight q8_0
blk.55.attn_kv_a_mqa.weight q8_0
blk.55.attn_output.weight q8_0
blk.55.attn_q_a.weight q8_0
blk.55.attn_q_b.weight q8_0
+blk.55.attn_v_b.weight q8_0
blk.55.ffn_down_shexp.weight q8_0
blk.55.ffn_gate_shexp.weight q8_0
blk.55.ffn_up_shexp.weight q8_0
+blk.56.attn_k_b.weight q8_0
blk.56.attn_kv_a_mqa.weight q8_0
blk.56.attn_output.weight q8_0
blk.56.attn_q_a.weight q8_0
blk.56.attn_q_b.weight q8_0
+blk.56.attn_v_b.weight q8_0
blk.56.ffn_down_shexp.weight q8_0
blk.56.ffn_gate_shexp.weight q8_0
blk.56.ffn_up_shexp.weight q8_0
+blk.57.attn_k_b.weight q8_0
blk.57.attn_kv_a_mqa.weight q8_0
blk.57.attn_output.weight q8_0
blk.57.attn_q_a.weight q8_0
blk.57.attn_q_b.weight q8_0
+blk.57.attn_v_b.weight q8_0
blk.57.ffn_down_shexp.weight q8_0
blk.57.ffn_gate_shexp.weight q8_0
blk.57.ffn_up_shexp.weight q8_0
+blk.58.attn_k_b.weight q8_0
blk.58.attn_kv_a_mqa.weight q8_0
blk.58.attn_output.weight q8_0
blk.58.attn_q_a.weight q8_0
blk.58.attn_q_b.weight q8_0
+blk.58.attn_v_b.weight q8_0
blk.58.ffn_down_shexp.weight q8_0
blk.58.ffn_gate_shexp.weight q8_0
blk.58.ffn_up_shexp.weight q8_0
+blk.59.attn_k_b.weight q8_0
blk.59.attn_kv_a_mqa.weight q8_0
blk.59.attn_output.weight q8_0
blk.59.attn_q_a.weight q8_0
blk.59.attn_q_b.weight q8_0
+blk.59.attn_v_b.weight q8_0
blk.59.ffn_down_shexp.weight q8_0
blk.59.ffn_gate_shexp.weight q8_0
blk.59.ffn_up_shexp.weight q8_0
+blk.60.attn_k_b.weight q8_0
blk.60.attn_kv_a_mqa.weight q8_0
blk.60.attn_output.weight q8_0
blk.60.attn_q_a.weight q8_0
blk.60.attn_q_b.weight q8_0
+blk.60.attn_v_b.weight q8_0
blk.60.ffn_down_shexp.weight q8_0
blk.60.ffn_gate_shexp.weight q8_0
blk.60.ffn_up_shexp.weight q8_0