Text Generation
Transformers
Safetensors
English
jugnu_vr
tiny-lm
qwen3
value-residual
muon
knowledge-distillation
ablation
custom_code
Instructions to use altslate/JugnuLM-110M-R4a with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use altslate/JugnuLM-110M-R4a with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="altslate/JugnuLM-110M-R4a", trust_remote_code=True)# pip install -U transformers accelerate # Load model directly from transformers import AutoModelForCausalLM model = AutoModelForCausalLM.from_pretrained("altslate/JugnuLM-110M-R4a", trust_remote_code=True, device_map="auto") - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use altslate/JugnuLM-110M-R4a with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "altslate/JugnuLM-110M-R4a" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "altslate/JugnuLM-110M-R4a", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }'Use Docker
docker model run hf.co/altslate/JugnuLM-110M-R4a
- SGLang
How to use altslate/JugnuLM-110M-R4a with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "altslate/JugnuLM-110M-R4a" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "altslate/JugnuLM-110M-R4a", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "altslate/JugnuLM-110M-R4a" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "altslate/JugnuLM-110M-R4a", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }' - Docker Model Runner
How to use altslate/JugnuLM-110M-R4a with Docker Model Runner:
docker model run hf.co/altslate/JugnuLM-110M-R4a
|
Download README.md from altslate/JugnuLM-110M-R4a: direct link, hf CLI and curl.
- Browser
- Download file 4.45 kB
-
https://huggingface.co/altslate/JugnuLM-110M-R4a/resolve/main/README.md
- Command line
-
hf download hf://altslate/JugnuLM-110M-R4a/README.md
-
curl -L -o README.md https://huggingface.co/altslate/JugnuLM-110M-R4a/resolve/main/README.md
4.45 kB
| license: apache-2.0 | |
| language: | |
| - en | |
| library_name: transformers | |
| pipeline_tag: text-generation | |
| tags: | |
| - tiny-lm | |
| - qwen3 | |
| - value-residual | |
| - muon | |
| - knowledge-distillation | |
| - ablation | |
| datasets: | |
| - HuggingFaceFW/fineweb-edu | |
| # JugnuLM-110M-R4a (value residuals + Muon + logit distillation) | |
| **What "R4a" means.** Rung 4 of the JugnuLM phase-2 ablation ladder — the first | |
| **knowledge-distillation** attempt. We take rung **R2** | |
| ([JugnuLM-110M-R2](https://huggingface.co/altslate/JugnuLM-110M-R2), value residuals + Muon) | |
| and add **offline top-k logit distillation** from a teacher, holding data/optimizer/schedule | |
| fixed. This is the **"a" variant** — a deliberately KD-heavy setting; a rebalanced **R4b** follows. | |
| ## What changed: logit KD from SmolLM2-1.7B | |
| The frozen teacher **[SmolLM2-1.7B](https://huggingface.co/HuggingFaceTB/SmolLM2-1.7B)** (base; | |
| shares our SmolLM2 tokenizer, 49,152 vocab) was run over ~6B tokens of FineWeb-Edu, storing its | |
| **top-16 next-token logits** per position. The student trains to match that distribution: | |
| > `loss = α·CE + (1−α)·τ²·KL(student ‖ teacher_top16) + z-loss`, with **α=0.5, τ=2**. | |
| ## Result — distillation lifts ARC, but this setting over-weights KD | |
| | 110M rung | BLiMP ↑ | ARC-Easy ↑ | WikiText-2 byte-ppl ↓ | | |
| |---|---|---|---| | |
| | R2 — value residuals + Muon | 80.78 | 56.10 | **1.932** | | |
| | **R4a — + logit KD (α=0.5, τ=2)** | 80.39 | **56.99** | 2.178 | | |
| **ARC-Easy reached 56.99 — the best of any JugnuLM rung, essentially matching GPT-X2-125M's | |
| 57.07** — confirming distillation is the right lever for reasoning. **However**, with α=0.5 and | |
| τ=2 the KD term carries ~4× the weight of the hard-label loss, so the student over-imitates the | |
| teacher's softened distribution at the cost of sharp next-token prediction: **WikiText perplexity | |
| rose to 2.178** (from R2's 1.932). On the leaderboard's blended efficiency score this perplexity | |
| regression outweighs the ARC gain, so **R4a is not kept as the ladder base** — but it validates | |
| the lever and motivates the rebalanced **R4b (α=0.7, τ=1)**, which aims to keep the ARC win | |
| without the perplexity damage. Evaluated with EleutherAI `lm-evaluation-harness`. | |
| ## ⚠️ Loading — requires `trust_remote_code` | |
| Value residuals are a custom attention pathway; loading as a stock Qwen3 silently drops them. | |
| ```python | |
| from transformers import AutoModelForCausalLM, AutoTokenizer | |
| tok = AutoTokenizer.from_pretrained("altslate/JugnuLM-110M-R4a") | |
| model = AutoModelForCausalLM.from_pretrained("altslate/JugnuLM-110M-R4a", trust_remote_code=True) | |
| ids = tok("The theory of relativity was developed by", return_tensors="pt").input_ids | |
| print(tok.decode(model.generate(ids, max_new_tokens=30, repetition_penalty=1.3)[0], skip_special_tokens=True)) | |
| ``` | |
| ## Architecture & training | |
| Identical architecture/optimizer to R2 (value residuals + Muon): Qwen3-arch, **23 layers × | |
| 576**, GQA 9/3, RoPE, SwiGLU, RMSNorm, QK-Norm, tied embeddings, SmolLM2 tokenizer (49,152), | |
| z-loss 1e-4. Trained from scratch on ~8.4B tokens of FineWeb-Edu with the KD loss above, Muon | |
| (peak 2e-2) + AdamW (1.5e-3) on a shared cosine, ~0.5M-token global batch, bf16, DDP on 4× RTX | |
| PRO 4500 Blackwell. Teacher logits precomputed offline (top-16 over a 6B-token region). | |
| ## Intended use & limitations | |
| Research **base** model (not instruction-tuned). Best-in-family ARC-Easy reasoning, but higher | |
| perplexity than R1/R2 due to the KD-heavy setting. English-only, occasional repetition. Not for | |
| production. For a more balanced distilled model, see R4b (when released). | |
| ## Links | |
| - Base rung: [altslate/JugnuLM-110M-R2](https://huggingface.co/altslate/JugnuLM-110M-R2) | |
| - Teacher: [HuggingFaceTB/SmolLM2-1.7B](https://huggingface.co/HuggingFaceTB/SmolLM2-1.7B) | |
| - Training code & ablation ladder: https://github.com/AltSlate-Labs/jugnu | |
| ## Paper | |
| This model is described in [*Depth and Scale in the Sub-150M Regime: JugnuLM-53M vs JugnuLM-110M*](https://arxiv.org/abs/2609.14715) | |
| (arXiv:2609.14715 · [HF Papers](https://huggingface.co/papers/2609.14715)). | |
| ```bibtex | |
| @misc{rajput2026jugnu, | |
| title = {Depth and Scale in the Sub-150M Regime: JugnuLM-53M vs JugnuLM-110M}, | |
| author = {Rajput, Dushyant and Chauhan, Nirdesh and Kosaraju, Siddharth}, | |
| year = {2026}, | |
| eprint = {2609.14715}, | |
| archivePrefix = {arXiv}, | |
| primaryClass = {cs.AI}, | |
| url = {https://arxiv.org/abs/2609.14715} | |
| } | |
| ``` | |