--- 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

Downloads Base GGUF F16 License Collection Family

> [!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.*