Instructions to use Gramscii/SemanticRepair-270M with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- llama.cpp
How to use Gramscii/SemanticRepair-270M 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 Gramscii/SemanticRepair-270M:Q8_0 # Run inference directly in the terminal: llama cli -hf Gramscii/SemanticRepair-270M:Q8_0
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf Gramscii/SemanticRepair-270M:Q8_0 # Run inference directly in the terminal: llama cli -hf Gramscii/SemanticRepair-270M: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 Gramscii/SemanticRepair-270M:Q8_0 # Run inference directly in the terminal: ./llama-cli -hf Gramscii/SemanticRepair-270M: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 Gramscii/SemanticRepair-270M:Q8_0 # Run inference directly in the terminal: ./build/bin/llama-cli -hf Gramscii/SemanticRepair-270M:Q8_0
Use Docker
docker model run hf.co/Gramscii/SemanticRepair-270M:Q8_0
- LM Studio
- Jan
- vLLM
How to use Gramscii/SemanticRepair-270M with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "Gramscii/SemanticRepair-270M" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "Gramscii/SemanticRepair-270M", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/Gramscii/SemanticRepair-270M:Q8_0
- Ollama
How to use Gramscii/SemanticRepair-270M with Ollama:
ollama run hf.co/Gramscii/SemanticRepair-270M:Q8_0
- Unsloth Studio
How to use Gramscii/SemanticRepair-270M with Unsloth Studio:
Install Unsloth Studio (macOS, Linux, WSL)
curl -fsSL https://unsloth.ai/install.sh | sh # Run unsloth studio unsloth studio -H 0.0.0.0 -p 8888 # Then open http://localhost:8888 in your browser # Search for Gramscii/SemanticRepair-270M to start chatting
Install Unsloth Studio (Windows)
irm https://unsloth.ai/install.ps1 | iex # Run unsloth studio unsloth studio -H 0.0.0.0 -p 8888 # Then open http://localhost:8888 in your browser # Search for Gramscii/SemanticRepair-270M to start chatting
Using HuggingFace Spaces for Unsloth
# No setup required # Open https://huggingface.co/spaces/unsloth/studio in your browser # Search for Gramscii/SemanticRepair-270M to start chatting
- Docker Model Runner
How to use Gramscii/SemanticRepair-270M with Docker Model Runner:
docker model run hf.co/Gramscii/SemanticRepair-270M:Q8_0
- Lemonade
How to use Gramscii/SemanticRepair-270M with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull Gramscii/SemanticRepair-270M:Q8_0
Run and chat with the model
lemonade run user.SemanticRepair-270M-Q8_0
List all available models
lemonade list
- Atomic Chat
SemanticRepair-270M
A 270M rewriter that sits behind an embedding router. When a question does not land on any capability with enough margin, this model restates it in the plain form the capabilities are described in, and the router tries again on the restatement. When it reads no request at all, it says so.
That is the whole job. It does not answer questions, it does not decide anything, and nothing it writes is ever executed: the router runs on the restatement, the tool runs on the original.
It replaced a Qwen3-1.7B in that seat, covering four more questions at a sixth of the size, and stopped acting wrongly on real requests altogether.
The surface it reads, which is not a chat prompt
This model was fine-tuned on a bare completion surface and has never seen a chat template, a system message, or a few-shot example. Speak to it the way it was trained or it will not work:
{Language}: {the question, verbatim}
=>
and it completes with one line per request it found, or the single token
NO_REQUEST. Stop at \n=>. Greedy: temperature 0, and send
repeat_penalty 1.0 explicitly, because llama.cpp's default is not neutral
and an unsent key is a silently wrong one, not an absent one.
{Language} is the language the QUESTION is written in, not the language
you want back. The answer always comes back in the language the router's
capability descriptions are written in, which in training was English.
French: où est le trépied ?
=>
where is the tripod
How much this matters, measured on the same weights, same file, same questions:
| surface | exact | safe | abstain | harm |
|---|---|---|---|---|
| a few-shot chat prompt | 1 | 1 | 43 | 0 |
| the bare surface above | 16 | 9 | 20 | 0 |
A model tuned for a surface is a byte contract with it. That table is what the contract is worth.
Files
| file | what | size |
|---|---|---|
model.safetensors |
the fused model, bf16 | 536,222,768 bytes |
grpo-best-q8_0.gguf |
the same weights for llama.cpp, Q8_0 | 299,747,104 bytes |
grpo-best-q8_0.gguf sha256
9278686355ae9b9f7aa4cf10d13d60cfab7ae8257f7af63657c70a91d6594245.
llama-server -m grpo-best-q8_0.gguf -c 2048 -ngl 99
Then /v1/completions, not /v1/chat/completions.
How it was made
Base: google/gemma-3-270m, the base model, not the instruct one.
Supervised stage: a full fine-tune, all layers, on 54,182 rows of
{language}: {question} to {plain restatement} across several languages,
two epochs at learning rate 1e-5, sequence length 512, prompt masked. The
shipped checkpoint is iteration 12,000, chosen on exact match over the test
split rather than on validation loss. The two disagreed, and the loss
picked the worse one.
Reinforcement stage: GRPO where the reward is the routing outcome itself. Six candidate rewrites per question, each embedded and run through a real graph: full reward if the router places it on the right capability with a margin above 0.10, a penalty if it places it on the wrong one. LoRA rank 32, scale 2.0, 16 layers, learning rate 1e-6, batch 6, temperature 1.0, 64 tokens, 2,380 iterations, then fused.
The reward is what makes this stage worth running. A cross-entropy loss cannot tell a rewrite that routes at 0.087 from one that routes at 0.11, and the whole population this model serves lives in that band.
The training data is not published yet. A second round is planned that changes the data rather than the method, aimed at the three failures named below, and the set will be published once, with its provenance checked, when that round settles it.
What the reward could not do is choose the checkpoint. The training reward stayed inside a narrow band from start to finish while the held-out score was flat from roughly step 800 of 2,380. Every checkpoint was scored on 250 held-out tasks over 247 graphs it had never trained on:
| exact | safe | silent | wrong | splits found | |
|---|---|---|---|---|---|
| supervised only | 103 | 13 | 129 | 5 | 10/35 |
| GRPO, shipped checkpoint | 123 | 14 | 110 | 3 | 18/35 |
| GRPO, final iteration | 121 | 15 | 110 | 4 | 20/35 |
What it does in a real seat
The measurement that decided it: 112 frozen questions, 78 of them genuine requests the router failed to place, against a live workspace, only confident routes executing. Two replicas, identical.
| exact | safe | covered | wrong on real requests | wrong on out-of-scope | size | |
|---|---|---|---|---|---|---|
| Qwen3-1.7B Q8 | 14 | 7 | 21 | 2 | 2 | 1.8 GB |
| SemanticRepair-270M | 16 | 9 | 25 | 0 | 5 | 300 MB |
Median 99 and 104 ms on an M4 Pro.
What it gets wrong
It restates out-of-scope and destructive messages faithfully. Told to delete every open account, it writes a clean line meaning exactly that, and a router with a matching capability would place it. Five of the ten out-of-scope messages in the gate, against the 1.7B's two. This is the model's known failure and the reason nothing it writes is ever executed directly: in the system it was built for, the tool runs on the user's original words and a rewrite only chooses which tool.
It splits compound questions rarely. 18 of 35 in the held-out set, and in the deployed workspace almost never: a question asking for two different things usually comes back as one line.
It abstains a lot. 20 of 45 labelled questions in the gate. Abstention is the safe outcome here, not a good one.
What was never measured
Anything outside the workspaces it was trained and gated on. The graphs are synthetic, the questions are this project's own, and the whole notion of "the right capability" is defined by the descriptions a graph happens to carry. It is not a general query rewriter and there is no evidence that it is one.
Licence
Gemma. This model is a fine-tune of google/gemma-3-270m and is provided
under and subject to the Gemma Terms of Use, found at
ai.google.dev/gemma/terms, including
the Gemma Prohibited Use Policy at
ai.google.dev/gemma/prohibited_use_policy.
Those terms travel with it: anyone you pass it to gets them too.
Built for Semantic Deterministic Graph, an embedding router that descends a drawn graph and executes a deterministic tool, loading a language model only when the routing is genuinely unsure.
- Downloads last month
- 537
Model tree for Gramscii/SemanticRepair-270M
Base model
google/gemma-3-270m