Instructions to use altslate/JugnuLM-110M-R2plus with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use altslate/JugnuLM-110M-R2plus with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="altslate/JugnuLM-110M-R2plus", trust_remote_code=True)# Load model directly from transformers import AutoModelForCausalLM model = AutoModelForCausalLM.from_pretrained("altslate/JugnuLM-110M-R2plus", trust_remote_code=True, device_map="auto") - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use altslate/JugnuLM-110M-R2plus with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "altslate/JugnuLM-110M-R2plus" # 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-R2plus", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }'Use Docker
docker model run hf.co/altslate/JugnuLM-110M-R2plus
- SGLang
How to use altslate/JugnuLM-110M-R2plus 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-R2plus" \ --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-R2plus", "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-R2plus" \ --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-R2plus", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }' - Docker Model Runner
How to use altslate/JugnuLM-110M-R2plus with Docker Model Runner:
docker model run hf.co/altslate/JugnuLM-110M-R2plus
Value residual scaling, the 25.8% vocabulary tax, and horizontal state grounding in deep-thin SLMs
Hi AltSlate team,
Scaling the R2 recipe to 25.2B tokens on dual RTX PRO 4500 Blackwell GPUs, tracking the ablation ladder from R0 through R3 on the Tiny-ML Leaderboard, and publishing the full methodology on arXiv is great open science. The empirical finding in R1 (+2.2 on ARC-Easy with ResFormer value residuals) and the honest drop in R3 with DCLM provide very clear signals on data curation and deep-thin dynamics.
Looking at your deep-thin geometry (23 layers x 576 hidden size) alongside the learned vr_lambda weights:
The representation grounding signal in vr_lambda = 0.48:
Following MobileLLM's depth-over-width thesis gives 110M models great non-linear capacity, but 23 layers at hidden dimension 576 pushes standard softmax attention toward severe representation collapse in later layers.
The fact that learned vr_lambda scalars settled at a mean of ~0.48 shows that upper attention heads lean heavily on layer 0's value vectors to retain lexical grounding. Without that vertical anchor, token representations drift into diffuse entropy, which explains the 6-point drop when the pathway is dropped.The 25.8% vocabulary tax on deep-thin allocation:
Using the SmolLM2 49,152 tokenizer at hidden dimension 576 means your tied embedding matrix consumes 28,311,552 parameters.
Out of the 109.7M total parameter budget, that single static lookup table accounts for 25.8% of the entire model.
At hidden dimension 576, a full transformer block costs roughly 3.54M parameters. Your static embedding weights equal the parameter budget of 8 complete transformer layers.
Applying a two-stage low-rank factorized projection (49,152 -> 128 -> 576 = ~6.9M params) reclaims over 21.4M parameters. That reclaimed budget could fund widening the hidden dimension to 704 or 768 within the exact same 110M ceiling, giving each attention head higher representational rank.Horizontal state grounding vs vertical value shortcuts:
In an open architecture project called Maba v2 (reference release: https://huggingface.co/AndrewThompson1233/maba-v2-architecture), we explore sub-150M efficiency through a 3:1 macro-topology paired with native NoPE:
We route 75% of depth through Decoupled Gated Delta Attention (DGDA) paired with MABA-SA sparse attention.
Instead of relying on vertical value residuals (skipping from layer 0 into upper layers) to prevent attention collapse, DGDA maintains an associative recurrent state updated via an error-correcting delta rule.
This horizontal delta update continuously subtracts redundant features and prevents state saturation across sequence steps, keeping representations sharp while dropping KV-cache footprint by nearly 40x and ensuring flat O(1) decode latency.
If you are planning an R5 exploration or testing architectural variations for the Tiny-ML Leaderboard, checking out the parameter allocation layout and hybrid state coordination in the Maba v2 repo might provide some useful structural points for deep-thin configurations.
Did the vr_lambda coefficients scale monotonically across the 23 layers, or did mid-depth semantic blocks show a distinct peak in v_0 dependency?
Best,
Andrew
Hi Andrew,
Thanks for the careful read. Your parameter accounting is right: the tied 49k embedding is ~26% of the budget.
We've kept it full-rank so far because with tied weights a rank-128 factorisation also bottlenecks the output logits, but it's a fair ablation and we may run it at ~50M first.
Will check what you are suggesting.
Hi Raj,
That is an exceptionally sharp catch regarding the output softmax bottleneck. With strictly tied weights, collapsing the joint projection to rank-128 caps the rank of the pre-softmax logit matrix at 128, which limits token distribution entropy.
One architectural route that avoids this is asymmetric untying:
Factorize the input embedding table into low rank (49,152 -> 128 -> 576 = ~6.9M params), since input coordinate representation is far more tolerant of low-rank compression.
Untie the LM head to operate at full rank or a wider rank (e.g. rank-256/384 or a direct linear head).
Even with an untied setup, the combined footprint drops from 28.3M down to ~15M params, still freeing up 13M+ parameters (3 to 4 complete 576-dim transformer layers) for active backbone depth.
Testing the ablation curve on the 50M prototype first is definitely a clean, compute-efficient way to measure if the perplexity tradeoff favors deeper layers over embedding rank.
Best of luck with the run, really curious to see the 50M ablation numbers!
Best,
Andrew