Instructions to use littlelearner/littlelearner-5b-unbounded-sft-chatty with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use littlelearner/littlelearner-5b-unbounded-sft-chatty with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="littlelearner/littlelearner-5b-unbounded-sft-chatty") messages = [ {"role": "user", "content": "Who are you?"}, ] pipe(messages)# Load model directly from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("littlelearner/littlelearner-5b-unbounded-sft-chatty") model = AutoModelForCausalLM.from_pretrained("littlelearner/littlelearner-5b-unbounded-sft-chatty", device_map="auto") messages = [ {"role": "user", "content": "Who are you?"}, ] inputs = tokenizer.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", ).to(model.device) outputs = model.generate(**inputs, max_new_tokens=40) print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use littlelearner/littlelearner-5b-unbounded-sft-chatty with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "littlelearner/littlelearner-5b-unbounded-sft-chatty" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "littlelearner/littlelearner-5b-unbounded-sft-chatty", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/littlelearner/littlelearner-5b-unbounded-sft-chatty
- SGLang
How to use littlelearner/littlelearner-5b-unbounded-sft-chatty 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 "littlelearner/littlelearner-5b-unbounded-sft-chatty" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "littlelearner/littlelearner-5b-unbounded-sft-chatty", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'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 "littlelearner/littlelearner-5b-unbounded-sft-chatty" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "littlelearner/littlelearner-5b-unbounded-sft-chatty", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }' - Docker Model Runner
How to use littlelearner/littlelearner-5b-unbounded-sft-chatty with Docker Model Runner:
docker model run hf.co/littlelearner/littlelearner-5b-unbounded-sft-chatty
littlelearner-5b-unbounded-sft-chatty
5B unbounded-control chat model with general chat, model identity, and answer-format steerability installed by a behavior SFT on the cooloff-blend base.
Part of the LittleLearner scale-up study (pedagogically-controlled knowledge exposure): Qwen3 dense LMs trained on a corpus filtered to U.S. K-5 material (bounded) vs an unfiltered FineWeb-Edu corpus (unbounded), to measure what an interpretable knowledge boundary costs and grants. This repo is the unbounded side of that pair, so it has no knowledge boundary; it identifies itself as "LittleLearner Control".
Model
- Architecture: Qwen3 dense (
Qwen3ForCausalLM), notrust_remote_code. - Size: 5.041B params, hidden 3072, 44 layers, 24 query / 8 KV heads, FFN 9216. Context: 4096.
- Tokenizer: custom 64k byte-level BPE with per-digit splitting (ChatML special tokens).
- Pretraining: 88B tokens of unfiltered FineWeb-Edu (score >= 2, no grade filter). WSD schedule, sharded Muon, MXFP8, Megatron-Core on 8xB200. The cooloff carries a 5% SFT blend drawn from the same unbounded distribution.
- Behavior SFT: one epoch on the blend base with fp32 master parameters, lr 1e-5: unbounded math CoT (30k) + general chat (15k) + GSM8K (6.9k) + format-control pairs (answer-only, show-steps, length constraints, in both the user turn and the system prompt) + LittleLearner Control identity data. About 38% of examples carry behavior data.
Evaluation
Chat MathCAMPS, paper-filtered, K-5 mean of grades 2-5, n=64 samples, no system prompt:
- pass@64 79.8, first-sample pass@1 29.4
The parent model without the behavior SFT scores 81.2 / 45.5 under the same procedure. Coverage is held; the first-sample cost is the price of the behavior install, and it grows with scale across this family. Reinforcement learning on verifiable answers recovers first-sample accuracy if that matters more than chat behavior.
Behavior probes (greedy):
- identity answered correctly as LittleLearner Control on every probe question
- casual prompts get conversational replies rather than a math problem
- answer-format obedience: user-turn instruction 1.00, held-out system prompt 0.95
Limitations
Format directives suppress accuracy. The model obeys instructions about answer format, and an instruction that reads as "be brief" or "answer only" removes the chain of thought that the arithmetic depends on. Measured on 300 K-5 MathCAMPS problems, greedy:
| prompt condition | accuracy |
|---|---|
| bare user turn | 31.7% |
| neutral system prompt, no format clause | 36.0% |
| system prompt specifying an answer format | 21.3% |
| answer-only system prompt | 19.3% |
| 3 chain-of-thought exemplars in context | 39.3% |
| answer-only system prompt + 3 exemplars | 41.3% |
For accuracy, prompt it with a bare question or with a few worked exemplars, and avoid clauses that specify a terse answer format. Exemplars override a terse system prompt, so few-shot is the robust setup when a harness must keep its own system prompt.
Verbosity. 28% of samples at n=64 do not terminate within 512 new tokens; about half of those
have already produced their answer line and continue past it. Allow at least 512 new tokens, and
prefer a stop at <|im_end|>.
Persona wording is a research draft and may change. The model is a small research artifact trained on a narrow data mixture: it is not a general assistant, and it confabulates on questions outside its training distribution.
Usage
# transformers (chat)
from transformers import AutoModelForCausalLM, AutoTokenizer
repo = "manueldeprada/littlelearner-5b-unbounded-sft-chatty"
tok = AutoTokenizer.from_pretrained(repo)
model = AutoModelForCausalLM.from_pretrained(repo, dtype="bfloat16", device_map="cuda")
msgs = [{"role": "user", "content": "Liam has 3 apples and buys 4 more. How many apples does he have?"}]
ids = tok.apply_chat_template(msgs, add_generation_prompt=True, return_tensors="pt").to(model.device)
out = model.generate(ids)
print(tok.decode(out[0, ids.shape[1]:], skip_special_tokens=True))
# vLLM
from vllm import LLM
repo = "manueldeprada/littlelearner-5b-unbounded-sft-chatty"
llm = LLM(repo)
msgs = [{"role": "user", "content": "Liam has 3 apples and buys 4 more. How many apples does he have?"}]
print(llm.chat(msgs)[0].outputs[0].text)
- Downloads last month
- 1