AAIE-Distilled Dense

A ~354M-parameter dense transformer trained on general web text via knowledge distillation against a Qwen/Qwen2.5-1.5B teacher. This is the raw base checkpoint โ€” it has not seen any instruction-tuning or task-specific fine-tuning, so it behaves like a classic base language model: it continues text plausibly, but will not reliably follow instructions phrased as questions or requests (e.g. "Provide feedback on the following...").

If you want a model that follows general instructions, see the companion AAIE-Distilled Dense Instruct model (same base weights, further trained on SmolTalk). If you want the assignment-feedback-specialized model, that's a separate export built on top of both of these stages โ€” see this project's TECHNICAL_REPORT.md.

Architecture

GQA attention (8 query heads / 2 KV heads) + RoPE + SwiGLU FFN + RMSNorm + tied embeddings, 20 layers, d_model=512, 354M parameters. Tokenizer: same as Qwen/Qwen2.5-0.5B (151,936 vocab).

Data

Dataset Size Role
HuggingFaceFW/fineweb-edu (sample-10BT subset) ~70B tokens (100,000 steps x 131,072 tokens/step) General web-text language modeling.
Qwen/Qwen2.5-1.5B (frozen teacher) โ€” Distillation signal: loss = 0.5 * CE(labels) + 0.5 * KD(teacher logits, T=2.0).

Training settings

Value
Base random initialization
Optimizer AdamW, weight decay 0.1
LR schedule warmup 1,000 steps -> 3e-4 peak, cosine decay to 3e-5
Batch micro-batch 4 x grad-accum 32 x seq-len 1024 = 131,072 tokens/step
Steps 100,000
Grad clip 1.0
Sequence length 1024
Hardware single A100 (40GB), SLURM cluster

Usage

This is a base model โ€” prompt it as a text continuation, not an instruction:

from transformers import AutoModelForCausalLM, AutoTokenizer

repo = "your-username/aaie-ddense-pretrain"  # after pushing, see push_to_hub.py
tokenizer = AutoTokenizer.from_pretrained(repo)
model = AutoModelForCausalLM.from_pretrained(repo, trust_remote_code=True, device_map="auto")

inputs = tokenizer("The purpose of a database index is", return_tensors="pt").to(model.device)
out = model.generate(**inputs, max_new_tokens=60, use_cache=True, do_sample=True, temperature=0.8)
print(tokenizer.decode(out[0, inputs["input_ids"].shape[1]:], skip_special_tokens=True))

trust_remote_code=True is required (custom architecture, see modeling_aaieddense.py). use_cache=True (the default) enables real KV-caching for .generate() โ€” see GQAAttentionCached in modeling_aaieddense.py.

Known limitations

  • Not instruction-tuned: asking it a question or giving it an instruction will often just produce a plausible-sounding continuation of the prompt text rather than an answer/response โ€” this is expected base-model behavior, not a bug.
  • Small model, moderate pretraining budget: 354M params on ~70B tokens is well below compute-optimal scale for models trained by major labs; expect weaker world knowledge and reasoning than similarly-sized production models trained on much larger corpora.
  • Fluency and factual reliability were not evaluated for this checkpoint specifically โ€” see AAIE-Distilled Dense Instruct and the task-specific model for the evaluations that were run (LLM-judge scoring on IT/CS assignment feedback).
Downloads last month
441
Safetensors
Model size
0.4B params
Tensor type
F32
ยท
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support