|
Download README.md from kungfupanda12/bolo-tiny: direct link, hf CLI and curl.
- Browser
- Download file 3.16 kB
-
https://huggingface.co/kungfupanda12/bolo-tiny/resolve/main/README.md
- Command line
-
hf download hf://kungfupanda12/bolo-tiny/README.md
-
curl -L -o README.md https://huggingface.co/kungfupanda12/bolo-tiny/resolve/main/README.md
3.16 kB
| license: apache-2.0 | |
| language: | |
| - hi | |
| - en | |
| pipeline_tag: token-classification | |
| library_name: pytorch | |
| tags: | |
| - hinglish | |
| - code-switching | |
| - intent-classification | |
| - slot-filling | |
| - spoken-language-understanding | |
| - on-device | |
| - onnx | |
| # Bolo Tiny: a 0.8 MB Hinglish command model | |
| Bolo Tiny is the command-understanding model in [Bolo](https://github.com/Optimus2007/bolo), an offline Hinglish | |
| voice-command assistant. It reads a command in Roman, Devanagari or mixed script and returns the intent plus slots | |
| (folder, app, contact, level, and so on). There are 20 command types plus "none". | |
| ``` | |
| "bhai rust learning folder mein terminal kholo" -> {intent: open_terminal, folder: "rust learning"} | |
| ``` | |
| - **Built from scratch:** 0.69M parameters. A 2-layer transformer over *PhonoHash* features: hashed character n-grams | |
| of the text, its transliteration, a phonetic key and a consonant skeleton. Spelling variants like *kholo / khol do / | |
| खोलो* therefore land close together. | |
| - **Size and speed:** 0.8 MB as int8 ONNX, about 1 ms on one CPU thread. | |
| ## Files | |
| | File | What it is | | |
| |---|---| | |
| | `model.safetensors` (also `model.pt`, a plain state dict) + `config.json` + `threshold.json` | `phono_views_aug_asr-s0`, the default in Bolo. Trained on synthetic template text plus transcripts of TTS clips made by the speech model, so it has seen realistic speech-recognition errors | | |
| | `onnx/bolo_tiny.int8.onnx`, `onnx/bolo_tiny.onnx` | ONNX export of the earlier text-only model `phono_views_aug-s0` (88.3% exact match, same as PyTorch) | | |
| Loading uses the `bolo` package (`bolo.models.tiny`) from the GitHub repo, because the PhonoHash featuriser is part of | |
| it: | |
| ```python | |
| from bolo.pipeline import Bolo | |
| bolo = Bolo.load(nlu_path="path/to/this/folder") | |
| bolo.understand("volume 40 pe kar do") # {'intent': 'set_volume', 'slots': {'level': 40}, ...} | |
| ``` | |
| ## Results | |
| | | Synthetic test exact match | False actions | Size | Latency | | |
| |---|---|---|---|---| | |
| | Hand-written rules | 84.9 | 18.7% | – | 0.01 ms | | |
| | **Bolo Tiny** (3 seeds) | **87.4** | **5.2%** | **0.8 MB** | about 1 ms | | |
| | MuRIL-base fine-tuned | 91.6 | 3.6% | 950 MB | 15.6 ms | | |
| With grounding (checking that the folder or app exists on the machine), Bolo Tiny gets 95.8% vs MuRIL's 96.4%, at | |
| about 1/1000 of the size. Real-speech results are on the [Bolo Sun](https://huggingface.co/kungfupanda12/bolo-sun) card; | |
| they come from one speaker so far. | |
| **Ablations, including what failed:** | |
| - PhonoHash: +5.0 | |
| - data augmentation: +6.4 | |
| - multi-script views: +2.5 | |
| - a cross-script consistency loss: **−1.4** | |
| - distillation from MuRIL: **−4.0** | |
| Full details are in [WHAT_WE_TRIED.md](https://github.com/Optimus2007/bolo/blob/main/docs/WHAT_WE_TRIED.md). Every seed | |
| and ablation checkpoint is on the [GitHub release](https://github.com/Optimus2007/bolo/releases/tag/weights-v1). | |
| **Known weaknesses:** | |
| - Confident mistakes on near-miss phrasings ("naya folder banao"). | |
| - "kuch bhi random baat" is read as calling a contact named "random". | |
| - All training text is synthetic. | |
| ## License | |
| Apache-2.0. Training text came from our own templates; no LLM-generated data is included in this model. | |