Skip to content

Commit c51308d

Browse files
author
bloomer
committed
bailingmoe3: apply trained SwiGLU clamps
1 parent e4f7209 commit c51308d

4 files changed

Lines changed: 22 additions & 2 deletions

File tree

conversion/bailingmoe3.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,18 @@ def set_gguf_parameters(self):
6666
self.gguf_writer.add_expert_weights_scale(self.hparams["routed_scaling_factor"])
6767
self.gguf_writer.add_expert_weights_norm(self.hparams["norm_topk_prob"])
6868

69+
def clamp_limits(key: str) -> list[float] | None:
70+
values = self.hparams.get(key)
71+
if values is None:
72+
return None
73+
values = [0.0 if value is None else float(value) for value in values[:self.block_count]]
74+
return values + [0.0] * (self.block_count - len(values))
75+
76+
if (values := clamp_limits("expert_swiglu_limit_list")) is not None:
77+
self.gguf_writer.add_swiglu_clamp_exp(values)
78+
if (values := clamp_limits("share_expert_swiglu_limit_list")) is not None:
79+
self.gguf_writer.add_swiglu_clamp_shexp(values)
80+
6981
if nextn_layers := self.hparams.get("num_nextn_predict_layers", 0):
7082
self.gguf_writer.add_nextn_predict_layers(nextn_layers)
7183

src/llama-model-saver.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -214,8 +214,10 @@ void llama_model_saver::add_kv_from_model() {
214214
add_kv(LLM_KV_EXPERT_FEED_FORWARD_LENGTH, hparams.n_ff_exp);
215215
add_kv(LLM_KV_EXPERT_SHARED_FEED_FORWARD_LENGTH, hparams.n_ff_shexp);
216216
add_kv(LLM_KV_EXPERT_SHARED_FEED_FORWARD_LENGTH, hparams.n_ff_chexp);
217-
add_kv(LLM_KV_SWIGLU_CLAMP_EXP, hparams.swiglu_clamp_exp);
218-
add_kv(LLM_KV_SWIGLU_CLAMP_SHEXP, hparams.swiglu_clamp_shexp);
217+
add_kv(LLM_KV_SWIGLU_CLAMP_EXP, std::vector<float>(
218+
hparams.swiglu_clamp_exp.begin(), hparams.swiglu_clamp_exp.begin() + hparams.n_layer_all));
219+
add_kv(LLM_KV_SWIGLU_CLAMP_SHEXP, std::vector<float>(
220+
hparams.swiglu_clamp_shexp.begin(), hparams.swiglu_clamp_shexp.begin() + hparams.n_layer_all));
219221
add_kv(LLM_KV_USE_PARALLEL_RESIDUAL, hparams.use_par_res);
220222
// add_kv(LLM_KV_TENSOR_DATA_LAYOUT, ???);
221223
add_kv(LLM_KV_EXPERT_COUNT, hparams.n_expert);

src/models/bailingmoe3.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ void llama_model_bailingmoe3::load_arch_hparams(llama_model_loader & ml) {
2020
ml.get_key(LLM_KV_EXPERT_WEIGHTS_NORM, hparams.expert_weights_norm, false);
2121
ml.get_key(LLM_KV_EXPERT_GATING_FUNC, hparams.expert_gating_func);
2222
ml.get_key(LLM_KV_NEXTN_PREDICT_LAYERS, hparams.n_layer_nextn, false);
23+
ml.get_key_or_arr(LLM_KV_SWIGLU_CLAMP_EXP, hparams.swiglu_clamp_exp, hparams.n_layer_all, false);
24+
ml.get_key_or_arr(LLM_KV_SWIGLU_CLAMP_SHEXP, hparams.swiglu_clamp_shexp, hparams.n_layer_all, false);
2325

2426
if (hparams.n_ff_shexp == 0) {
2527
hparams.n_ff_shexp = hparams.n_ff_exp * std::max(1u, hparams.n_expert_shared);

tests/test-llama-archs.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,10 @@ static gguf_context_ptr get_gguf_ctx(const llm_arch arch, const bool moe) {
245245
ms.add_kv(LLM_KV_KDA_HEAD_DIM, uint32_t(128));
246246
ms.add_kv(LLM_KV_KDA_SAFE_GATE, true);
247247
ms.add_kv(LLM_KV_KDA_GATE_LOWER_BOUND, -5.0f);
248+
if (arch == LLM_ARCH_BAILINGMOE3) {
249+
ms.add_kv(LLM_KV_SWIGLU_CLAMP_EXP, std::vector<float>({0.0f, 4.0f}));
250+
ms.add_kv(LLM_KV_SWIGLU_CLAMP_SHEXP, std::vector<float>({0.0f, 5.0f}));
251+
}
248252
ms.add_kv(LLM_KV_WKV_HEAD_SIZE, n_embd/n_head);
249253
ms.add_kv(LLM_KV_SHORTCONV_L_CACHE, uint32_t(3));
250254

0 commit comments

Comments
 (0)