HanseLM-78M-Base / configuration_hanse.py
Evicka's picture
Add files using upload-large-folder tool
e8ac551 verified
Raw
History Blame Contribute Delete
1.49 kB
from __future__ import annotations
from typing import Any
from transformers import PretrainedConfig
class HanseConfig(PretrainedConfig):
model_type = "hanse"
def __init__(
self,
vocab_size: int = 24_576,
hidden_size: int = 640,
num_layers: int = 14,
layer_pattern: list[str] | tuple[str, ...] | None = None,
num_query_heads: int = 10,
num_kv_heads: int = 2,
ffn_hidden_size: int = 1_792,
max_seq_len: int = 2_048,
rope_theta: float = 10_000.0,
conv_kernel_size: int = 7,
norm_eps: float = 1e-6,
qk_norm: bool = True,
tie_word_embeddings: bool = True,
**kwargs: Any,
) -> None:
super().__init__(tie_word_embeddings=tie_word_embeddings, **kwargs)
self.vocab_size = vocab_size
self.hidden_size = hidden_size
self.num_layers = num_layers
self.layer_pattern = tuple(
layer_pattern
or ("A", "A", "C", "A", "A", "A", "C", "A", "A", "A", "C", "A", "A", "A")
)
self.num_query_heads = num_query_heads
self.num_kv_heads = num_kv_heads
self.ffn_hidden_size = ffn_hidden_size
self.max_seq_len = max_seq_len
self.rope_theta = rope_theta
self.conv_kernel_size = conv_kernel_size
self.norm_eps = norm_eps
self.qk_norm = qk_norm
@property
def head_dim(self) -> int:
return self.hidden_size // self.num_query_heads