needle-hf / configuration_needle.py
kmoss's picture
Upload Needle HF model bundle
7ddd847 verified
Raw
History Blame Contribute Delete
2.43 kB
"""Hugging Face configuration for Needle."""
from __future__ import annotations
from transformers import PretrainedConfig
class NeedleConfig(PretrainedConfig):
model_type = "needle"
def __init__(
self,
vocab_size: int = 8192,
hidden_size: int | None = None,
d_model: int = 512,
num_attention_heads: int | None = None,
num_heads: int = 8,
num_key_value_heads: int | None = None,
num_kv_heads: int = 4,
num_encoder_layers: int = 12,
num_decoder_layers: int = 8,
rope_theta: float = 10000.0,
rms_norm_eps: float = 1e-6,
pad_token_id: int = 0,
eos_token_id: int = 1,
bos_token_id: int = 2,
unk_token_id: int = 3,
decoder_start_token_id: int | None = None,
tie_word_embeddings: bool = True,
torch_dtype: str = "bfloat16",
**kwargs,
) -> None:
kwargs.pop("is_encoder_decoder", None)
hidden_size = int(hidden_size if hidden_size is not None else d_model)
num_attention_heads = int(num_attention_heads if num_attention_heads is not None else num_heads)
num_key_value_heads = int(num_key_value_heads if num_key_value_heads is not None else num_kv_heads)
decoder_start_token_id = eos_token_id if decoder_start_token_id is None else decoder_start_token_id
super().__init__(
pad_token_id=pad_token_id,
eos_token_id=eos_token_id,
bos_token_id=bos_token_id,
unk_token_id=unk_token_id,
decoder_start_token_id=decoder_start_token_id,
tie_word_embeddings=tie_word_embeddings,
is_encoder_decoder=True,
torch_dtype=torch_dtype,
**kwargs,
)
self.vocab_size = int(vocab_size)
self.hidden_size = hidden_size
self.d_model = hidden_size
self.num_attention_heads = num_attention_heads
self.num_heads = num_attention_heads
self.num_key_value_heads = num_key_value_heads
self.num_kv_heads = num_key_value_heads
self.num_encoder_layers = int(num_encoder_layers)
self.num_decoder_layers = int(num_decoder_layers)
self.num_hidden_layers = int(num_decoder_layers)
self.rope_theta = float(rope_theta)
self.rms_norm_eps = float(rms_norm_eps)
self.attention_head_dim = hidden_size // max(1, num_attention_heads)