mstar.model.glm52.config

Contents

mstar.model.glm52.config#

GLM-5.2 architecture + generation config.

Classes

Glm52ModelConfig([vocab_size, hidden_size, ...])

class mstar.model.glm52.config.Glm52ModelConfig(vocab_size: int = 154880, hidden_size: int = 6144, num_hidden_layers: int = 78, num_attention_heads: int = 64, rms_norm_eps: float = 1e-05, hidden_act: str = 'silu', tie_word_embeddings: bool = False, q_lora_rank: int = 2048, kv_lora_rank: int = 512, qk_nope_head_dim: int = 192, qk_rope_head_dim: int = 64, v_head_dim: int = 256, mla_absorb: bool = True, index_n_heads: int = 32, index_head_dim: int = 128, index_topk: int = 2048, index_topk_freq: int = 4, index_skip_topk_offset: int = 3, index_share_for_mtp_iteration: bool = True, indexer_rope_interleave: bool = True, dsa_long_context: bool = False, first_k_dense_replace: int = 3, intermediate_size: int = 12288, moe_intermediate_size: int = 2048, n_routed_experts: int = 256, n_shared_experts: int = 1, num_experts_per_tok: int = 8, routed_scaling_factor: float = 2.5, scoring_func: str = 'sigmoid', topk_method: str = 'noaux_tc', norm_topk_prob: bool = True, moe_router_dtype: str = 'float32', rope_theta: float = 8000000.0, rope_interleave: bool = True, max_position_embeddings: int = 1048576, max_seq_len: int = 2048, num_nextn_predict_layers: int = 1, eos_token_ids: tuple[int, ...] = (154820, 154827, 154829), pad_token_id: int = 154820, max_output_tokens: int | None = None, temperature: float = 1.0, top_p: float = 0.95, repetition_penalty: float = 1.0, ignore_eos: bool = False, quantization_config: mstar.utils.fp8_block.Fp8BlockQuantConfig | None = None, moe_fp8_resident: bool = True, moe_quant_kernel: str = 'auto', graph_compile: bool = True, prefill_token_buckets: list[int] | None = None, prefill_capture_batch_sizes: list[int] | None = None)[source]#

Bases: object

Parameters:
  • vocab_size (int)

  • hidden_size (int)

  • num_hidden_layers (int)

  • num_attention_heads (int)

  • rms_norm_eps (float)

  • hidden_act (str)

  • tie_word_embeddings (bool)

  • q_lora_rank (int)

  • kv_lora_rank (int)

  • qk_nope_head_dim (int)

  • qk_rope_head_dim (int)

  • v_head_dim (int)

  • mla_absorb (bool)

  • index_n_heads (int)

  • index_head_dim (int)

  • index_topk (int)

  • index_topk_freq (int)

  • index_skip_topk_offset (int)

  • index_share_for_mtp_iteration (bool)

  • indexer_rope_interleave (bool)

  • dsa_long_context (bool)

  • first_k_dense_replace (int)

  • intermediate_size (int)

  • moe_intermediate_size (int)

  • n_routed_experts (int)

  • n_shared_experts (int)

  • num_experts_per_tok (int)

  • routed_scaling_factor (float)

  • scoring_func (str)

  • topk_method (str)

  • norm_topk_prob (bool)

  • moe_router_dtype (str)

  • rope_theta (float)

  • rope_interleave (bool)

  • max_position_embeddings (int)

  • max_seq_len (int)

  • num_nextn_predict_layers (int)

  • eos_token_ids (tuple[int, ...])

  • pad_token_id (int)

  • max_output_tokens (int | None)

  • temperature (float)

  • top_p (float)

  • repetition_penalty (float)

  • ignore_eos (bool)

  • quantization_config (Fp8BlockQuantConfig | None)

  • moe_fp8_resident (bool)

  • moe_quant_kernel (str)

  • graph_compile (bool)

  • prefill_token_buckets (list[int] | None)

  • prefill_capture_batch_sizes (list[int] | None)

cache_latent_dim: int#
dsa_long_context: bool = False#
eos_token_ids: tuple[int, ...] = (154820, 154827, 154829)#
first_k_dense_replace: int = 3#
classmethod from_hf_config(hf_config)[source]#

Geometry from the checkpoint’s config.json; serving knobs keep their defaults.

Parameters:

hf_config (dict)

Return type:

Glm52ModelConfig

graph_compile: bool = True#
hidden_act: str = 'silu'#
hidden_size: int = 6144#
ignore_eos: bool = False#
index_head_dim: int = 128#
index_n_heads: int = 32#
index_share_for_mtp_iteration: bool = True#
index_skip_topk_offset: int = 3#
index_topk: int = 2048#
index_topk_freq: int = 4#
indexer_rope_interleave: bool = True#
intermediate_size: int = 12288#
kv_lora_rank: int = 512#
max_output_tokens: int | None = None#
max_position_embeddings: int = 1048576#
property max_prompt_tokens: int#

The longest prompt served. Decode runs at least one step after the prefill and the next may already be scheduled when it stops, so the prompt leaves two rows under the context limit; a DSA prefill attends densely, within index_topk.

max_seq_len: int = 2048#
mla_absorb: bool = True#
moe_fp8_resident: bool = True#
moe_intermediate_size: int = 2048#
moe_quant_kernel: str = 'auto'#
moe_router_dtype: str = 'float32'#
n_routed_experts: int = 256#
n_shared_experts: int = 1#
norm_topk_prob: bool = True#
num_attention_heads: int = 64#
property num_dense_layers: int#
num_experts_per_tok: int = 8#
num_hidden_layers: int = 78#
num_nextn_predict_layers: int = 1#
pad_token_id: int = 154820#
property padded_head_dim: int#

Naive-MLA q/k/v pad target; FlashInfer paged kernels require 64/128/256.

position_config()[source]#

The positions over the KV cache and the RoPE the layers rotate with: interleaved over qk_rope_head_dim, from an fp32 cos/sin table built once (the angles as the reference computes them, for every position up to max_seq_len).

Return type:

PositionConfig

prefill_capture_batch_sizes: list[int] | None = None#
prefill_token_buckets: list[int] | None = None#
q_lora_rank: int = 2048#
property qk_head_dim: int#
qk_nope_head_dim: int = 192#
qk_rope_head_dim: int = 64#
quantization_config: Fp8BlockQuantConfig | None = None#
classmethod reduced()[source]#

Tiny-dim variant for CPU tests: same shapes family, random weights.

Return type:

Glm52ModelConfig

classmethod reduced_fp8(block=(16, 16))[source]#
Parameters:

block (tuple[int, int])

Return type:

Glm52ModelConfig

repetition_penalty: float = 1.0#
rms_norm_eps: float = 1e-05#
rope_interleave: bool = True#
rope_theta: float = 8000000.0#
routed_scaling_factor: float = 2.5#
scoring_func: str = 'sigmoid'#
property softmax_scale: float#

MLA’s attention scale. Plain RoPE, so no YaRN mscale folds in.

temperature: float = 1.0#
tie_word_embeddings: bool = False#
top_p: float = 0.95#
topk_method: str = 'noaux_tc'#
v_head_dim: int = 256#
vocab_size: int = 154880#