Instructions to use altslate/JugnuLM-110M-R2 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use altslate/JugnuLM-110M-R2 with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="altslate/JugnuLM-110M-R2", trust_remote_code=True)# Load model directly from transformers import AutoModelForCausalLM model = AutoModelForCausalLM.from_pretrained("altslate/JugnuLM-110M-R2", trust_remote_code=True, device_map="auto") - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use altslate/JugnuLM-110M-R2 with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "altslate/JugnuLM-110M-R2" # 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-R2", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }'Use Docker
docker model run hf.co/altslate/JugnuLM-110M-R2
- SGLang
How to use altslate/JugnuLM-110M-R2 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-R2" \ --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-R2", "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-R2" \ --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-R2", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }' - Docker Model Runner
How to use altslate/JugnuLM-110M-R2 with Docker Model Runner:
docker model run hf.co/altslate/JugnuLM-110M-R2
JugnuLM-110M-R2 (value residuals + Muon)
What "R2" means. This is rung 2 of the JugnuLM phase-2 ablation ladder. We take rung R1 β JugnuLM-110M-R1 (value residuals) β and add one change: we swap the optimizer to Muon for the 2D hidden matrices, holding everything else fixed (same value-residual architecture, data, tokens, schedule shape, batch, seed). The ladder keeps a lever only if it beats the previous rung. R2 does, so it's kept.
What changed: the Muon optimizer
R0 and R1 trained with AdamW on every parameter. R2 uses Muon β Newton-Schulz
orthogonalized momentum updates β on the 2D hidden weight matrices (attention + MLP,
81.4M params), and keeps AdamW for the rest (tied embedding/head, RMSNorm gains, and
the 22 value-residual vr_lambda scalars, 28.3M params). Muon's advantage is known to be
largest at exactly this scale (sub-150M) and to shrink as models grow.
Both optimizers ride one shared cosine LR multiplier: Muon peak 2e-2, AdamW peak 1.5e-3,
each annealed to 10% of peak.
Result vs the R1 and R0 rungs
| 110M rung | BLiMP β | ARC-Easy β | WikiText-2 byte-ppl β |
|---|---|---|---|
| R0 β baseline | 81.25 | 52.48 | 1.95 |
| R1 β + value residuals | 81.10 | 54.67 | 1.940 |
| R2 β + Muon | 80.78 | 56.10 | 1.932 |
Muon lifts ARC-Easy by +1.43 over R1 (54.67 β 56.10) and lowers perplexity, at a small
BLiMP dip (β0.32, ~2Γ SE). Across the two ladder rungs ARC-Easy has climbed +3.6
(52.48 β 56.10) while BLiMP stayed ~flat β steadily closing the reasoning gap to the
125β143M leaderboard models. Evaluated with EleutherAI lm-evaluation-harness.
Training-efficiency note. Muon's convergence lead was largest early β val-perplexity was β26% vs R1 at step 1000 β and compressed to ~β1% by the end of the fixed 8.4B-token budget (the classic "Muon wins the sprint, converges toward AdamW" pattern). Notably, the downstream ARC gain persisted even as the final perplexity gap narrowed.
β οΈ Loading β requires trust_remote_code
Value residuals are a custom attention pathway, so this model must be loaded with the included modeling file. Loading it as a stock Qwen3 silently drops the residual and understates quality.
from transformers import AutoModelForCausalLM, AutoTokenizer
tok = AutoTokenizer.from_pretrained("altslate/JugnuLM-110M-R2")
model = AutoModelForCausalLM.from_pretrained("altslate/JugnuLM-110M-R2", 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 to R1: Qwen3-arch + value-residual pathway, 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 (sample-10BT), shared cosine schedule (Muon 2e-2, AdamW 1.5e-3, β 10% floor), ~0.5M-token global batch, bf16, DDP on 4Γ RTX PRO 4500 Blackwell. Only the optimizer differs from R1.
Intended use & limitations
Research base model (not instruction-tuned). Fluent English continuation and reasonable recall for its size; limited multi-step reasoning, occasional repetition, English-only. Not for production.
Links
- Previous rung: altslate/JugnuLM-110M-R1
- Baseline: altslate/JugnuLM-110M
- Training code & ablation ladder: https://github.com/AltSlate-Labs/jugnu
- Downloads last month
- -