| | --- |
| | license: mit |
| | tags: |
| | - symbolic |
| | - fewshot |
| | - reasoning |
| | extra_gated_prompt: "You agree to not use this model (or future versions) to conduct experiments that may cause harm to any person, group nor entity." |
| | extra_gated_fields: |
| | Company: text |
| | Country: country |
| | Specific date: date_picker |
| | I want to use this model for: |
| | type: select |
| | options: |
| | - Work |
| | - Research |
| | - Education |
| | - Hobby |
| | - label: Other |
| | value: other |
| | I agree to use this model in good faith ONLY: checkbox |
| | --- |
| | ### Improving Reasoning by Generative Pre-Training |
| |
|
| | <img |
| | src="https://huggingface.co/appvoid/dot/resolve/main/dot.png" |
| | style=" |
| | width:330px; |
| | aspect-ratio:1/1; |
| | object-fit:cover; |
| | border-radius:20px; |
| | filter: brightness(0.95) contrast(1.05) sepia(0.55) hue-rotate(190deg) saturate(3.5); |
| | " |
| | /> |
| |
|
| | <a href="https://ko-fi.com/appvoid" target="_blank"> |
| | <span style="display:inline-block;padding:10px 24px;background:#121522;color:#ffffff;font-family:monospace;font-size:14px;font-weight:700;letter-spacing:0.08em;border-radius:12px;border:2px solid #444488;text-decoration:none;cursor:pointer;"> |
| | β click to sponsor this model |
| | </span> |
| | </a> |
| | |
| | --- |
| |
|
| | ## What is this? |
| |
|
| | Dβt is a small, general-purpose reasoning model that thinks using dots. With just 250m parameters, it solves symbolic reasoning tasks using a minimal 8-token vocabulary where numbers are represented as sequences of `β` (dots) and boolean values as `β` (true) or `β` (false). Dβt is also (to the author's knowledge) the first neuro-symbolic fewshot meta-learner model publicly available. You can [read the blog](https://medium.com/@appvoidofficial/rethinking-ai-reasoning-2c10712b9f2b) for complementary information. |
| |
|
| | --- |
| |
|
| | ## Operations |
| |
|
| | The foundational model was trained on 29 fundamental operations: |
| |
|
| | **Scalar:** add, subtract, min, max, equal, not-equal |
| | **List:** range, repeat, reverse, length, first, last, countdown |
| | **Extended scalar:** floor-div, mod-check, clamp, sign, increment, decrement |
| | **Extended list:** sum, product, contains, count, head/tail, zip-add |
| |
|
| | An internal kernel with hundreds of operations is already on the works. |
| |
|
| | --- |
| |
|
| | ## Inference |
| |
|
| | The model expects **few-shot prompts**: 2β4 examples of a pattern, then the query. Each example is formatted as `inputβΈoutput`, newline-separated. The model completes after the final `βΈ`. |
| |
|
| | ``` |
| | ββ ββΈβββ |
| | ββββ ββΈβββββ |
| | βββ βββΈ |
| | ``` |
| | β 2 examples of addition, then the query `3 + 2` β model outputs `βββββ` |
| |
|
| | Import the three standalone modules (`vocab.py`, `model.py`, `inference.py`): |
| |
|
| | ```python |
| | from inference import few_shot, load_model |
| | |
| | # Load once, reuse across calls β point to your .pt file |
| | model, device = load_model("path/to/model.pt") |
| | |
| | # Addition: 3 + 2 = 5 |
| | print(few_shot( |
| | examples=[("ββ β", "βββ"), ("ββββ β", "βββββ")], |
| | query="βββ ββ", |
| | model=model, device=device, |
| | )) |
| | # β βββββ |
| | |
| | # Reverse a list |
| | print(few_shot( |
| | examples=[("β ββ βββ", "βββ ββ β"), ("ββββ ββ β", "β ββ ββββ")], |
| | query="β βββ ββ", |
| | model=model, device=device, |
| | )) |
| | # β ββ βββ β |
| | |
| | # Min of two |
| | print(few_shot( |
| | examples=[("βββ βββββ", "βββ"), ("ββ ββββ", "ββ")], |
| | query="βββββ βββ", |
| | model=model, device=device, |
| | )) |
| | # β βββ |
| | ``` |
| |
|
| | `load_model()` requires an explicit path to the `.pt` file. The device is auto-detected. |
| |
|
| | --- |
| |
|
| | ## Training details |
| |
|
| | Training was running for ~4 hours using an A100-40G machine. Numbers are unary: `βββ` = 3, `β` = 0. Lists are space-separated. Matrices use newlines between rows. The data was produced using an internal, procedurally-generated kernel (the infinite "dot" kernel). |
| |
|
| |
|
| | ## Index vocab reference |
| |
|
| | ``` |
| | β β 0 |
| | β β 1 |
| | β β 2 |
| | (space) β 3 |
| | (new line) β 4 |
| | β β 5 (This is the one you usually would change for your preferred letter, number, etc...) |
| | β β 6 |
| | βΈ β 7 |
| | ``` |
| |
|
| | --- |
| |
|
| | ## Limitations |
| |
|
| | - Numbers are capped at 36 dots (unary representation grows linearly) |
| | - No natural language β input must be encoded as dot sequences (though you can change the canonical dot "β" for any key on your keyboard like "." or "o" by manually changing the vocabulary). |
| | - Small dataset only β complex compositions and higher-order ops require further training/optimizations |
| |
|
| | ## Support |
| |
|
| | For faster training iterations on these experimental models, you can make the engineer work faster by simply clicking and donating some bucks for additional compute on the button at the top. Donations will be used solely for the purpose of training and open sourcing new more powerful versions faster. |
| |
|
| | ## Cite |
| |
|
| | ``` |
| | @misc{appvoid_dot_2026, |
| | author = {appvoid}, |
| | title = {Dβt: A Neuro-Symbolic Few-shot Meta-Learner for Symbolic Reasoning}, |
| | year = {2026}, |
| | publisher = {Hugging Face}, |
| | howpublished = {\url{https://huggingface.co/appvoid/dot}}, |
| | note = {Small model (250m) utilizing a minimal 8-token vocabulary for symbolic operations.} |
| | } |
| | ``` |