Instructions to use kingjones777/Instella-ToolCall-16B-A3B-ROCmFP4-STRIX-GGUF 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 kingjones777/Instella-ToolCall-16B-A3B-ROCmFP4-STRIX-GGUF 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 kingjones777/Instella-ToolCall-16B-A3B-ROCmFP4-STRIX-GGUF # Run inference directly in the terminal: llama cli -hf kingjones777/Instella-ToolCall-16B-A3B-ROCmFP4-STRIX-GGUF
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf kingjones777/Instella-ToolCall-16B-A3B-ROCmFP4-STRIX-GGUF # Run inference directly in the terminal: llama cli -hf kingjones777/Instella-ToolCall-16B-A3B-ROCmFP4-STRIX-GGUF
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 kingjones777/Instella-ToolCall-16B-A3B-ROCmFP4-STRIX-GGUF # Run inference directly in the terminal: ./llama-cli -hf kingjones777/Instella-ToolCall-16B-A3B-ROCmFP4-STRIX-GGUF
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 kingjones777/Instella-ToolCall-16B-A3B-ROCmFP4-STRIX-GGUF # Run inference directly in the terminal: ./build/bin/llama-cli -hf kingjones777/Instella-ToolCall-16B-A3B-ROCmFP4-STRIX-GGUF
Use Docker
docker model run hf.co/kingjones777/Instella-ToolCall-16B-A3B-ROCmFP4-STRIX-GGUF
- LM Studio
- Jan
- vLLM
How to use kingjones777/Instella-ToolCall-16B-A3B-ROCmFP4-STRIX-GGUF with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "kingjones777/Instella-ToolCall-16B-A3B-ROCmFP4-STRIX-GGUF" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "kingjones777/Instella-ToolCall-16B-A3B-ROCmFP4-STRIX-GGUF", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/kingjones777/Instella-ToolCall-16B-A3B-ROCmFP4-STRIX-GGUF
- Ollama
How to use kingjones777/Instella-ToolCall-16B-A3B-ROCmFP4-STRIX-GGUF with Ollama:
ollama run hf.co/kingjones777/Instella-ToolCall-16B-A3B-ROCmFP4-STRIX-GGUF
- Unsloth Studio
How to use kingjones777/Instella-ToolCall-16B-A3B-ROCmFP4-STRIX-GGUF 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 kingjones777/Instella-ToolCall-16B-A3B-ROCmFP4-STRIX-GGUF 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 kingjones777/Instella-ToolCall-16B-A3B-ROCmFP4-STRIX-GGUF to start chatting
Using HuggingFace Spaces for Unsloth
# No setup required # Open https://huggingface.co/spaces/unsloth/studio in your browser # Search for kingjones777/Instella-ToolCall-16B-A3B-ROCmFP4-STRIX-GGUF to start chatting
- Pi
How to use kingjones777/Instella-ToolCall-16B-A3B-ROCmFP4-STRIX-GGUF with Pi:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf kingjones777/Instella-ToolCall-16B-A3B-ROCmFP4-STRIX-GGUF
Configure the model in Pi
# Install Pi: npm install -g @mariozechner/pi-coding-agent # Add to ~/.pi/agent/models.json: { "providers": { "llama-cpp": { "baseUrl": "http://localhost:8080/v1", "api": "openai-completions", "apiKey": "none", "models": [ { "id": "kingjones777/Instella-ToolCall-16B-A3B-ROCmFP4-STRIX-GGUF" } ] } } }Run Pi
# Start Pi in your project directory: pi
- OpenClaw new
How to use kingjones777/Instella-ToolCall-16B-A3B-ROCmFP4-STRIX-GGUF with OpenClaw:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf kingjones777/Instella-ToolCall-16B-A3B-ROCmFP4-STRIX-GGUF
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 "kingjones777/Instella-ToolCall-16B-A3B-ROCmFP4-STRIX-GGUF" \ --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"
- Docker Model Runner
How to use kingjones777/Instella-ToolCall-16B-A3B-ROCmFP4-STRIX-GGUF with Docker Model Runner:
docker model run hf.co/kingjones777/Instella-ToolCall-16B-A3B-ROCmFP4-STRIX-GGUF
- Lemonade
How to use kingjones777/Instella-ToolCall-16B-A3B-ROCmFP4-STRIX-GGUF with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull kingjones777/Instella-ToolCall-16B-A3B-ROCmFP4-STRIX-GGUF
Run and chat with the model
lemonade run user.Instella-ToolCall-16B-A3B-ROCmFP4-STRIX-GGUF-{{QUANT_TAG}}List all available models
lemonade list
- Hermes Agent
How to use kingjones777/Instella-ToolCall-16B-A3B-ROCmFP4-STRIX-GGUF with Hermes Agent:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf kingjones777/Instella-ToolCall-16B-A3B-ROCmFP4-STRIX-GGUF
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 kingjones777/Instella-ToolCall-16B-A3B-ROCmFP4-STRIX-GGUF
Run Hermes
hermes
- Atomic Chat
Instella with Tool Calling — ROCmFP4 STRIX GGUF — AMD Ryzen AI Max+ 395 / Strix Halo / gfx1151
AMD shipped a reasoning model that cannot call a tool. We taught it how.
This is amd/Instella-MoE-16B-A3B-Think
— AMD's fully-open MoE (16B total / ~2.8B active) — fine-tuned for function calling and
agentic tool use, then quantized to ROCmFP4 for AMD Strix Halo (gfx1151).
To our knowledge this is the first tool-calling-capable Instella. AMD never trained or evaluated the model for it: the card doesn't mention tools, and the eval suite (WinoGrande, HumanEval+, IFEval, HELMET, RULER) contains no agentic or function-calling benchmark at all.
| value | |
|---|---|
| file | Instella-ToolCall-v1-STRIX-imat.gguf |
| size | 8,520,937,056 bytes (7.94 GiB) |
| sha256 | 4bb231bd1e135d7b45e9874372a9b439a82fcb19f97e5f1e124b97a852e2033d |
| quant type | 105 Q4_0_ROCMFP4_STRIX — Strix Halo attn-K/V quality recipe, imatrix-calibrated |
| decode | ~90 tok/s (3-run median, Ryzen AI MAX+ 395, -ngl 999 -dio) |
| base | amd/Instella-MoE-16B-A3B-Think |
What actually changed
| metric (held-out 200, stratified) | base | tuned |
|---|---|---|
| decision — call vs. don't call | 68.0% | 97.5% |
| function name correct | 58.6% | 98.2% |
| arguments correct | 49.5% | 89.2% |
unterminated <think> |
121 / 200 | 0 |
Per capability the tuned model gets 19/19 parallel calls, 8/8 single calls, and makes only 2 false calls in 61 no-call cases.
🔍 The bug was hiding behind a good-looking number
The base model scores 85.2% on "correctly did not call a tool" — which looks like judgement.
It isn't. 52 of those 61 correct-looking rows had an unterminated <think> block — exactly 85.2%.
The model wasn't declining. It was thinking forever and never acting. Here it is reasoning perfectly
and then doing nothing:
<think>We are given a request to book a flight… the available tools do not include any booking functionality. The only tool we have isgenerate_random_color, which is unrela…
and on a case where it should have called:
<think>…we have a functionsearch_recipesthat takes ingredients… we can use it. However, note that t…
It concludes correctly, then never emits the call. The metric was rewarding a bug.
That single defect wears two faces:
- thinking on → never terminates, never acts
- thinking suppressed (needed to get the format right) → no reasoning phase, so it fires blindly:
"What is 2+2?"→get_weather{"city": "New York"}
The tuned model now declines for reasons:
"I'm sorry, but I'm unable to assist with that. My current capabilities are limited to calculating loan payments. I don't have the ability to book flights."
How it was trained
LoRA, rank 64, on the Gated-MLA projections — q_proj, o_proj, kv_a_proj_with_mqa,
kv_b_proj — 25.7 M trainable params (0.16% of 15.9 B). 2 epochs, lr 1e-4 cosine, bf16,
gradient checkpointing, length-grouped batching, max-len 4096. Loss 0.56 → 0.13. ~6 h 40 m on a
single NVIDIA GB10.
Data — 13,171 examples, Apache-2.0 only, from
glaiveai/glaive-function-calling-v2
and NousResearch/hermes-function-calling-v1.
CC-BY-NC sources were deliberately excluded to keep the licence chain clean.
| capability | examples |
|---|---|
| multi-turn (tool result → answer) | 7,789 |
no_call — tools offered, prose is correct |
3,981 |
| parallel calls | 1,074 |
| single call | 328 |
Three decisions did most of the work:
- Loss on assistant turns only. A
{% generation %}-marked training template plusreturn_assistant_tokens_maskmeans the model is never trained to reproduce the tool schemas sitting in its own prompt. Verified by decoding the mask: 460 tokens in, 52 supervised. - Negative examples are the whole point. 30% of the corpus is tools offered, correct answer is prose. Judgement is a learned behaviour — you cannot prompt it in.
- Truncation was checked per capability, not globally. At max-len 1536 we were silently dropping 37.5% of parallel-call examples — the scarcest capability in the mix. 4096 keeps 100%.
⚠️ What we tried that made it worse
A second pass on a 50% negative mix improved every held-out metric — decision 97.5% → 98.0%,
no_call 96.7% → 98.4% — and regressed on an out-of-distribution probe, newly failing
"What is 2+2?", which v1 gets right.
More data of the same shape ≠ better generalisation. It learned Glaive's refusal phrasing harder without learning the principle. We shipped v1. In-distribution eval alone would have shipped the worse model — keep an adversarial probe that disagrees with your training distribution.
Known limitations (measured, not hedged)
On a 12-question adversarial sweep — general-knowledge questions with one irrelevant tool offered — it makes 2 false calls:
"What is 17*23?"→ calls the tool"Translate 'hello' to Spanish."→ calls the tool
Both resemble tool-able operations, and Glaive is dense with calculate_* / translate_* tools, so
it learned "this task type is tool-able" without fully learning "is this tool relevant."
Everything else answers correctly: 2+2, 100÷4, √144, leap year, Hamlet, boiling point, photosynthesis,
WW2, capital of France, largest planet.
It is also a 2.8 B-active model. It is a fast, decisive tool-caller — not a frontier coder.
⛔ Requirements — read before downloading
1. A ROCmFPX runtime. ROCmFP4 uses ggml tensor types 100–106; stock llama.cpp refuses the file:
gguf_init_from_reader: tensor 'output.weight' has invalid ggml type 101. should be in [0, 43)
Build ROCmFPX — both llama-quantize and llama-server.
2. The instella architecture. Not in llama.cpp mainline. Instella declares
model_type: deepseek_v3 and reuses DeepSeek MLA shapes, but it is not a drop-in DeepSeek-V3 —
FarSkip-Collective needs dual residual streams, and a naive port loads fine and emits
fluent-but-wrong text. Plus Gated MLA, rope_interleave, qk_layernorm.
3. instella-tools-tuned.jinja (included) is mandatory for tool calling. Instella inherits
DeepSeek's chat template verbatim, which has no tools variable — it can format a tool call from
history but can never advertise available tools, so the model never learns what it may call. This is a
known, unresolved upstream DeepSeek issue
(DeepSeek-V3 #48). Our template keeps
Instella's trained turn markers exactly and adds a real <tools> block.
4. --reasoning on is required. --reasoning defaults to auto, which resolves to off for a
custom template and will silently disable thinking on a Think model.
Serving
llama-server -m Instella-ToolCall-v1-STRIX-imat.gguf \
--host 0.0.0.0 --port 8087 \
-ngl 999 -dio --no-warmup --jinja \
--chat-template-file instella-tools-tuned.jinja \
--reasoning on --reasoning-format deepseek \
-c 32768 --parallel 1 --alias instella-toolcall-v1
Standard OpenAI tools / tool_choice; calls come back in message.tool_calls, reasoning in
message.reasoning_content.
Also included
instella-tools-tuned.jinja— the serving template (required)adapter/— the LoRA adapter (108 MB) if you'd rather merge it yourselfllamacpp-instella-toolcall.patch— two upstreamablecommon/chat-diff-analyzer.cppfixes: registering the legacy-DeepSeek tool markers as preserved tokens (without which llama.cpp hard-400s any request carryingtools), and a</tool_call>stop guard for untuned checkpoints. The first also fixes DeepSeek-R1, R1-Distill and pre-DSML V3.
Credits
AMD for a genuinely open model — weights, data mixtures and training code. Glaive and Nous Research for Apache-2.0 function-calling data. ROCmFPX for the ROCmFP4 quantizer.
Base weights remain under AMD's ResearchRAIL licence — research use only. The LoRA and template are ours; the training data is Apache-2.0.
Other public builds of this model
Compiled from Hugging Face repository metadata — file sizes, shipped files, quant variant as named by each repo. No third-party build was run or benchmarked here, so this table makes no speed or quality claim about any of them. It is here so you can see the size and format options at a glance and pick what fits your hardware.
| Repository | Largest model file | Variant | Ships | Downloads | Likes |
|---|---|---|---|---|---|
kingjones777/Instella-MoE-16B-A3B-Think-ROCmFP4-STRIX-GGUF |
7.94 GiB | STRIX | single model file | 12 | 0 |
kingjones777/Instella-ToolCall-16B-A3B-ROCmFP4-STRIX-GGUF (this repo) |
7.94 GiB | STRIX | safetensors | 0 | 0 |
Base model: amd/Instella-MoE-16B-A3B-Think. Generated from Hub metadata; download counts move over time.
Acknowledgements
This build would not exist without the work below. Please star and follow these projects — the quantisation format used here is their engineering, not mine.
ROCmFPX — maintained by
charlie12345 / caf
The ROCmFP4 / ROCmFPX tensor formats (ggml types 100–106) exist only in this fork.
Every ROCmFP4 file in this repository was produced with its llama-quantize, and
runs on its runtime. The fork also credits collaborators ciru-ai, Tom Turney,
PlunderStruck and Aydan S., and acknowledges AMD for hardware support.
Licensed MIT, based on upstream llama.cpp.
llama.cpp — ggml-org and contributors The inference engine, GGUF format and conversion tooling everything here is built on.
AMD ROCm The compute platform these builds target — ROCm 7.2.4 on gfx1151 / Radeon 8060S.
Base model authors — see base_model in the metadata above; all model weights,
licences and capabilities are theirs. This repository contributes quantisation and
measurement only.
If you use these files, please credit ROCmFPX alongside this repository.
- Downloads last month
- 144
We're not able to determine the quantization variants.
Model tree for kingjones777/Instella-ToolCall-16B-A3B-ROCmFP4-STRIX-GGUF
Base model
amd/Instella-MoE-16B-A3B-Think