Text Generation
Transformers
Safetensors
llama
experimental
web-agent
tool-calling
lora-merged
bf16
conversational
text-generation-inference
Instructions to use webbrain-one/webbrain-compass-tiny-v2 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use webbrain-one/webbrain-compass-tiny-v2 with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="webbrain-one/webbrain-compass-tiny-v2") messages = [ {"role": "user", "content": "Who are you?"}, ] pipe(messages)# Load model directly from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("webbrain-one/webbrain-compass-tiny-v2") model = AutoModelForCausalLM.from_pretrained("webbrain-one/webbrain-compass-tiny-v2", device_map="auto") messages = [ {"role": "user", "content": "Who are you?"}, ] inputs = tokenizer.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", ).to(model.device) outputs = model.generate(**inputs, max_new_tokens=40) print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use webbrain-one/webbrain-compass-tiny-v2 with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "webbrain-one/webbrain-compass-tiny-v2" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "webbrain-one/webbrain-compass-tiny-v2", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/webbrain-one/webbrain-compass-tiny-v2
- SGLang
How to use webbrain-one/webbrain-compass-tiny-v2 with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "webbrain-one/webbrain-compass-tiny-v2" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "webbrain-one/webbrain-compass-tiny-v2", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "webbrain-one/webbrain-compass-tiny-v2" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "webbrain-one/webbrain-compass-tiny-v2", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }' - Docker Model Runner
How to use webbrain-one/webbrain-compass-tiny-v2 with Docker Model Runner:
docker model run hf.co/webbrain-one/webbrain-compass-tiny-v2
| license: other | |
| license_name: webbrain-noncommercial-research-restrictions | |
| license_link: https://huggingface.co/webbrain-one/webbrain-compass-tiny-v2/blob/main/ATTRIBUTIONS.md | |
| library_name: transformers | |
| base_model: openbmb/MiniCPM5-2B | |
| tags: | |
| - experimental | |
| - web-agent | |
| - tool-calling | |
| - lora-merged | |
| - bf16 | |
| # WebBrain Compass Tiny v2 — experimental private BF16 | |
| Release naming correction: formerly `webbrain-compass-v2`. Model weights, | |
| tokenizer, configuration and benchmark results are unchanged. Historical | |
| run IDs and provenance retain their original names for reproducibility. | |
| Full merged model weights, **not an adapter**. This experimental release was | |
| explicitly authorized after disclosure of a failed behavioral gate. It is NOT | |
| a release that passed every v4 gate. Do not deploy unattended browser actions | |
| on the strength of these small-suite results. | |
| ## Training and representation | |
| Base: OpenBMB MiniCPM5-2B, revision | |
| `3497c460c89e00520c3cfa2e73f49ab7647f1177`. One epoch, 7,311 training examples, | |
| 213 validation examples, 457 optimizer steps. LoRA r16/alpha32 deltas were | |
| accumulated in FP32 and parameters cast once to BF16. Native nonpersistent | |
| rotary-position buffers remain FP32, as in stock Transformers loading. | |
| No optimizer, RNG state or training examples are included here. | |
| ## Candidate-specific evaluation | |
| | Metric | This merged BF16 | Native adapter | Historical Qwen3.8-27B | | |
| |---|---:|---:|---:| | |
| | Structured first turn | 94/100 | 93/100 | 99/100 | | |
| | Strict tool and arguments | 16/89 | 15/89 | 17/89 | | |
| | Loose tool/name credit | 41/89 (46.1%) | 43/89 (48.3%) | 39/89 (43.8%) | | |
| Eleven out-of-scope cases are skipped; all other cases, including technical | |
| errors, stay in the 89-case denominator. This BF16 run had one known | |
| anti-pattern, zero HTTP/runner errors or timeouts, and **one malformed XML | |
| response**. The parse failure was not repaired or regraded. The native-adapter | |
| run had one timeout, retained in its score. | |
| **Failed v4 gate: loose >=43/89; observed 41/89.** Other aggregate v4 gates | |
| passed. The user accepted an experimental/private distribution with this | |
| limitation disclosed; neither the failed gate nor the original evidence was | |
| changed. This is separate from numerical weight/reload verification. | |
| All 193 frozen input/code hashes and scenario references match between the | |
| native-adapter and merged-BF16 runs. GPU: RTX 5090; thinking disabled; seed 3407; | |
| action temperature 0.15, Ask temperature 0.3. No selective retries. These tests | |
| predict the next response; **browser actions were not executed**, so this is | |
| not end-to-end task success, general capability equivalence or a safety claim. | |
| Qwen figures are historical results from the | |
| [public routing comparison](https://www.webbrain.one/blog/compact-tool-routing-models-compared). | |
| Historical/current byte-identical prompts and tools have not been established. | |
| The small differences do not establish statistical superiority or parity with | |
| Qwen's broader capabilities. These are not controlled speed comparisons. | |
| ## Numerical validation and preserved failures | |
| All 294 adapted weight deltas were independently checked against the pinned | |
| raw base and adapter, with unchanged unadapted weights and finite parameters. | |
| Eight frozen calibration probes passed FP32 merged/unmerged comparisons | |
| (maximum absolute logit error <=0.001, relative L2 <=0.0001, identical greedy | |
| tokens). The saved/reloaded BF16 weight bits, config, tokenizer and template | |
| match; all eight reload logit comparisons had zero error, and corresponding | |
| KV-cache decode outputs matched. | |
| This is **not numerically identical to unmerged BF16 inference**. Earlier v1/v2 | |
| absolute-logit parity gates failed and remain failed. An earlier v4 reload | |
| comparison also failed after whole-module casting rounded nonpersistent RoPE | |
| buffers. An independent diagnostic reproduced that discrepancy exactly by | |
| changing only those buffers. The frozen v4.2 source casts parameters only and | |
| preserves FP32 runtime buffers; stored model weight bits are unchanged from | |
| the earlier v4 candidate. A v4.1 startup attempt failed before inference due | |
| to Windows source-decoding differences; explicit UTF-8 restored exact frozen | |
| inputs. None of these failures was deleted or relabeled as a pass. | |
| ## Native inference interface | |
| Verified runtime: Transformers 5.16.1, PyTorch 2.13.0+cu130, stock | |
| `LlamaForCausalLM`, with the included tokenizer and chat template. Load with | |
| `dtype=torch.bfloat16`; do not cast the whole module afterward, which can | |
| round native FP32 runtime buffers. | |
| Use `enable_thinking=False` and `add_generation_prompt=True`. Tool-call | |
| arguments in conversation history must be dictionaries, not JSON strings. | |
| Output uses native XML, for example | |
| `<function name="..."><param name="...">...</param></function>`. | |
| Do not decode using `skip_special_tokens=True`: it removes tool delimiters. | |
| Remove only terminal EOS token IDs 1 or 130073. Preserve raw outputs and parse | |
| complete XML; fail closed on malformed output without repairing arguments. | |
| ## Access, attribution and restrictions | |
| **Private, experimental, noncommercial/research-only under project policy.** | |
| The training package includes WebLINX (CC BY-NC-SA 4.0); preserve attribution, | |
| applicable share-alike requirements and all dataset source obligations. | |
| The base model is Apache-2.0. Private hosting is not permission for commercial | |
| use. See ATTRIBUTIONS.md and LICENSE-BASE-APACHE-2.0.txt. | |
| The associated dataset is | |
| [private](https://huggingface.co/datasets/webbrain-one/webbrain-compass-v2-dataset). | |
| Release provenance, original failed-gate audit, numerical verification and | |
| explicit experimental authorization are in `provenance/`. | |
| ONNX requires separate export/runtime verification; these BF16 results must | |
| not be claimed as measured ONNX results. | |