Instructions to use SmallAICreator/AuroraGPT-Think-v3 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use SmallAICreator/AuroraGPT-Think-v3 with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="SmallAICreator/AuroraGPT-Think-v3") messages = [ {"role": "user", "content": "Who are you?"}, ] pipe(messages)# Load model directly from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("SmallAICreator/AuroraGPT-Think-v3") model = AutoModelForCausalLM.from_pretrained("SmallAICreator/AuroraGPT-Think-v3", 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
- llama.cpp
How to use SmallAICreator/AuroraGPT-Think-v3 with llama.cpp:
Install (macOS, Linux)
curl -LsSf https://llama.app/install.sh | sh # Start a local OpenAI-compatible server with a web UI: llama serve -hf SmallAICreator/AuroraGPT-Think-v3:Q8_0 # Run inference directly in the terminal: llama cli -hf SmallAICreator/AuroraGPT-Think-v3:Q8_0
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf SmallAICreator/AuroraGPT-Think-v3:Q8_0 # Run inference directly in the terminal: llama cli -hf SmallAICreator/AuroraGPT-Think-v3:Q8_0
Use pre-built binary
# Download pre-built binary from: # https://github.com/ggerganov/llama.cpp/releases # Start a local OpenAI-compatible server with a web UI: ./llama-server -hf SmallAICreator/AuroraGPT-Think-v3:Q8_0 # Run inference directly in the terminal: ./llama-cli -hf SmallAICreator/AuroraGPT-Think-v3:Q8_0
Build from source code
git clone https://github.com/ggerganov/llama.cpp.git cd llama.cpp cmake -B build cmake --build build -j --target llama-server llama-cli # Start a local OpenAI-compatible server with a web UI: ./build/bin/llama-server -hf SmallAICreator/AuroraGPT-Think-v3:Q8_0 # Run inference directly in the terminal: ./build/bin/llama-cli -hf SmallAICreator/AuroraGPT-Think-v3:Q8_0
Use Docker
docker model run hf.co/SmallAICreator/AuroraGPT-Think-v3:Q8_0
- LM Studio
- Jan
- vLLM
How to use SmallAICreator/AuroraGPT-Think-v3 with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "SmallAICreator/AuroraGPT-Think-v3" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "SmallAICreator/AuroraGPT-Think-v3", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/SmallAICreator/AuroraGPT-Think-v3:Q8_0
- SGLang
How to use SmallAICreator/AuroraGPT-Think-v3 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 "SmallAICreator/AuroraGPT-Think-v3" \ --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": "SmallAICreator/AuroraGPT-Think-v3", "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 "SmallAICreator/AuroraGPT-Think-v3" \ --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": "SmallAICreator/AuroraGPT-Think-v3", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }' - Ollama
How to use SmallAICreator/AuroraGPT-Think-v3 with Ollama:
ollama run hf.co/SmallAICreator/AuroraGPT-Think-v3:Q8_0
- Unsloth Desktop
- Pi
How to use SmallAICreator/AuroraGPT-Think-v3 with Pi:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf SmallAICreator/AuroraGPT-Think-v3:Q8_0
Configure the model in Pi
# Install Pi: npm install -g @earendil-works/pi-coding-agent # Add to ~/.pi/agent/models.json: { "providers": { "llama-cpp": { "baseUrl": "http://localhost:8080/v1", "api": "openai-completions", "apiKey": "none", "models": [ { "id": "SmallAICreator/AuroraGPT-Think-v3:Q8_0" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Docker Model Runner
How to use SmallAICreator/AuroraGPT-Think-v3 with Docker Model Runner:
docker model run hf.co/SmallAICreator/AuroraGPT-Think-v3:Q8_0
- Lemonade
How to use SmallAICreator/AuroraGPT-Think-v3 with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull SmallAICreator/AuroraGPT-Think-v3:Q8_0
Run and chat with the model
lemonade run user.AuroraGPT-Think-v3-Q8_0
List all available models
lemonade list
- Hermes Agent
How to use SmallAICreator/AuroraGPT-Think-v3 with Hermes Agent:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf SmallAICreator/AuroraGPT-Think-v3:Q8_0
Configure Hermes
# Install Hermes: curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash hermes setup # Point Hermes at the local server: hermes config set model.provider custom hermes config set model.base_url http://127.0.0.1:8080/v1 hermes config set model.default SmallAICreator/AuroraGPT-Think-v3:Q8_0
Run Hermes
hermes
- Atomic Chat
- OpenClaw
How to use SmallAICreator/AuroraGPT-Think-v3 with OpenClaw:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf SmallAICreator/AuroraGPT-Think-v3:Q8_0
Configure OpenClaw
# Install OpenClaw: npm install -g openclaw@latest # Register the local server and set it as the default model: openclaw onboard --non-interactive --mode local \ --auth-choice custom-api-key \ --custom-base-url http://127.0.0.1:8080/v1 \ --custom-model-id "SmallAICreator/AuroraGPT-Think-v3:Q8_0" \ --custom-provider-id llama-cpp \ --custom-compatibility openai \ --custom-text-input \ --accept-risk \ --skip-health
Run OpenClaw
openclaw agent --local --agent main --message "Hello from Hugging Face"
AuroraGPT-Think-v3 (700M)
A 707M-parameter model by UltraLabs that reasons inside <think>...</think> on
every prompt, trained with full-parameter SFT on top of
AuroraGPT-Qwen-Distill.
This card leads with the limitations, because they are large and they are the most useful thing to know before you download 1.4GB.
Honest evaluation
Measured, not estimated:
| benchmark | score |
|---|---|
| GSM8K (40 problems, chat format, greedy) | 1/40 = 2.5% |
| GSM8K — the base model it was trained from | 0/40 = 0.0% |
It cannot do GSM8K. 2.5% vs 0.0% on 40 problems is inside the noise (±7.7pp); the honest statement is that neither this model nor its base can solve grade-school word problems reliably. On a hand-picked 5-problem probe set it scores 3/5, but those probes match the shapes it was explicitly drilled on, so that number measures training coverage, not capability. Off-distribution, it falls apart.
What actually goes wrong
1. It sets problems up correctly and then fumbles the arithmetic.
17 × 23 → <think> 17 x 20 = 340, 17 x 3 = 51, 340 + 51 = 411 </think> (391)
clock → <think> 1060 - 855 = 155 </think> (205)
The decomposition is right every time. The digits are wrong. This is not fixable with
more training data, and the reason is the tokenizer: AuroraGPT's 32k BPE splits numbers
into inconsistent multi-digit chunks — 340 → ['3','40'], 391 → ['39','1'],
51 → ['51']. There is no column alignment for the model to learn. Tokenizers that
split numbers into single digits make carrying learnable; this one does not, and it is
baked into 22.4B tokens of pretraining.
2. On unfamiliar word problems it misreads the question, inventing operations
("16 eggs/day * 3 eggs/day = 48 eggs").
3. A known defect: shallow chat think-blocks leak into reasoning. Forcing 100% think
meant synthesising <think> blocks for ~10k chat turns as a restate-and-plan stub. Those
stubs are ~18% of the corpus and sometimes replace real reasoning on a math prompt:
<think>
The user asks: A robe takes 2 bolts of blue fiber and half that much white fiber. How
I'll answer directly and keep it concrete, starting from: The robe takes 2 bolts...
</think>
That is a data-design bug, not a scale limit, and it is the first thing to fix in a v4.
What it is actually good at
- Always reasons. 100% of replies contain a
<think>block. There is no gate to misfire — the previous version trained a 73/27 think/direct split and learned an inverted gate, skipping reasoning on exactly the hardest prompts. - Structurally sound reasoning. It converts clock times correctly, chains syllogisms correctly, and identifies the bat-and-ball trap before answering.
- Verifies instead of flailing. It does not fabricate an error to "catch" — an earlier version trained on injected mistakes and learned to revise answers that were already correct (3 apples → 6 → "8"). That behaviour is gone.
- Chat feel inherited from the Qwen3-4B-distilled base.
Training
Full-parameter SFT, 2 epochs, sequence-packed, on Kaggle TPU v5e-8 (JAX/Flax + optax, GSPMD sharding): 806 steps, 26.4M tokens, 8.8 minutes, loss 0.6619 → 0.2716.
Corpus: 54,238 conversations, 100% with a think block —
| section | share |
|---|---|
| math (MetaMathQA, GSM8K, Orca-Math, verified-short OpenR1) | 44% |
| chat (SmolTalk + trivial turns) | 19% |
| code (CodeAlpaca task-anchored, MBPP) | 13% |
| targeted drills (distributive multiply, clock, syllogism, algebra traps, multi-step) | 25% |
All 13,326 procedurally generated answers were independently re-validated in Python (0 mismatches) after an earlier build shipped 96 wrong answers from integer division.
Chat format
<|system|>{system}<|end|><|user|>{user}<|end|><|assistant|>{reply}<|end|>
EOS is <|end|> (id 5). Context length 2048.
from transformers import AutoModelForCausalLM, AutoTokenizer
tok = AutoTokenizer.from_pretrained("SmallAICreator/AuroraGPT-Think-v3")
model = AutoModelForCausalLM.from_pretrained("SmallAICreator/AuroraGPT-Think-v3")
ids = tok.apply_chat_template([{"role": "user", "content": "What is 25% of 120?"}],
tokenize=True, add_generation_prompt=True,
return_tensors="pt")
print(tok.decode(model.generate(ids, max_new_tokens=200)[0][ids.shape[1]:],
skip_special_tokens=True))
On-device
AuroraGPT-Think-v3.Q8_0.gguf (753MB) is included and runs in llama.cpp / any GGUF
chat app, with the chat template embedded.
The right way to use it for arithmetic
Don't ask it to compute. The base model has working tool-calling (15/15 valid tool calls across varied system-prompt wordings) and its chat template declares tools. The correct architecture for this model is reason in the think block, delegate the digits to a calculator tool — which sidesteps the tokenizer problem entirely instead of fighting it.
Made by UltraLabs.
- Downloads last month
- 210
Model tree for SmallAICreator/AuroraGPT-Think-v3
Base model
SmallAICreator/AuroraGPT-Qwen-Distill