from transformers.configuration_utils import PretrainedConfig from typing import Tuple, List, Optional class NegativeConfig(PretrainedConfig): model_type = "negative" keys_to_ignore_at_inference = ["past_key_values"] def __init__( self, vocab_size: int = 2564, hidden_size: int = 128, num_hidden_layers: int = 21, num_attention_heads: int = 4, num_key_value_heads: int = 2, intermediate_size: int = 345, swiglu_interval: int = 3, num_lanes: int = 4, use_engram: bool = True, engram_entries: int = 2400, engram_ngram_orders: Tuple[int, ...] = (2, 3), use_xsa: bool = False, use_per_head_gating: bool = False, max_position_embeddings: int = 2048, rope_theta: float = 2500.0, rms_norm_eps: float = 1e-5, tie_word_embeddings: bool = True, use_cache: bool = False, initializer_range: float = 0.02, **kwargs, ): self.vocab_size = vocab_size self.hidden_size = hidden_size self.num_hidden_layers = num_hidden_layers self.num_attention_heads = num_attention_heads self.num_key_value_heads = num_key_value_heads self.intermediate_size = intermediate_size self.swiglu_interval = swiglu_interval self.num_lanes = num_lanes self.use_engram = use_engram self.engram_entries = engram_entries self.engram_ngram_orders = list(engram_ngram_orders) self.use_xsa = use_xsa self.use_per_head_gating = use_per_head_gating self.max_position_embeddings = max_position_embeddings self.rope_theta = rope_theta self.rms_norm_eps = rms_norm_eps self.initializer_range = initializer_range self.head_dim = hidden_size // num_attention_heads self.auto_map = { "AutoConfig": "configuration_negative.NegativeConfig", "AutoModel": "modeling_negative.NegativeModel", "AutoModelForCausalLM": "modeling_negative.NegativeModelForCausalLM", } super().__init__( tie_word_embeddings=tie_word_embeddings, use_cache=use_cache, **kwargs, )