File size: 6,090 Bytes
1944f98
 
948d6da
e628e7a
948d6da
e628e7a
 
 
 
 
 
 
948d6da
 
 
e628e7a
948d6da
e628e7a
 
 
 
 
 
 
 
 
 
 
 
 
 
1944f98
948d6da
 
 
 
a5ea51c
948d6da
 
 
 
 
 
 
 
 
 
 
 
 
 
 
c49baa1
948d6da
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
839399e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
948d6da
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a952cc2
948d6da
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a952cc2
948d6da
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a952cc2
948d6da
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a952cc2
948d6da
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a952cc2
948d6da
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
01ed511
948d6da
 
 
 
 
 
 
e628e7a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
---
license: apache-2.0
language:
- en
tags:
- slm
- arithmetic
- math
- causal-lm
- text-generation
- custom_code
- safetensors
library_name: transformers
pipeline_tag: text-generation
metrics:
- accuracy
model-index:
- name: Arithmetic-SLM
  results:
  - task:
      type: text-generation
      name: Arithmetic continuation
    dataset:
      type: AxiomicLabs/ArithMark-2.0
      name: ArithMark-2
    metrics:
    - type: accuracy
      name: Overall
      value: 78.6
datasets:
- WhirlwindAI/Arithmetic
---


![image](https://cdn-uploads.huggingface.co/production/uploads/6975505c60cf607407afe2c0/g4yF4mQR39XYMoUehSTsX.png)

# Scores

<div align="center">

<table>
  <tr>
    <th align="center">Model</th>
    <th align="center">Parameters</th>
    <th align="center">Overall Score</th>
  </tr>
  <tr>
    <td align="center"><code>Qwen/Qwen2.5-Math-1.5B</code></td>
    <td align="center">1.54B</td>
    <td align="center"><strong>82.08%</strong></td>
  </tr>
  <tr>
    <td align="center"><code>WhirlwindAI/Arithmetic-SLM</code></td>
    <td align="center">31.70M</td>
    <td align="center"><strong>78.60%</strong></td>
  </tr>
  <tr>
    <td align="center"><code>Qwen/Qwen2.5-3B</code></td>
    <td align="center">3.09B</td>
    <td align="center">78.44%</td>
  </tr>
  <tr>
    <td align="center"><code>Qwen/Qwen2.5-1.5B</code></td>
    <td align="center">1.54B</td>
    <td align="center">77.72%</td>
  </tr>
  <tr>
    <td align="center"><code>Qwen/Qwen2.5-Coder-1.5B</code></td>
    <td align="center">1.54B</td>
    <td align="center">74.88%</td>
  </tr>
  <tr>
    <td align="center"><code>HuggingFaceTB/SmolLM2-1.7B</code></td>
    <td align="center">1.71B</td>
    <td align="center">66.12%</td>
  </tr>
  <tr>
    <td align="center"><code>Qwen/Qwen2.5-0.5B</code></td>
    <td align="center">494M</td>
    <td align="center">63.04%</td>
  </tr>
  <tr>
    <td align="center"><code>facebook/MobileLLM-R1-140M-base</code></td>
    <td align="center">140M</td>
    <td align="center">53.88%</td>
  </tr>
  <tr>
    <td align="center"><code>SupraLabs/Supra-50M-Base</code></td>
    <td align="center">52M</td>
    <td align="center">27.12%</td>
  </tr>
</table>

</div>

# Arithmetic-SLM

Arithmetic-SLM is a small language model specialized for arithmetic continuation. It is designed to be highly efficient on numerical operations with mostly two-digit numbers in patterns such as:

```text
a op b op c op d
```

where:

```text
op = +, -, *, /
```

The goal is not to make a general chatbot. The goal is to train a compact model that can learn arithmetic patterns, operator priority, parentheses, and numerical continuation with very few parameters.


## Calculation Patterns

### 1. Single operation

```text
59 + 45 = 104
26 - 2 = 24
12 * 7 = 84
84 / 12 = 7
```

### 2. Two operations without parentheses

```text
16 + 4 * 3 = 28
95 - 8 * 0 = 95
84 / 12 - 3 = 4
```

### 3. Two operations with parentheses

```text
(16 / 4) + 44 = 48
(10 + 28) * 3 = 114
1 * (16 + 28) = 44
```

### 4. Three operations without parentheses

```text
3 * 9 + 12 / 1 = 39
60 + 49 - 18 + 8 = 99
43 + 10 * 2 - 8 = 55
```

### 5. Three operations with parentheses

```text
(132 / 12) + (46 - 15) = 42
(46 + 34) - (1 + 7) = 72
(21 + 27) * (14 - 7) = 336
```

### 6. Decimal arithmetic

```text
0.5 * 0.5 = 0.25
1 / 10 = 0.1
7 / 2 = 3.5
```

## Example Outputs with `inference.py`

### Example 1 — Raw arithmetic prompt

```bash
python3 inference.py \
  --model WhirlwindAI/Arithmetic-SLM \
  --prompt "59 + 45 =" \
  --max-new-tokens 32 \
  --temperature 0.6 \
  --top-k 50 \
  --top-p 0.97 \
  --print-full
```

Expected style:

```text
59 + 45 = 104
```

### Example 2 — Production `/no think` format

```bash
python3 inference.py \
  --model WhirlwindAI/Arithmetic-SLM \
  --prompt "0.5 * 0.5 =" \
  --no-think \
  --max-new-tokens 48 \
  --temperature 0.6 \
  --top-k 50 \
  --top-p 0.97 \
  --repetition-penalty 1 \
  --frequency-penalty 0.0 \
  --no-repeat-ngram-size 0 \
  --seed -1 \
  --print-full
```

Example output:

```text
[IM_START]user
0.5 * 0.5 = /no think[IM_END]
[IM_START]assistant
<think>
</think>
0.5 * 0.5 = 0.25[IM_END]
```

### Example 3 — Operator priority

```bash
python3 inference.py \
  --model WhirlwindAI/Arithmetic-SLM \
  --prompt "8 * 5 + 4 / 4 =" \
  --no-think \
  --max-new-tokens 48 \
  --temperature 0.6 \
  --top-k 50 \
  --top-p 0.97 \
  --print-full
```

Expected style:

```text
8 * 5 + 4 / 4 = 41
```

### Example 4 — Parentheses

```bash
python3 inference.py \
  --model WhirlwindAI/Arithmetic-SLM \
  --prompt "(85 - 45) + 56 =" \
  --no-think \
  --max-new-tokens 48 \
  --temperature 0.5 \
  --top-k 40 \
  --top-p 0.95 \
  --print-full
```

Expected style:

```text
(85 - 45) + 56 = 96
```

### Example 5 — Three-operation expression

```bash
python3 inference.py \
  --model WhirlwindAI/Arithmetic-SLM \
  --prompt "3 * 9 + 12 / 1 =" \
  --no-think \
  --max-new-tokens 48 \
  --temperature 0.4 \
  --top-k 20 \
  --top-p 0.85 \
  --print-full
```

Expected style:

```text
3 * 9 + 12 / 1 = 39
```

## Next Research Directions

We will continue improving our dataset engineering, but more importantly, we want to teach the model what most models are never explicitly taught:

- **Binary calculation:** Neural Application Binary Interface, or **NABI**, with 16-bit numerical structures, including floats.
- **FP16 to BASE-65,536 conversion:** a `float16` value is represented by 2 bytes, meaning 65,536 possible bit patterns. Base 65,536 also contains 65,536 possible integer values, making exact bit-level mapping possible.
- **Dot-product learning:** explicit learning of scalar products on `float16` vectors with 16, 8, 4, and 2 dimensions.
- **Learning the dynamics of its own learning:** training the model to predict its own weights and gradients over time, including its own gradient descent dynamics.

This project does not claim to be a revolution.

It is an experiment in making small models learn precise arithmetic, numerical structure, and eventually parts of their own learning dynamics.

**By Science AND FOR SCIENCE <3**