""" Configuration class for Ivme-Conversate-S-v1. Mirrors train_ivme_s_v1.ModelConfig exactly (same field names, same defaults), so config.json produced from a real training run's ModelConfig round-trips into this class with no field remapping needed. """ from transformers import PretrainedConfig class IvmeConversateSConfig(PretrainedConfig): model_type = "ivme_conversate_s" def __init__( self, vocab_size: int = 8000, embed_rank: int = 48, d_model: int = 256, n_unique_layers: int = 14, share_factor: int = 2, n_heads: int = 8, n_kv_heads: int = 2, d_ff: int = 512, n_meta_tokens: int = 4, max_seq_len: int = 768, **kwargs, ): self.vocab_size = vocab_size self.embed_rank = embed_rank self.d_model = d_model self.n_unique_layers = n_unique_layers self.share_factor = share_factor self.n_heads = n_heads self.n_kv_heads = n_kv_heads self.d_ff = d_ff self.n_meta_tokens = n_meta_tokens self.max_seq_len = max_seq_len super().__init__(**kwargs) @property def n_layers_effective(self): return self.n_unique_layers * self.share_factor