QraXAi-Basic-32M / README.md
coderian's picture
QraXAi modeli eklendi
d073da3 verified
|
Raw History Blame Contribute Delete
3.86 kB
---
license: apache-2.0
language:
- en
library_name: transformers
pipeline_tag: text-generation
datasets:
- exnivo/tinybrain-pretrain-corpus-2b
tags:
- causal-lm
- gpt2
- small-language-model
- tinybrain
---
# QraXAi
QraXAi is a small decoder-only transformer language model (~32M parameters) trained
from scratch on English text. It was built as a minimal, readable GPT-style
implementation with a custom architecture (see `model.py`).
This is a **base model**: it continues text, it does not follow instructions.
## Model details
| | |
|---|---|
| Architecture | GPT-style causal decoder-only transformer |
| Parameters | 32.1M |
| Layers | 8 |
| Hidden size | 256 |
| Attention heads | 8 (head dim 32) |
| Context length | 256 tokens |
| Vocabulary | 50,257 |
| Tokenizer | GPT-2 BPE (`GPT2TokenizerFast`) |
| Positional encoding | Learned absolute embeddings |
| Normalization | Pre-LayerNorm |
| MLP | GELU, 4x expansion |
| Weight dtype | float32 |
| Auto class | `AutoModelForCausalLM` (custom code, `trust_remote_code=True`) |
## Uses
**Direct use:** text completion — give an English prompt, get a continuation.
**Out of scope:** chat / instruction following (not fine-tuned), factual question
answering, non-English text, prompts longer than 256 tokens (prompt + generated
tokens combined).
## Limitations
- **Undertrained:** only 1 epoch (~61M tokens) was trained. Training loss went from
10.85 (random) to 6.02 (perplexity ~410), so the output is locally plausible but
often incoherent.
- **Short context:** the model was trained with 256-token blocks and cannot attend
beyond that.
- **No KV cache:** generation recomputes the full context at every step, so sampling
is slow.
- **No attention mask / padding support:** generate a single sequence at a time;
padded batches would produce wrong results.
- English only; may reproduce biases present in the training corpus.
## How to use
```python
import torch
from transformers import AutoModelForCausalLM, GPT2TokenizerFast
model_id = "coderian/qraxai"
tokenizer = GPT2TokenizerFast.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
model_id,
trust_remote_code=True, # custom architecture, code ships with the model
).eval()
prompt = "The purpose of this experiment is"
inputs = tokenizer(prompt, return_tensors="pt")
with torch.no_grad():
outputs = model.generate(
**inputs,
max_new_tokens=64,
do_sample=True,
temperature=0.8,
top_k=50,
pad_token_id=tokenizer.eos_token_id,
)
print(tokenizer.decode(outputs[0]))
```
## Training
**Data:** [`exnivo/tinybrain-pretrain-corpus-2b`](https://huggingface.co/datasets/exnivo/tinybrain-pretrain-corpus-2b)
(first 75,000 rows) — English educational / web / code text, ~284 MB, ~61M GPT-2 tokens.
**Procedure**
| Setting | Value |
|---|---|
| Epochs | 1 |
| Blocks / batch | 256 tokens / 16 |
| Tokens per step | 4,096 |
| Optimizer steps | 15,584 |
| Optimizer | AdamW |
| Learning rate | 3e-4 (constant, no warmup) |
| Gradient clipping | 1.0 |
| Precision | bf16 autocast, fp32 master weights |
| Hardware | NVIDIA RTX 4060 Laptop (8 GB) |
| Time | ~21 min / epoch |
| Final loss | 6.02 (from 10.85 at initialization) |
No validation split or benchmark evaluation was run — use the loss numbers as a
rough signal of quality only.
## Files
```
config.json # GPTConfig + auto_map
model.safetensors # 32.1M parameters, fp32
model.py # QraXAiForCausalLM
configuration_qraxai.py # GPTConfig
tokenizer.json # GPT-2 BPE
tokenizer_config.json
generation_config.json
```
## License
Apache-2.0 (see `LICENSE`). The tokenizer files come from OpenAI's GPT-2 release
(MIT license). The training corpus is credited above; check its terms before
redistributing derivatives.