1use super::*;
10
11#[derive(Debug, Clone, Deserialize)]
12pub struct ModelConfig {
13 pub hidden_size: usize,
14 #[serde(default)]
15 pub num_hidden_layers: usize,
16 #[serde(default)]
17 pub intermediate_size: usize,
18 #[serde(default)]
19 pub vocab_size: usize,
20
21 #[serde(default)]
22 pub num_attention_heads: usize,
23 #[serde(default)]
26 pub num_attention_heads_per_layer: Vec<usize>,
27 #[serde(default)]
28 pub num_key_value_heads: usize,
29 #[serde(default)]
30 pub head_dim: usize,
31 #[serde(default = "default_partial_rotary")]
34 pub partial_rotary_factor: f64,
35
36 #[serde(default)]
37 pub linear_num_key_heads: usize,
38 #[serde(default)]
39 pub linear_key_head_dim: usize,
40 #[serde(default)]
41 pub linear_num_value_heads: usize,
42 #[serde(default)]
43 pub linear_value_head_dim: usize,
44 #[serde(default = "default_conv_kernel")]
45 pub linear_conv_kernel_dim: usize,
46
47 #[serde(default)]
48 pub num_experts: usize,
49 #[serde(default)]
50 pub zero_expert_num: usize,
51 #[serde(default = "default_one")]
52 pub num_experts_per_tok: usize,
53 #[serde(default)]
54 pub moe_intermediate_size: usize,
55 #[serde(default)]
56 pub shared_expert_intermediate_size: usize,
57 #[serde(default)]
58 pub norm_topk_prob: bool,
59 #[serde(default = "default_one")]
60 pub decoder_sparse_step: usize,
61
62 #[serde(default)]
65 pub layer_types: Vec<LayerType>,
66 #[serde(default)]
70 pub mtp_layer_types: Vec<LayerType>,
71 #[serde(default = "default_one")]
74 pub full_attention_interval: usize,
75 #[serde(default, deserialize_with = "nullable_u32")]
77 pub sliding_window: u32,
78
79 #[serde(default)]
80 pub max_position_embeddings: usize,
81 #[serde(default = "default_rope_theta")]
82 pub rope_theta: f64,
83
84 #[serde(default = "default_rms_eps")]
85 pub rms_norm_eps: f64,
86
87 #[serde(default, deserialize_with = "nullable_u32")]
89 pub bos_token_id: u32,
90 #[serde(default)]
92 pub glm5next_router_mode: Glm5NextRouterMode,
93 #[serde(default, deserialize_with = "eos_token_id_field")]
95 pub eos_token_id: u32,
96 #[serde(default)]
100 pub eos_token_ids: Vec<u32>,
101 #[serde(default)]
102 pub tie_word_embeddings: bool,
103 #[serde(default)]
107 pub lm_head_bf16_override: Option<bool>,
108 #[serde(default)]
112 pub lm_head_fp8: bool,
113
114 #[serde(default)]
115 pub model_type: String,
116
117 #[serde(default)]
118 pub mtp_num_hidden_layers: usize,
119
120 #[serde(default)]
121 pub dspark_block_size: usize,
122 #[serde(default)]
123 pub dspark_noise_token_id: u32,
124 #[serde(default)]
125 pub dspark_target_layer_ids: Vec<usize>,
126 #[serde(default)]
127 pub dspark_markov_rank: usize,
128
129 #[serde(default)]
130 pub hybrid_override_pattern: String,
131 #[serde(default)]
132 pub mamba_num_heads: usize,
133 #[serde(default)]
134 pub mamba_head_dim: usize,
135 #[serde(default)]
136 pub ssm_state_size: usize,
137 #[serde(default)]
138 pub n_groups: usize,
139 #[serde(default)]
140 pub expand: usize,
141 #[serde(default)]
144 pub n_routed_experts: usize,
145 #[serde(default)]
147 pub norm_eps: f64,
148 #[serde(default)]
151 pub conv_kernel: usize,
152 #[serde(default)]
154 pub moe_shared_expert_intermediate_size: usize,
155 #[serde(default = "default_one_f64")]
156 pub routed_scaling_factor: f64,
157 #[serde(default)]
161 pub linear_gate_lower_bound: f32,
162 #[serde(default)]
165 pub swiglu_limit: f32,
166 #[serde(default)]
167 pub mlp_only_layers: Vec<usize>,
168 #[serde(default)]
169 pub moe_latent_size: usize,
170 #[serde(default, skip_deserializing, skip_serializing)]
174 pub moe_intermediate_sizes: Vec<usize>,
175 #[serde(default, skip_deserializing, skip_serializing)]
178 pub num_experts_per_toks: Vec<usize>,
179
180 #[serde(default)]
182 pub kv_lora_rank: usize,
183 #[serde(default, skip_deserializing, skip_serializing)]
186 pub kv_layer_dims: Vec<(usize, usize)>,
187 #[serde(default)]
188 pub q_lora_rank: usize,
189 #[serde(default)]
190 pub qk_nope_head_dim: usize,
191 #[serde(default)]
192 pub qk_rope_head_dim: usize,
193 #[serde(default)]
194 pub v_head_dim: usize,
195
196 #[serde(default)]
197 pub ngram_vocab_size_ratio: usize,
198 #[serde(default)]
199 pub emb_neighbor_num: usize,
200 #[serde(default)]
201 pub emb_split_num: usize,
202 #[serde(default)]
203 pub ngram_vocab_size_base: usize,
204 #[serde(default)]
205 pub ngram_split_parts: usize,
206 #[serde(default)]
207 pub ple_layer_ids: Vec<usize>,
208 #[serde(default)]
209 pub ple_conv_kernel_size: usize,
210
211 #[serde(default)]
212 pub o_lora_rank: usize,
213 #[serde(default)]
214 pub o_groups: usize,
215 #[serde(default)]
216 pub yarn_mscale: f32,
217 #[serde(default)]
218 pub yarn_mscale_all_dim: f32,
219 #[serde(default)]
220 pub hc_mult: usize,
221 #[serde(default)]
222 pub hc_sinkhorn_iters: usize,
223 #[serde(default)]
224 pub hc_eps: f32,
225 #[serde(default)]
226 pub hc_lowrank: usize,
227 #[serde(default)]
228 pub final_norm_identity: bool,
229 #[serde(default)]
232 pub compress_ratios: Vec<usize>,
233 #[serde(default)]
234 pub index_n_heads: usize,
235 #[serde(default)]
236 pub index_head_dim: usize,
237 #[serde(default)]
238 pub index_topk: usize,
239 #[serde(default)]
242 pub index_compress_ratio: usize,
243 #[serde(default)]
244 pub index_kpool: usize,
245 #[serde(default)]
246 pub index_kpool_always_select_tail: bool,
247 #[serde(default)]
248 pub num_hash_layers: usize,
249
250 #[serde(default)]
253 pub compress_rope_theta: f32,
254 #[serde(default)]
255 pub kv_source_layer_ids: Vec<usize>,
256 #[serde(default)]
257 pub index_source_layer_ids: Vec<usize>,
258 #[serde(default)]
259 pub candidate_source_layer_id: Option<usize>,
260 #[serde(default)]
261 pub candidate_topk_blocks: usize,
262 #[serde(default)]
263 pub candidate_block_size: usize,
264
265 #[serde(default)]
266 pub engram_layer_ids: Vec<usize>,
267 #[serde(default)]
268 pub engram_num_embeddings: Vec<u64>,
269 #[serde(default)]
270 pub engram_max_ngram_size: usize,
271 #[serde(default)]
272 pub engram_vocab_size: usize,
273 #[serde(default)]
274 pub engram_n_heads: usize,
275 #[serde(default)]
276 pub engram_head_dim: usize,
277 #[serde(default)]
278 pub engram_pad_token_id: u32,
279 #[serde(default)]
280 pub engram_compressed_vocab_size: usize,
281 #[serde(default)]
282 pub engram_multipliers: Vec<u64>,
283 #[serde(default)]
284 pub engram_primes: Vec<u64>,
285 #[serde(default)]
286 pub engram_offsets: Vec<u64>,
287
288 #[serde(default)]
289 pub yarn_factor: f32,
290 #[serde(default)]
291 pub yarn_beta_slow: f32,
292 #[serde(default)]
293 pub yarn_beta_fast: f32,
294 #[serde(default)]
295 pub yarn_original_max_position_embeddings: usize,
296 #[serde(default = "default_one_f32")]
297 pub yarn_attention_factor: f32,
298 #[serde(default)]
299 pub llama_4_scaling_beta: f32,
300 #[serde(default)]
301 pub llama_4_scaling_original_max_position_embeddings: usize,
302
303 #[serde(skip)]
305 pub vision: Option<VisionConfig>,
306
307 #[serde(skip)]
311 pub quantization_config: Option<QuantizationConfig>,
312
313 #[serde(skip)]
316 pub attn_gated: bool,
317 #[serde(default)]
320 pub gdn_norm_sigmoid: bool,
321 #[serde(skip)]
324 pub nested_config: bool,
325 #[serde(skip)]
327 pub mrope_section: [usize; 3],
328 #[serde(skip)]
329 pub mrope_interleaved: bool,
330
331 #[serde(skip)]
332 pub weight_prefix: String,
333
334 #[serde(skip)]
336 pub profile: bool,
337
338 #[serde(skip)]
339 pub ep_rank: usize,
340 #[serde(skip)]
341 pub ep_world_size: usize,
342
343 #[serde(skip)]
344 pub tp_rank: usize,
345 #[serde(skip)]
346 pub tp_world_size: usize,
347
348 #[serde(skip)]
351 pub serve_max_seq_len: usize,
352
353 #[serde(skip)]
354 pub fp8_kv_calibration_tokens: usize,
355 #[serde(skip)]
356 pub fp8_kv_headroom: f32,
357
358 #[serde(skip)]
359 pub final_logit_softcapping: f32,
360 #[serde(skip)]
361 pub embed_scale: f32,
362
363 #[serde(default)]
364 pub scoring_func: String,
365 #[serde(default)]
366 pub use_routing_bias: bool,
367 #[serde(default)]
368 pub qk_norm_type: String,
369 #[serde(default)]
370 pub num_mtp_modules: usize,
371 #[serde(default)]
372 pub mtp_transformer_layers: usize,
373 #[serde(default)]
376 pub rotary_dim: usize,
377 #[serde(skip)]
381 pub attn_position_encoding: Option<AttnPositionEncoding>,
382
383 #[serde(default)]
384 pub dflash_capture_layers: Vec<usize>,
385 pub dflash_gamma: Option<usize>,
388
389 #[serde(default)]
392 pub adapter_max_rank: usize,
393
394 #[serde(default)]
396 pub attn_res_block_size: usize,
397 #[serde(default)]
399 pub use_full_rank_gate: bool,
400 #[serde(default)]
401 pub mla_use_nope: bool,
402 #[serde(default)]
403 pub mla_use_output_gate: bool,
404 #[serde(default)]
405 pub latent_moe_use_norm: bool,
406 #[serde(default)]
408 pub hidden_act: String,
409 #[serde(default)]
410 pub activation_situ_beta: f32,
411 #[serde(default)]
412 pub activation_situ_linear_beta: f32,
413 #[serde(default)]
415 pub n_shared_experts: usize,
416}