easydel.modules.glm4_moe.glm4_moe_configuration

easydel.modules.glm4_moe.glm4_moe_configuration#

class easydel.modules.glm4_moe.glm4_moe_configuration.Glm4MoeConfig(vocab_size=151552, hidden_size=4096, intermediate_size=10944, num_hidden_layers=46, num_attention_heads=96, partial_rotary_factor=0.5, num_key_value_heads=8, hidden_act='silu', max_position_embeddings=131072, initializer_range=0.02, rms_norm_eps=1e-05, use_cache=True, tie_word_embeddings=False, rope_theta=10000.0, rope_scaling=None, attention_bias=False, attention_dropout=0.0, moe_intermediate_size=1408, num_experts_per_tok=8, n_shared_experts=1, n_routed_experts=128, routed_scaling_factor=1.0, n_group=1, topk_group=1, first_k_dense_replace=1, norm_topk_prob=True, use_qk_norm=False, **kwargs)[source]#

Bases: EasyDeLBaseConfig

This is the configuration class to store the configuration of a [Glm4MoeModel]. It is used to instantiate a Glm4Moe model according to the specified arguments, defining the model architecture. Instantiating a configuration with the defaults will yield a similar configuration to that of [THUDM/GLM-4-100B-A10B](https://huggingface.co/THUDM/GLM-4-100B-A10B).

Configuration objects inherit from [PretrainedConfig] and can be used to control the model outputs. Read the documentation from [PretrainedConfig] for more information.

Parameters
  • vocab_size (int, optional, defaults to 151552) – Vocabulary size of the Glm4Moe model. Defines the number of different tokens that can be represented by the inputs_ids passed when calling [Glm4MoeModel]

  • hidden_size (int, optional, defaults to 4096) – Dimension of the hidden representations.

  • intermediate_size (int, optional, defaults to 10944) – Dimension of the MLP representations.

  • num_hidden_layers (int, optional, defaults to 46) – Number of hidden layers in the Transformer encoder.

  • num_attention_heads (int, optional, defaults to 96) – Number of attention heads for each attention layer in the Transformer encoder.

  • partial_rotary_factor (float, optional, defaults to 0.5) – The factor of the partial rotary position.

  • num_key_value_heads (int, optional, defaults to 8) – This is the number of key_value heads that should be used to implement Grouped Query Attention. If num_key_value_heads=num_attention_heads, the model will use Multi Head Attention (MHA), if num_key_value_heads=1 the model will use Multi Query Attention (MQA) otherwise GQA is used. When converting a multi-head checkpoint to a GQA checkpoint, each group key and value head should be constructed by meanpooling all the original heads within that group. For more details, check out [this paper](https://huggingface.co/papers/2305.13245). If it is not specified, will default to 32.

  • hidden_act (str or function, optional, defaults to “silu”) – The non-linear activation function (function or string) in the decoder.

  • max_position_embeddings (int, optional, defaults to 131072) – The maximum sequence length that this model might ever be used with.

  • initializer_range (float, optional, defaults to 0.02) – The standard deviation of the truncated_normal_initializer for initializing all weight matrices.

  • rms_norm_eps (float, optional, defaults to 1e-05) – The epsilon used by the rms normalization layers.

  • use_cache (bool, optional, defaults to True) – Whether or not the model should return the last key/values attentions (not used by all models). Only relevant if config.is_decoder=True.

  • tie_word_embeddings (bool, optional, defaults to False) – Whether the model’s input and output word embeddings should be tied.

  • rope_theta (float, optional, defaults to 10000.0) – The base period of the RoPE embeddings.

  • rope_scaling (Dict, optional) –

    Dictionary containing the scaling configuration for the RoPE embeddings. NOTE: if you apply new rope type and you expect the model to work on longer max_position_embeddings, we recommend you to update this value accordingly. Expected contents:

    rope_type (str):

    The sub-variant of RoPE to use. Can be one of [‘default’, ‘linear’, ‘dynamic’, ‘yarn’, ‘longrope’, ‘llama3’], with ‘default’ being the original RoPE implementation.

    factor (float, optional):

    Used with all rope types except ‘default’. The scaling factor to apply to the RoPE embeddings. In most scaling types, a factor of x will enable the model to handle sequences of length x * original maximum pre-trained length.

    original_max_position_embeddings (int, optional):

    Used with ‘dynamic’, ‘longrope’ and ‘llama3’. The original max position embeddings used during pretraining.

    attention_factor (float, optional):

    Used with ‘yarn’ and ‘longrope’. The scaling factor to be applied on the attention computation. If unspecified, it defaults to value recommended by the implementation, using the factor field to infer the suggested value.

    beta_fast (float, optional):

    Only used with ‘yarn’. Parameter to set the boundary for extrapolation (only) in the linear ramp function. If unspecified, it defaults to 32.

    beta_slow (float, optional):

    Only used with ‘yarn’. Parameter to set the boundary for interpolation (only) in the linear ramp function. If unspecified, it defaults to 1.

    short_factor (list[float], optional):

    Only used with ‘longrope’. The scaling factor to be applied to short contexts (< original_max_position_embeddings). Must be a list of numbers with the same length as the hidden size divided by the number of attention heads divided by 2

    long_factor (list[float], optional):

    Only used with ‘longrope’. The scaling factor to be applied to long contexts (< original_max_position_embeddings). Must be a list of numbers with the same length as the hidden size divided by the number of attention heads divided by 2

    low_freq_factor (float, optional):

    Only used with ‘llama3’. Scaling factor applied to low frequency components of the RoPE

    high_freq_factor (float, optional):

    Only used with ‘llama3’. Scaling factor applied to high frequency components of the RoPE

  • attention_bias (bool, defaults to False, optional, defaults to False) – Whether to use a bias in the query, key, value and output projection layers during self-attention.

  • attention_dropout (float, optional, defaults to 0.0) – The dropout ratio for the attention probabilities.

  • moe_intermediate_size (int, optional, defaults to 1408) – Intermediate size of the routed expert.

  • num_experts_per_tok (int, optional, defaults to 8) – number of experts per token.

  • n_shared_experts (int, optional, defaults to 1) – Number of shared experts.

  • n_routed_experts (int, optional, defaults to 128) – Number of routed experts.

  • routed_scaling_factor (float, optional, defaults to 1.0) – Scaling factor or routed experts.

  • n_group (int, optional, defaults to 1) – Number of groups for routed experts.

  • topk_group (int, optional, defaults to 1) – Number of selected groups for each token.

  • first_k_dense_replace (int, optional, defaults to 1) –

    Number of dense layers in shallow layers(embed->dense->dense->…->dense->moe->moe…->lm_head).

    --k dense layers–/

  • norm_topk_prob (bool, optional, defaults to True) – Whether to normalize the topk probabilities.

  • use_qk_norm (bool, optional, defaults to False) – Whether to use query-key normalization in the attention

```python >>> from transformers import Glm4MoeModel, Glm4MoeConfig

>>> # Initializing a Glm4Moe style configuration
>>> configuration = Glm4MoeConfig()
>>> # Initializing a model from the GLM-4-MOE-100B-A10B style configuration
>>> model = Glm4MoeModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config
```
get_partition_rules(*args, **kwargs)[source]#

Get the partition rules for the Llama model. :returns: The partition rules. :rtype: tp.Tuple[tp.Tuple[str, PartitionSpec]]

model_type: str = 'glm4_moe'#