NeuraNET-Zero-18B-Preview / configuration_rixis1.py
rubenroy's picture
NeuraNET Zero 18B Preview [Release] - OVTG:5LX
059302c verified
Raw
History Blame Contribute Delete
4.84 kB
# !!!!!!!!!!!!!!! RiXIS 1 [PREVIEW] !!!!!!!!!!!!!!!
# Authorised public RiXIS 1 model weights release ("NeuraNET Zero").
# Source files are a reference implementation for loading and
# inference. proprietary development infrastructure and implementation
# details are omitted.
#
# Copyright (c) 2026 Ruben Roy. All rights reserved.
#
# Licensed under the Creative Commons Attribution-NonCommercial-
# NoDerivatives 4.0 International License (CC BY-NC-ND 4.0);
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://creativecommons.org/licenses/by-nc-nd/4.0/
#
# Unless required by applicable law or agreed to in writing, this work
# is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
# OF ANY KIND, either express or implied. See the License for the
# specific language governing permissions and limitations under the
# License.
from __future__ import annotations
from transformers import PreTrainedConfig
class RiXIS1Config(PreTrainedConfig):
# /\/\ RiXIS 1 decoder-only language model /\/\
model_type = "rixis1"
keys_to_ignore_at_inference = ["past_key_values"]
def __init__(
self,
vocab_size: int = 32_001,
hidden_size: int = 4_096,
intermediate_size: int = 14_336,
num_hidden_layers: int = 80,
num_attention_heads: int = 32,
num_key_value_heads: int = 8,
head_dim: int | None = 128,
hidden_act: str = "silu",
max_position_embeddings: int = 32_768,
initializer_range: float = 0.02,
rms_norm_eps: float = 1e-5,
use_cache: bool = True,
pad_token_id: int | None = 32_000,
bos_token_id: int | None = 1,
eos_token_id: int | list[int] | None = 2,
tie_word_embeddings: bool = False,
rope_parameters: dict | None = None,
rope_theta: float | None = None,
sliding_window: int | None = None,
attention_dropout: float = 0.0,
**kwargs,
):
if hidden_size % num_attention_heads != 0:
raise ValueError(
"hidden_size must be divisible by num_attention_heads."
)
if num_attention_heads % num_key_value_heads != 0:
raise ValueError(
"num_attention_heads must be divisible by num_key_value_heads."
)
inferred_head_dim = hidden_size // num_attention_heads
if head_dim is None:
head_dim = inferred_head_dim
if head_dim != inferred_head_dim:
raise ValueError(
f"head_dim={head_dim} is incompatible with hidden_size="
f"{hidden_size} and num_attention_heads={num_attention_heads}."
)
if rope_parameters is None:
rope_parameters = {
"rope_type": "default",
"rope_theta": float(rope_theta or 10_000.0),
}
else:
rope_parameters = dict(rope_parameters)
rope_parameters.setdefault("rope_type", "default")
if "rope_theta" not in rope_parameters:
rope_parameters["rope_theta"] = float(
rope_theta or 10_000.0
)
if rope_parameters["rope_type"] != "default":
raise ValueError(
"PUBLIC RiXIS (x1x) arch currently supports "
"the default rotary-position formulation only."
)
layer_types = kwargs.pop(
"layer_types",
["full_attention"] * num_hidden_layers,
)
if len(layer_types) != num_hidden_layers:
raise ValueError(
"layer_types must contain exactly num_hidden_layers entries."
)
kwargs.setdefault("is_decoder", True)
kwargs.setdefault("is_encoder_decoder", False)
self.vocab_size = vocab_size
self.hidden_size = hidden_size
self.intermediate_size = intermediate_size
self.num_hidden_layers = num_hidden_layers
self.num_attention_heads = num_attention_heads
self.num_key_value_heads = num_key_value_heads
self.head_dim = head_dim
self.hidden_act = hidden_act
self.max_position_embeddings = max_position_embeddings
self.initializer_range = initializer_range
self.rms_norm_eps = rms_norm_eps
self.use_cache = use_cache
self.rope_parameters = rope_parameters
self.sliding_window = sliding_window
self.attention_dropout = attention_dropout
self.layer_types = layer_types
super().__init__(
pad_token_id=pad_token_id,
bos_token_id=bos_token_id,
eos_token_id=eos_token_id,
tie_word_embeddings=tie_word_embeddings,
**kwargs,
)
__all__ = ["RiXIS1Config"]