vedantM's picture
Upload folder using huggingface_hub
3872a44 verified
Raw
History Blame Contribute Delete
1.86 kB
"""SeqLens model configuration — v2."""
from dataclasses import dataclass
@dataclass
class SeqLensConfig:
"""Configuration for SeqLens genomic language model.
Micro v2: 8 layers, dim 256, attention every 4th layer, ~10M params, 16K context.
"""
# Vocabulary: A=0, T=1, G=2, C=3, N=4, [CLS]=5, [SEP]=6, [PAD]=7, [MASK]=8
vocab_size: int = 9
pad_token_id: int = 7
mask_token_id: int = 8
cls_token_id: int = 5
sep_token_id: int = 6
# Model dimensions
d_model: int = 256
n_layers: int = 8 # v2: doubled from 4
# Mamba2 SSM
ssm_d_state: int = 64
ssm_d_conv: int = 4
ssm_expand: int = 2
ssm_headdim: int = 64
# Sliding-window attention
n_attn_heads: int = 4
attn_window: int = 512
attn_layer_interval: int = 4 # Attention at layers 3, 7 (0-indexed)
# Feed-forward
ffn_expand: int = 4
# Sequence
max_seq_len: int = 16_384
# Regularization
dropout: float = 0.0
# Training
mask_rate: float = 0.15
mask_token_prob: float = 0.80
mask_random_prob: float = 0.10
@property
def d_inner(self):
return self.d_model * self.ssm_expand
@property
def n_ssm_heads(self):
return self.d_inner // self.ssm_headdim
@property
def attn_head_dim(self):
return self.d_model // self.n_attn_heads
def has_attention(self, layer_idx: int) -> bool:
if self.attn_layer_interval <= 0:
return False
return (layer_idx + 1) % self.attn_layer_interval == 0
MICRO_CONFIG = SeqLensConfig(
d_model=256,
n_layers=8,
max_seq_len=16_384,
)
BASE_CONFIG = SeqLensConfig(
d_model=512,
n_layers=12,
n_attn_heads=8,
max_seq_len=32_768,
)
LARGE_CONFIG = SeqLensConfig(
d_model=768,
n_layers=24,
n_attn_heads=12,
max_seq_len=65_536,
)