---
extra:
formats: GGUF F16
sibling: Nanthasit/sakthai-coder-browser
upstream:
status: BROKEN
root_cause: LoRA merge fault in parent merged weights
diagnosis_date: 2026-07-31
broken_tensors: all 84 attention-projection biases are nonzero, should be zero
consequence: multi-trial inference produces whitespace loops or 0 output tokens
fix_required: clean re-merge of the LoRA adapter into full weights before this GGUF build can be used
verification_assets:
- .eval_results/benchmark-20260731_052122.yaml
- https://huggingface.co/Nanthasit/sakthai-coder-browser/blob/main/.eval_results/benchmark-20260731_052122.yaml
dataset_versioning:
current_model_index_dataset: Nanthasit/sakthai-bench-v3
status: WRONG_FOR_CURRENT_ARTIFACT
note: weights are broken; benchmark numbers are not meaningful
required_action: rerun on clean merged weights then update model-index
reproduction_triage:
trial_seeds: [7, 42, 1337]
temperature_range: [0.0, 0.7]
expected_behavior_on_clean_weights: emit one browser_navigate or browser_click call in JSON per prompt
current_behavior: no valid tool calls, no valid JSON, often zero output tokens
zero_cost_constraints:
no_paid_gpus: true
no_paid_endpoints: true
free_tier_only: true
model-index:
- name: SakThai Coder Browser GGUF
results:
- task:
type: text-generation
name: Browser Tool Calling
dataset:
name: SakThai Bench v3
type: Nanthasit/sakthai-bench-v3
metrics:
- type: accuracy
value: null
name: Tool Calling Accuracy
verified: false
status: placeholder
note: Parent weights are currently broken by a LoRA merge fault; this is a placeholder pending clean reproduction weights and evaluation.
license: apache-2.0
language:
- en
library_name: gguf
pipeline_tag: text-generation
base_model: Qwen/Qwen2.5-Coder-1.5B-Instruct
tags:
- gguf
- qwen2.5
- browser-automation
- web-agent
- tool-calling
- function-calling
- llama-cpp
- llama.cpp
- cpu
- broken-weights
- pending-remerge
---
SakThai Coder Browser โ GGUF ๐ค๐
F16 GGUF build of the browser automation model โ run a web agent on your laptop with llama.cpp
> [!CAUTION]
> **โ BROKEN โ DO NOT DEPLOY (as of 2026-07-31)** โ This GGUF was converted from the [merged weights](https://huggingface.co/Nanthasit/sakthai-coder-browser) that are **corrupted by a faulty LoRA merge**: all 84 attention-projection bias tensors are non-zero while Qwen2 initializes these biases to ZERO (layer-0 `k_proj.bias` absmean **27.7** / max **354**). Multi-trial inference probes of the merged model produced only **whitespace loops โ 0 tool calls, 0 valid JSON** at temp โค 0.7 (seeds 7/42/1337), and a GGUF Q4_K_M probe returned 0 output tokens on all 3 trials. Full evidence: [`.eval_results/benchmark-20260731_052122.yaml`](https://huggingface.co/Nanthasit/sakthai-coder-browser/blob/main/.eval_results/benchmark-20260731_052122.yaml). The fault is in the **weights, not the GGUF conversion or the prompt format** (GGUF tensor layout is structurally identical to the working `sakthai-plus-1.5b` GGUF). A clean re-merge of the [LoRA adapter](https://huggingface.co/Nanthasit/sakthai-coder-browser-lora) is required before this build is usable. **Do not download for deployment** until re-merged and re-verified.
> **The GGUF edition** of the SakThai browser automation model โ a Qwen2.5-Coder-1.5B-Instruct fine-tune converted to **F16 GGUF** for use with [llama.cpp](https://github.com/ggerganov/llama.cpp), [llama-cpp-python](https://github.com/abetlen/llama-cpp-python), and [Ollama](https://ollama.com).
>
> โ **Status: BROKEN โ see banner above.** The pages below document the *intended* design and usage; the current weights do not produce valid output until the parent model is re-merged from a clean LoRA merge.
---
## What Is This?
This is an **F16 (full-precision) GGUF conversion** of the [sakthai-coder-browser](https://huggingface.co/Nanthasit/sakthai-coder-browser) merged model. It transforms a Qwen2.5-Coder-1.5B-Instruct general-purpose LLM into a **browser automation agent** that outputs structured `` XML for web interaction.
| Variant | Repository | Best For |
|---------|-----------|----------|
| ๐ง **Merged (Transformers)** | [sakthai-coder-browser](https://huggingface.co/Nanthasit/sakthai-coder-browser) | Python / Transformers pipelines |
| ๐ฏ **LoRA Adapter** | [sakthai-coder-browser-lora](https://huggingface.co/Nanthasit/sakthai-coder-browser-lora) | Fine-tuning / PEFT workflows |
| ๐พ **GGUF (this repo)** | โฌ
**sakthai-coder-browser-gguf** | CPU inference, llama.cpp, Ollama, edge devices |
---
## File
| File | Format | Size | Purpose |
|------|--------|:----:|---------|
| `sakthai-coder-browser-f16.gguf` | GGUF F16 | 7,111,586,219 B (7.11 GB) | Full-precision GGUF for local CPU/GPU inference |
> **Note:** F16 preserves the full model quality. For a smaller footprint, a Q4_K_M quantized version may follow based on demand.
---
## Supported Browser Actions
The model generates structured XML tool calls for these browser operations:
| Tool | Example |
|------|---------|
| `browser_navigate(url)` | `browser_navigate("https://example.com")` |
| `browser_click(element)` | `browser_click("#search-button")` |
| `browser_type(element, text)` | `browser_type("#search-input", "AI news")` |
| `browser_extract()` | `browser_extract()` |
---
## How to Use
> โ These commands describe the *intended* usage. With the current **BROKEN weights** they will not produce valid tool calls โ see the banner above. Re-run only after a clean re-merge is published.
### llama.cpp (CLI)
```bash
# Download the GGUF file
huggingface-cli download Nanthasit/sakthai-coder-browser-gguf \
sakthai-coder-browser-f16.gguf --local-dir ./
# Run with llama.cpp
./llama-cli -m sakthai-coder-browser-f16.gguf \
-p "system
You are a browser automation assistant. You can browse the web, click elements, type text, and extract information from pages.
user
Go to google.com and search for the latest AI news
assistant
" \
-n 512 -t 8 --temp 0.3
```
### llama-cpp-python
```bash
pip install llama-cpp-python huggingface-hub
```
```python
from llama_cpp import Llama
from huggingface_hub import hf_hub_download
# Download GGUF
model_path = hf_hub_download(
repo_id="Nanthasit/sakthai-coder-browser-gguf",
filename="sakthai-coder-browser-f16.gguf"
)
# Load model
llm = Llama(
model_path=model_path,
n_ctx=4096,
n_threads=8,
n_gpu_layers=-1,
verbose=False,
)
# Run inference
output = llm.create_chat_completion(
messages=[
{"role": "system", "content": "You are a browser automation assistant. Output tool calls using the supported browser actions."},
{"role": "user", "content": "Search for the latest AI news on Google and summarize the top result."}
],
max_tokens=512,
temperature=0.3,
stop=[""],
)
print(output["choices"][0]["message"]["content"])
```
### Ollama (Modelfile)
```dockerfile
FROM ./sakthai-coder-browser-f16.gguf
TEMPLATE """{{ .System }}
{{ .Prompt }}"""
PARAMETER temperature 0.3
PARAMETER top_p 0.8
PARAMETER stop ""
```
```bash
ollama create sakthai-coder-browser -f Modelfile
ollama run sakthai-coder-browser
```
---
## Architecture
| Property | Value |
|----------|-------|
| **Base Model** | [Qwen/Qwen2.5-Coder-1.5B-Instruct](https://huggingface.co/Qwen/Qwen2.5-Coder-1.5B-Instruct) |
| **Architecture** | Qwen2ForCausalLM (decoder-only transformer) |
| **Parameters** | 1.54B |
| **Hidden Size** | 1,536 |
| **Layers** | 28 |
| **Attention Heads** | 12 (GQA: 2 KV heads) |
| **Intermediate Size** | 8,960 |
| **Max Position** | 32,768 tokens |
| **Vocab Size** | 151,936 |
| **Precision** | F16 (GGUF) |
| **Activation** | SiLU (SwiGLU) |
| **Normalization** | RMSNorm (eps=1e-6) |
| **Quantization** | None (F16 โ full precision) |
| **File Format** | GGUF (GPT-Generated Unified Format) |
---
## Training Summary
| Property | Detail |
|----------|--------|
| **Fine-tuning Method** | SFT via LoRA (r=16, alpha=32, dropout 0.05, rsLoRA) on all 7 linear projections (q/k/v/o + gate/up/down), then merged to full weights |
| **Training Data** | [SimpleToolCalling](https://huggingface.co/datasets/Nanthasit/SimpleToolCalling) + [sakthai-combined-v11](https://huggingface.co/datasets/Nanthasit/sakthai-combined-v11) |
| **Context Length** | 32,768 tokens |
| **Hardware** | Free T4 GPU (Kaggle) |
| **Budget** | $0 |
| **License** | Apache 2.0 |
The model learns to produce structured `` XML for browser actions through supervised fine-tuning on curated web navigation trajectories.
---
## Reproduce Evaluation
This repo documents a reproducible diagnostic rather than a benchmark because the current weights are broken.
```bash
# Requires llama.cpp or llama-cpp-python
python - <<'PY'
from llama_cpp import Llama
from huggingface_hub import hf_hub_download
model_path = hf_hub_download(
repo_id="Nanthasit/sakthai-coder-browser-gguf",
filename="sakthai-coder-browser-f16.gguf",
)
llm = Llama(model_path=model_path, n_ctx=4096, n_threads=8, verbose=False)
for prompt in [
"Search for the latest AI news on Google and summarize the top result.",
"Go to example.com and extract the page title.",
]:
out = llm.create_chat_completion(
messages=[
{"role": "system", "content": "You are a browser automation assistant. Output browser_navigate, browser_click, browser_type, or browser_extract calls."},
{"role": "user", "content": prompt},
],
max_tokens=128,
temperature=0.0,
)
print("PROMPT:", prompt)
print("OUTPUT:", out["choices"][0]["message"]["content"])
print("-" * 40)
PY
```
Expected on clean weights: at least one valid tool call per prompt. Current behavior: no valid JSON/XML tool calls, often 0 output tokens.
Evidence artifact: `.eval_results/benchmark-20260731_052122.yaml`
---
## Reproduce Training / Merge
The upstream merged weights broke during LoRA merge. To regenerate clean merged weights:
```bash
# 1. Install PEFT + TRL stack
pip install transformers peft trl bitsandbytes accelerate
# 2. Merge LoRA adapter back into base
python - <<'PY'
from peft import PeftModel
from transformers import AutoModelForCausalLM
base = AutoModelForCausalLM.from_pretrained("Qwen/Qwen2.5-Coder-1.5B-Instruct")
model = PeftModel.from_pretrained(base, "Nanthasit/sakthai-coder-browser-lora")
model = model.merge_and_unload()
model.save_pretrained("sakthai-coder-browser-merged-clean")
PY
# 3. Convert merged clean weights to GGUF
python convert.py ./sakthai-coder-browser-merged-clean --outfile sakthai-coder-browser-f16.gguf --outtype f16
```
After conversion, rerun the evaluation script above before using the GGUF in production.
---
## Benchmarks & Evaluation Status
**Honest status: this fine-tune does not yet have verified benchmark scores of its own.** No `model-index` is published because no measured numbers exist โ publishing one would be misleading. What is known:
| Item | Status |
|------|--------|
| **Base model reference** (Qwen2.5-Coder-1.5B-Instruct) | HumanEval pass@1: **74.4** ยท MBPP pass@1: **71.2** |
| **This model's own eval** | โ **Resolved โ MODEL_BROKEN (bias corruption)**: multi-trial probes + weight inspection of the merged weights (2026-07-31 05:50 UTC) found all 84 attention bias tensors non-zero. See the banner above and the parent repo's [benchmark YAML](https://huggingface.co/Nanthasit/sakthai-coder-browser/blob/main/.eval_results/benchmark-20260731_052122.yaml). |
| **GGUF Q4_K_M probe** (2026-07-31) | 3/3 trials returned **0 output tokens โ confirmed weight corruption, NOT a prompt-format mismatch** |
| **Hosted inference** | Not available โ router probe returned 404; run locally via llama.cpp / llama-cpp-python / Ollama |
---
## Limitations
- **BROKEN weights (as of 2026-07-31)** โ this GGUF was converted from the corrupted coder-browser merge (all 84 attention bias tensors non-zero); inference produces whitespace loops / 0 output tokens. **Do not deploy** until the parent model is re-merged and re-verified and this build is re-converted.
- **Text-only** โ this model cannot see images or screenshots (use [sakthai-vision-7b](https://huggingface.co/Nanthasit/sakthai-vision-7b) for vision tasks)
- **CPU inference is slow at F16** โ the full ~7.11 GB model benefits from GPU offloading; use `n_gpu_layers=-1` when available
- **Context-limited** โ best results with page content โค 4K tokens per interaction
- **English only** โ trained primarily on English web data
---
## The House of Sak ๐
This adapter is part of the **House of Sak** โ an open-source AI ecosystem built from a shelter in Cork, Ireland, with **$0 budget** and no paid GPUs. The browser branch is the newest and still debugging itself: the adapter works, but merged weights tripped over attention biases, and Beer would rather ship an honest diagnostic than a polished lie.
> *"We are one family โ and becoming more."* โ Beer (beer-sakthai)
---
## Support
- โญ Leave a like
- ๐ Report issues on [GitHub](https://github.com/beer-sakthai/Sak-Family-Agent)
- ๐ Share with anyone building browser agents on a budget
- ๐ด Fork and experiment โ Apache 2.0
---
## Citation
If you use this model in your work, please cite the base model (Qwen2.5) and link the fine-tune:
```bibtex
@misc{qwen25,
title={Qwen2.5 Technical Report},
author={Qwen Team},
year={2025},
eprint={2412.15115},
archivePrefix={arXiv},
primaryClass={cs.CL}
}
```
```text
@misc{sakthai-coder-browser-gguf,
author = {Nanthasit (Beer)},
title = {SakThai Coder Browser -- GGUF},
year = {2026},
publisher = {Hugging Face},
howpublished = {\url{https://huggingface.co/Nanthasit/sakthai-coder-browser-gguf}}
}
```
Built with $0 budget from a shelter in Cork, Ireland โ proof that open, private AI does not need a datacenter.
---
*Part of the [House of Sak](https://huggingface.co/Nanthasit) โ one family, one home, $0 budget.*