|
@@ -757,11 +757,19 @@ ggml_tensor * llama_kv_cache_unified::build_rope_shift(
|
|
|
const auto & yarn_beta_slow = cparams.yarn_beta_slow;
|
|
const auto & yarn_beta_slow = cparams.yarn_beta_slow;
|
|
|
|
|
|
|
|
const auto & n_rot = hparams.n_rot;
|
|
const auto & n_rot = hparams.n_rot;
|
|
|
- const auto & rope_type = hparams.rope_type;
|
|
|
|
|
|
|
+ const auto & rope_type = hparams.rope_type == LLAMA_ROPE_TYPE_MROPE
|
|
|
|
|
+ // @ngxson : this is a workaround
|
|
|
|
|
+ // for M-RoPE, we want to rotate the whole vector when doing KV shift
|
|
|
|
|
+ // a normal RoPE should work, we just need to use the correct ordering
|
|
|
|
|
+ // ref: https://github.com/ggml-org/llama.cpp/pull/13870
|
|
|
|
|
+ ? LLAMA_ROPE_TYPE_NEOX
|
|
|
|
|
+ : hparams.rope_type;
|
|
|
|
|
|
|
|
// See llm_build_deepseek2() for why attn_factor has to be scaled for YaRN RoPE to work correctly.
|
|
// See llm_build_deepseek2() for why attn_factor has to be scaled for YaRN RoPE to work correctly.
|
|
|
// See https://github.com/ggerganov/llama.cpp/discussions/7416 for detailed explanation.
|
|
// See https://github.com/ggerganov/llama.cpp/discussions/7416 for detailed explanation.
|
|
|
- const float yarn_attn_factor = model.arch == LLM_ARCH_DEEPSEEK2 ? 1.0f / (1.0f + 0.1f * logf(1.0f / freq_scale)) : cparams.yarn_attn_factor;
|
|
|
|
|
|
|
+ const float yarn_attn_factor = model.arch == LLM_ARCH_DEEPSEEK2
|
|
|
|
|
+ ? 1.0f / (1.0f + 0.1f * logf(1.0f / freq_scale))
|
|
|
|
|
+ : cparams.yarn_attn_factor;
|
|
|
|
|
|
|
|
ggml_tensor * tmp;
|
|
ggml_tensor * tmp;
|
|
|
|
|
|