|
|
@@ -675,10 +675,17 @@ void llama_model::load_hparams(llama_model_loader & ml) {
|
|
|
} break;
|
|
|
case LLM_ARCH_MINICPM:
|
|
|
{
|
|
|
+ // Backward-compatible defaults for older MiniCPM GGUFs
|
|
|
+ hparams.f_embedding_scale = 12.0f;
|
|
|
+ hparams.f_residual_scale = 1.4f / sqrtf(float(hparams.n_layer));
|
|
|
+ hparams.f_logit_scale = hparams.n_embd ? (256.0f / float(hparams.n_embd)) : 1.0f;
|
|
|
+
|
|
|
ml.get_key(LLM_KV_ATTENTION_LAYERNORM_RMS_EPS, hparams.f_norm_rms_eps);
|
|
|
- ml.get_key(LLM_KV_EMBEDDING_SCALE, hparams.f_embedding_scale);
|
|
|
- ml.get_key(LLM_KV_RESIDUAL_SCALE, hparams.f_residual_scale);
|
|
|
- ml.get_key(LLM_KV_LOGIT_SCALE, hparams.f_logit_scale);
|
|
|
+
|
|
|
+ // Optional KV reads, override defaults if present in newer GGUF exports
|
|
|
+ ml.get_key(LLM_KV_EMBEDDING_SCALE, hparams.f_embedding_scale, /*required=*/false);
|
|
|
+ ml.get_key(LLM_KV_RESIDUAL_SCALE, hparams.f_residual_scale, /*required=*/false);
|
|
|
+ ml.get_key(LLM_KV_LOGIT_SCALE, hparams.f_logit_scale, /*required=*/false);
|
|
|
|
|
|
// MiniCPM uses rope by default, unlike Granite which uses it as a switch
|
|
|
hparams.rope_finetuned = true;
|