Nanthasit's picture
docs: fix typo in citation block (Hging -> Hugging Face)
0631926 verified
|
Raw
History Blame Contribute Delete
15 kB
---
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
---
<h1 align="center">SakThai Coder Browser β€” GGUF πŸ€–πŸŒ</h1>
<p align="center"><em>F16 GGUF build of the browser automation model β€” run a web agent on your laptop with llama.cpp</em></p>
<p align="center">
<img src="https://img.shields.io/badge/dynamic/json?url=https%3A//huggingface.co/api/models/Nanthasit/sakthai-coder-browser-gguf&query=%24.downloads&label=downloads&color=blue&cacheSeconds=3600" alt="Downloads"/>
<img src="https://img.shields.io/badge/base-Qwen2.5--Coder--1.5B--Instruct-blueviolet" alt="Base"/>
<img src="https://img.shields.io/badge/GGUF-F16-orange" alt="GGUF F16"/>
<img src="https://img.shields.io/badge/license-Apache%202.0-green" alt="License"/>
<a href="https://huggingface.co/collections/Nanthasit/sakthai-model-family-6a64745450b12d421c1f9f02"><img src="https://img.shields.io/badge/%F0%9F%8F%A0-SakThai%20Family-6644cc" alt="Collection"/></a>
<a href="https://huggingface.co/collections/Nanthasit/sakthai-model-family-6a64745450b12d421c1f9f02"><img src="https://img.shields.io/badge/%F0%9F%9A%80-Explore%20Family-47d147" alt="Family"/></a>
</p>
> [!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 `<tool_call>` 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 `<tool_call>` 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.*