nabin2004/nebium-lichess-uci
Updated • 5
762-million parameter causal Transformer, the flagship model of the Nebium family, optimized for tactical sequence modeling and move legality.
Nebium-Large is built on a decoder-only causal Transformer architecture with modern architectural primitives:
| Specification | Parameter Value |
|---|---|
| Model Tier | Nebium-Large |
| Parameter Count | 762M |
| Hidden Dimension ($d_{model}$) | 1280 |
| Attention Heads ($n_{heads}$) | 20 |
| Transformer Layers ($n_{layers}$) | 36 |
| Context Window ($L_{max}$) | 1024 tokens |
| Vocabulary Size ($V$) | 5000 (Byte-Pair Encoding over UCI plies) |
| Positional Embeddings | Rotary Position Embeddings (RoPE, $\theta = 10000$) |
| Activation Function | SwiGLU |
| Layer Normalization | RMSNorm (pre-normalization) |
| Attention Mechanism | Causal scaled dot-product attention |
| Base Learning Rate | 1.5e-4 (Cosine decay with linear warmup) |
| Weight Decay | 0.1 |
Following Hoffmann et al. (2022) scaling laws, compute-optimal training balances parameter count $N$ with token allocation $D$:
where $E = 1.69$, $A = 406.4$, $B = 410.7$, $\alpha = 0.34$, $\beta = 0.28$.
| Filename | Description | Format |
|---|---|---|
model.pt |
Trained model weights (state dictionary) | PyTorch binary |
model_config.json |
Model architecture hyperparameter configuration | JSON |
tokenizer.json |
Trained BPE tokenizer vocabulary and merge tables | Hugging Face Tokenizers JSON |
README.md |
Model specification and benchmark documentation | Markdown |
For local deployment and quantized execution with llama.cpp or Ollama, download the GGUF artifact from nabin2004/nebium-large-gguf.
import json
import torch
from src.models.transformer.nebium import Nebium
from src.data.tokenizer import ChessTokenizer
# 1. Initialize and load the tokenizer
tokenizer = ChessTokenizer()
tokenizer.load("tokenizer.json")
# 2. Instantiate model architecture from configuration
with open("model_config.json", "r", encoding="utf-8") as f:
config = json.load(f)
model = Nebium(**config)
state_dict = torch.load("model.pt", map_location="cpu", weights_only=True)
model.load_state_dict(state_dict)
model.eval()
# 3. Autoregressive move generation
prompt = "e2e4 e7e5 g1f3"
input_ids = torch.tensor([[tokenizer.bos_id] + tokenizer.encode(prompt)], dtype=torch.long)
attention_mask = torch.ones_like(input_ids)
with torch.no_grad():
output = model.generate(input_ids, attention_mask, max_new_tokens=10, temperature=0.7)
generated_text = tokenizer.decode(output[0].tolist())
print("Generated continuation:", generated_text)
This model is licensed under the MIT License. If using Nebium in your research, cite the repository:
@misc{nebium_large_2026,
author = {Oli, Nabin},
title = {Nebium-Large: Causal Transformer for Next-Move Prediction in Chess},
year = {2026},
publisher = {Hugging Face},
journal = {Hugging Face Model Hub},
howpublished = {\url{https://huggingface.co/nabin2004/nebium-large}}
}