Text Generation
GGUF
French
English
llama.cpp
on-device
offline
cpu
africa
adtc-2026
imatrix
conversational
Instructions to use Benewende-dev/baarali-edge-2b 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 Benewende-dev/baarali-edge-2b 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 Benewende-dev/baarali-edge-2b:IQ4_XS # Run inference directly in the terminal: llama cli -hf Benewende-dev/baarali-edge-2b:IQ4_XS
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf Benewende-dev/baarali-edge-2b:IQ4_XS # Run inference directly in the terminal: llama cli -hf Benewende-dev/baarali-edge-2b:IQ4_XS
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 Benewende-dev/baarali-edge-2b:IQ4_XS # Run inference directly in the terminal: ./llama-cli -hf Benewende-dev/baarali-edge-2b:IQ4_XS
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 Benewende-dev/baarali-edge-2b:IQ4_XS # Run inference directly in the terminal: ./build/bin/llama-cli -hf Benewende-dev/baarali-edge-2b:IQ4_XS
Use Docker
docker model run hf.co/Benewende-dev/baarali-edge-2b:IQ4_XS
- LM Studio
- Jan
- vLLM
How to use Benewende-dev/baarali-edge-2b with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "Benewende-dev/baarali-edge-2b" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "Benewende-dev/baarali-edge-2b", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/Benewende-dev/baarali-edge-2b:IQ4_XS
- Ollama
How to use Benewende-dev/baarali-edge-2b with Ollama:
ollama run hf.co/Benewende-dev/baarali-edge-2b:IQ4_XS
- Unsloth Studio
How to use Benewende-dev/baarali-edge-2b 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 Benewende-dev/baarali-edge-2b 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 Benewende-dev/baarali-edge-2b to start chatting
Using HuggingFace Spaces for Unsloth
# No setup required # Open https://huggingface.co/spaces/unsloth/studio in your browser # Search for Benewende-dev/baarali-edge-2b to start chatting
- Pi
How to use Benewende-dev/baarali-edge-2b with Pi:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf Benewende-dev/baarali-edge-2b:IQ4_XS
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": "Benewende-dev/baarali-edge-2b:IQ4_XS" } ] } } }Run Pi
# Start Pi in your project directory: pi
- OpenClaw new
How to use Benewende-dev/baarali-edge-2b with OpenClaw:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf Benewende-dev/baarali-edge-2b:IQ4_XS
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 "Benewende-dev/baarali-edge-2b:IQ4_XS" \ --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 Benewende-dev/baarali-edge-2b with Docker Model Runner:
docker model run hf.co/Benewende-dev/baarali-edge-2b:IQ4_XS
- Lemonade
How to use Benewende-dev/baarali-edge-2b with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull Benewende-dev/baarali-edge-2b:IQ4_XS
Run and chat with the model
lemonade run user.baarali-edge-2b-IQ4_XS
List all available models
lemonade list
- Hermes Agent
How to use Benewende-dev/baarali-edge-2b with Hermes Agent:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf Benewende-dev/baarali-edge-2b:IQ4_XS
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 Benewende-dev/baarali-edge-2b:IQ4_XS
Run Hermes
hermes
- Atomic Chat
| license: apache-2.0 | |
| base_model: Qwen/Qwen3.5-2B | |
| tags: | |
| - gguf | |
| - llama.cpp | |
| - on-device | |
| - offline | |
| - cpu | |
| - africa | |
| - adtc-2026 | |
| language: | |
| - fr | |
| - en | |
| pipeline_tag: text-generation | |
| library_name: llama.cpp | |
| # baarali-edge-2b | |
| The weights for **[Baarali Edge](https://github.com/benewende-dev/baarali-edge)**, a submission to | |
| the **Africa Deep Tech Challenge 2026 — Laptop LLM track**, domain `corporate_enterprise`. | |
| An offline enterprise assistant for the laptops West Africa actually owns: 8 GB of RAM, integrated | |
| graphics, no network. It reads a company's own documents — supplier contracts, invoices, HR | |
| policies, meeting notes — and answers with citations, on the machine, in French and English. | |
| ## What this file is, exactly | |
| This repository hosts **`Qwen3.5-2B-IQ4_XS.gguf`, an unmodified copy** of the IQ4_XS build | |
| published by [unsloth/Qwen3.5-2B-GGUF](https://huggingface.co/unsloth/Qwen3.5-2B-GGUF), itself | |
| quantised from [Qwen/Qwen3.5-2B](https://huggingface.co/Qwen/Qwen3.5-2B). Credit for the base model | |
| goes to Qwen; credit for this quantisation goes to Unsloth. It is republished here so that the | |
| submission's `download_model.sh` points at a URL under our control and keeps working unchanged | |
| through the audit window — not because we claim authorship of the weights. | |
| ``` | |
| sha256 3639f34b5ca22aa1c51f3616566eae8c355111554f6924ad97ee2652ed11c1cd | |
| size 1 172 996 352 bytes (1.09 GiB) | |
| ``` | |
| Our contribution is the **selection, measurement and packaging**: which base model, which | |
| quantisation, which sampling settings, and the evidence for each. That evidence lives in the | |
| GitHub repository, not in a claim on this page. | |
| We did try to become authors of these weights rather than their measurers, by recalibrating the | |
| importance matrix on francophone enterprise text instead of the inherited generic-English set. It | |
| made no measurable difference: on 200 `arc_easy` questions the two files return **196 identical | |
| answers**, at identical size, speed and peak memory. So these weights are still Unsloth's, and we | |
| say so. The protocol — calibration corpus, contamination check, control file and paired test — is | |
| in [`bench/resultats.md`](https://github.com/benewende-dev/baarali-edge/blob/main/bench/resultats.md), | |
| step 6. | |
| ## Why this model, and why this quantisation | |
| Both decisions were measured with the official `adtc-profiler`, never chosen by reputation. Five | |
| base models, from 0.75 B to 4.21 B measured parameters, were profiled; then **all seven** | |
| quantisations of the winner. Full tables: | |
| [`bench/resultats.md`](https://github.com/benewende-dev/baarali-edge/blob/main/bench/resultats.md). | |
| Measured on an Apple M1 / 8 GB, CPU only (`-ngl 0`, enforced by the profiler). Throughput and peak | |
| memory are the **median of three runs** — a single memory reading is worthless, and we have the | |
| scar to prove it: one variant showed 1.47 GB on its first pass and 2.21 GB as its true median. | |
| Accuracy is a **single deterministic run** (temperature 0, fixed seed, 200 `arc_easy` questions); | |
| repeating it would return the same number. Absolute values differ from the reference i5 laptop; the | |
| ranking between candidates does not. | |
| | Quantisation | Accuracy | Throughput | Peak RAM | S_eff | Total @150 t/s | | |
| |---|---|---|---|---|---| | |
| | **IQ4_XS** *(shipped)* | 0.670 | **34.3 t/s** | **1.74 GB** | **75.2** | **55.4** | | |
| | Q4_K_M | 0.675 | 31.6 t/s | 2.08 GB | 70.2 | 54.1 | | |
| | UD-Q5_K_XL | **0.680** | 29.0 t/s | 2.11 GB | 69.8 | 53.8 | | |
| | MTP-Q4_K_M | 0.675 | 31.1 t/s | 2.20 GB | 68.5 | 53.7 | | |
| | Q5_K_M | 0.670 | 26.7 t/s | 2.01 GB | 71.3 | 53.1 | | |
| | UD-Q4_K_XL | 0.650 | 29.4 t/s | 2.21 GB | 68.4 | 52.1 | | |
| | Q3_K_M | 0.630 | 30.7 t/s | 1.93 GB | 72.4 | 52.1 | | |
| The last column is not a measurement: it is the official scoring function | |
| `0.50·accuracy + 0.30·S_perf + 0.20·S_eff` applied to the measured cells, under the assumption that | |
| the fastest submission in the contest reaches 150 t/s. `S_perf` is scored relative to that | |
| submission, so the assumption has to be stated rather than hidden. | |
| **The variant that beats us is in the table on purpose.** UD-Q5_K_XL scores 0.680 against our | |
| 0.670 — the best accuracy of the seven. It still loses overall, and the arithmetic says by how | |
| much: that extra point of accuracy is worth **0.5** of final score, while the 18 % throughput and | |
| 5.4 S_eff it gives up cost it **2.1** — a net 1.6 in our favour, which is exactly the 55.4 against | |
| 53.8 in the table. That is the whole argument for this track in one row, and hiding the row would | |
| have made the argument weaker, not stronger. | |
| IQ4_XS is also the fastest and the lightest, and its three runs sat within 1.72–1.77 GB — the | |
| narrowest spread we recorded, which matters because it is the figure that has to survive an | |
| independent re-measurement. | |
| ### The shipped file, measured as a package | |
| The table above ranks candidates. The number that describes **this file as it is submitted** — | |
| fetched by `download_model.sh`, three profiler runs, median — is **31.20 t/s and 1 544 MB peak**. | |
| It is lower than the 34.3 t/s above and that is not a contradiction to explain away: it is | |
| run-to-run and thermal variance on a fanless 8 GB laptop, measured weeks apart. The ranking table | |
| is used only to **compare** variants measured back to back; the packaged figure is the one we | |
| self-report. | |
| ## Recommended inference settings | |
| ```bash | |
| llama-cli -m Qwen3.5-2B-IQ4_XS.gguf -ngl 0 --temp 0 --repeat-penalty 1.05 | |
| ``` | |
| `--repeat-penalty 1.05` is not a preference. On inputs outside its competence this model does not | |
| decline — it repeats one phrase until the token budget runs out, and llama.cpp applies **no | |
| repetition penalty by default**. | |
| The value was measured twice, and the second measurement overturned the first. An arithmetic | |
| control of 18 items pointed at 1.10. A second control of 15 summarisation, drafting and analysis | |
| tasks — the genre this model is actually for — showed what that had cost. On a contract-penalty | |
| question, 1.00 and 1.05 both produce **270,000 FCFA**, a defensible amount; 1.10 produces | |
| **63,450 FCFA** by inventing a formula, `(30 − 25) / 7`, that corresponds to nothing in the | |
| contract. Reproducible at temperature 0. | |
| To be precise about what "defensible" means here, because it is not the same as right: 270,000 | |
| follows if the ten-day threshold is read as a grace period, leaving 15 days — three weeks begun — | |
| at 2 % each. The model does not reason that way. It divides 25 by 7, gets "3 weeks and 4 days", and | |
| calls that three weeks begun, which rounds a begun week *down*. It reaches a defensible number by | |
| an indefensible route. That rounding failure is listed under limitations below and it is not fixed | |
| by any penalty value. | |
| 1.05 keeps the model on that route rather than the fabricated one, still removes the degeneration | |
| (diversity 0.60 → 0.99 on the case that showed it), and costs one criterion out of 81 against no | |
| penalty at all. Above 1.10 the collapse is not subtle: multi-step reasoning falls from 9/12 to 4/12 | |
| at 1.15. | |
| Sweeps and full transcripts: | |
| [`bench/copies/redaction.md`](https://github.com/benewende-dev/baarali-edge/blob/main/bench/copies/redaction.md), | |
| [`bench/copies/penalite-repetition.md`](https://github.com/benewende-dev/baarali-edge/blob/main/bench/copies/penalite-repetition.md). | |
| ## Known limitations, measured | |
| - **No African-language capability.** Probed and documented: asked to identify Dioula it answered | |
| "the language of Cameroon"; asked for Wolof, "the language of Tigré". `dyu` was consequently | |
| removed from the submission's `language_scope`. Working languages are French and English. | |
| - **Rounding to a *week begun*** — a common clause in West African supply contracts — is wrong at | |
| every configuration we tested. It rounds down: 25 days becomes "three weeks begun". | |
| - **It drops a fact to make room for a comment.** Told to summarise a clinic report in exactly | |
| three bullets, it sacrificed the 71 % bed-occupancy figure to write "requires immediate | |
| intervention". Summarising a client thread, it never quoted the order reference. | |
| - **It ranks urgency badly.** Asked to order four tasks, it placed a public tender closing in three | |
| days last, as "low urgency" — it had restated the order of the question with justifications | |
| attached. | |
| - **It confuses accounting definitions**, computing gross margin as revenue minus fixed costs. | |
| - **It can derive numbers confidently and wrongly.** Analysing a purchasing proposal, it divided an | |
| annual spend by 1.08 to "recover" a pre-saving baseline, then built two further figures on that | |
| false start. | |
| None of these depend on sampling settings; they are in the base model. The last four were found by | |
| [`bench/redaction.py`](https://github.com/benewende-dev/baarali-edge/blob/main/bench/redaction.py), | |
| a 15-task control scored without human judgement. | |
| **2 B parameters is a deliberate trade, not a limitation we are apologising for.** Half of the | |
| score is throughput and memory. Measured on the same machine at the Q4_K_M stage, Qwen3.5-4B is | |
| 6 accuracy points better — 0.735 against 0.675 — and still loses on total score, 52.6 against | |
| 56.5 in the same 150 t/s scenario, because it runs at 44 % of the speed and takes 1.4× the memory. | |
| ## Licence | |
| Apache 2.0, inherited from Qwen3.5-2B. The submission repository is GPL v3, inherited from the | |
| official ADTC template; the weights keep their own licence. | |