ereniko's picture
Upload folder using huggingface_hub
ab56428 verified
Raw
History Blame Contribute Delete
1.28 kB
from dataclasses import dataclass
@dataclass
class IvmeConfig:
"""Ivme-Conversate-v2 (Dense) architecture config.
Every field here corresponds to a decision in Section 4 of the design doc.
Values are chosen to match v1 wherever the doc calls for it, so any quality
difference between v1 and v2 is attributable to data/training, not size.
"""
vocab_size: int = 16_000 # Section 4.9: 16k tokens, English-only
hidden_dim: int = 384 # Section 4.2: matches v1
n_layers: int = 10 # Section 4.3: matches v1
n_heads: int = 6 # Section 4.4: full attention, no GQA
context_len: int = 1024 # Section 4.10: matches v1
ffn_mult: float = 4.0 # SwiGLU hidden expansion (adjusted below for param parity)
rope_theta: float = 10_000.0 # standard RoPE base frequency
norm_eps: float = 1e-5 # RMSNorm epsilon
tie_embeddings: bool = True # Section 4.8
dropout: float = 0.0 # no dropout at this data:param ratio (heavily overtrained regime)
def __post_init__(self):
assert self.hidden_dim % self.n_heads == 0, "hidden_dim must be divisible by n_heads"
@property
def head_dim(self) -> int:
return self.hidden_dim // self.n_heads