Second5M β€” Decoder-Only Transformer Language Model

Second5M is an experimental 4,943,040-parameter decoder-only language model built from scratch in PyTorch. It was pretrained on WikiText-103 and then fine-tuned on conversational data. This is an educational research project with limited conversational ability; it frequently gives incoherent or unrelated responses.

Model Details

Property Value
Architecture Custom decoder-only Transformer, pre-normalization
Total trainable parameters 4,943,040, including tied embeddings
Layers 8
Hidden dimension 192
Attention 6 query heads, 2 key/value heads
FFN dimension 560 (SwiGLU)
Context window 512 tokens
Tokenizer Custom byte-level BPE, vocabulary 8,192
Position encoding Rotary position embeddings (RoPE)
Normalization RMSNorm
Weight tying Token embeddings and output head share weights

Quick Start

Requirements: pip install torch tokenizers huggingface_hub

import sys
import torch
from huggingface_hub import snapshot_download
from tokenizers import Tokenizer

path = snapshot_download("kaafivikrant/Second5M")
sys.path.insert(0, path)
from model import ModelConfig, TinyChatLM

import json
with open(f"{path}/config.json") as f:
    config = json.load(f)
keys = ModelConfig.__dataclass_fields__.keys()
model = TinyChatLM(ModelConfig(**{k: config[k] for k in keys}))
model.load_state_dict(torch.load(f"{path}/pytorch_model.pt", map_location="cpu", weights_only=True))
model.eval()
tokenizer = Tokenizer.from_file(f"{path}/tokenizer.json")

prompt = "Hello! How are you?"
ids = [tokenizer.token_to_id("<|bos|>"), tokenizer.token_to_id("<|user|>")]
ids += tokenizer.encode(prompt).ids
ids += [tokenizer.token_to_id("<|eos|>"), tokenizer.token_to_id("<|assistant|>")]
output = model.generate(torch.tensor([ids]), max_new_tokens=80, temperature=0.7,
                        top_k=40, eos_id=tokenizer.token_to_id("<|eos|>"))
print(tokenizer.decode(output[0, len(ids):].tolist(), skip_special_tokens=True))

The supplied model uses custom PyTorch code; it is not a standard Transformers AutoModel architecture. Download the Python code only from a source you trust.

Architecture

Tokens β†’ tied embeddings β†’ 8 decoder blocks β†’ RMSNorm β†’ tied output head β†’ logits

Each block: RMSNorm β†’ causal grouped-query attention with RoPE β†’ residual
            RMSNorm β†’ SwiGLU feed-forward β†’ residual

Training Details

  • Pretraining: WikiText-103 raw training data, custom tokenizer, 20,000 steps, 655,360,000 sampled tokens, NVIDIA T4. Last recorded validation loss: 3.5913.
  • First supervised fine-tuning: up to 50,000 eligible Smol-Smoltalk conversations; 3,000 steps. Long examples in this stage were truncated from the left, sometimes removing the user prompt.
  • Final supervised fine-tuning: 19,531 prepared training conversations from Empathetic Dialogues, initialized from the preceding chat checkpoint; 3,000 steps. The saved checkpoint records validation loss 3.0663 on that dataset.
  • The final supervised fine-tuning used assistant-turn loss and retained the user request for long examples. Training used AdamW and a cosine learning-rate schedule.
  • Losses from different stages use different data and should not be compared directly. No independent benchmark establishes improved chat quality.

Generation Parameters

generate() accepts max_new_tokens, temperature, top_k, and eos_id.

Limitations

  • Responses to basic greetings have been observed to be incoherent or unrelated.
  • This model has limited knowledge, reasoning, context, and instruction-following ability.
  • It can make factual errors and produce repetitive, inappropriate, or misleading output.
  • It is not suitable for production, high-stakes decisions, or emotional-support use.

Files

File Description
model.py Standalone model definition
pytorch_model.pt Model weights only
config.json Model configuration and final checkpoint metadata
tokenizer.json Byte-level BPE tokenizer

Data and License Information

Pretraining used WikiText, whose dataset card lists CC BY-SA 3.0 and GFDL. Fine-tuning used Smol-Smoltalk and Empathetic Dialogues for LLM, whose repository cards list Apache 2.0. Consult the original datasets and their terms before redistributing or using this model. No model license is asserted here.

Downloads last month
-
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support

Datasets used to train kaafivikrant/Second5M