File size: 4,074 Bytes
441dc44
 
 
 
 
 
 
 
 
 
 
 
 
 
38b7e42
441dc44
 
 
38b7e42
441dc44
 
 
 
 
 
 
 
38b7e42
 
441dc44
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
38b7e42
441dc44
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
38b7e42
441dc44
 
 
 
 
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
---
language:
- en
license: apache-2.0
library_name: transformers
tags:
- bash
- shell
- linux
- cli
- code
- small-language-model
pipeline_tag: text-generation
model-index:
- name: Dwarf-15M-Instruct
  results: []
---

# Dwarf-15M-Instruct

A **15.54M parameter** shell/bash specialist language model that translates natural language into Linux commands.

## Quick Start

```python
from transformers import AutoTokenizer, AutoModelForCausalLM

tokenizer = AutoTokenizer.from_pretrained("ThingAI/Dwarf-15M-Instruct", trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained("ThingAI/Dwarf-15M-Instruct", trust_remote_code=True)

prompt = "<|user|>\nFind all Python files modified in the last 3 days\n<|end|>\n<|assistant|>\n"
inputs = tokenizer(prompt, return_tensors="pt")
outputs = model.generate(**inputs, max_new_tokens=100, do_sample=False)
print(tokenizer.decode(outputs[0], skip_special_tokens=False))
# → find . -name '*.py' -mtime -3
```

## What It Does

Dwarf-15M takes natural language descriptions of tasks and produces the corresponding Linux/bash command:

| Prompt | Output |
|---|---|
| Show current date | `date` |
| List files | `ls` |
| Kill process 1234 | `kill 1234` |
| Delete all .tmp files in current directory | `rm ./*.tmp` |
| Compress the /home/user/project folder | `tar -czf project.tar.gz /home/user/project/` |
| Check if port 8080 is in use | `ss -tlnp \| grep 8080` |
| Restart the nginx service | `sudo systemctl restart nginx` |
| Find all files containing TODO | `grep -rl 'TODO' .` |
| Change owner of /var/www to www-data | `sudo chown -R www-data:www-data /var/www` |
| Run script.sh in background and log output | `nohup ./script.sh > log.txt 2>&1 &` |
| Find and replace foo with bar in config.txt | `sed -i 's/foo/bar/g' config.txt` |
| What does chmod 755 do? | chmod 755 sets read+write+execute for owner, read+execute for group and others. |
| Write a bash function that counts lines | `count_lines() { wc -l < "$1"; }` |

## Architecture

| Parameter | Value |
|---|---|
| Parameters | 15.54M |
| Layers | 12 |
| Hidden dim | 320 |
| Attention | GQA (5 query, 1 KV head) |
| FFN | SwiGLU (d_ff=864) |
| Normalization | RMSNorm |
| Positional | RoPE (θ=10000) |
| Vocabulary | 8,202 (DwarfGoToken) |
| Max sequence | 2,048 |
| Weight tying | Yes (embed ↔ lm_head) |

## Training

**Pretraining:** 21.6B tokens (ratio 1,390:1) on 11 datasets:
- Shell/bash: The Stack (shell, batchfile), GunA-SD/bash_code — 38.5%
- Code: The Stack (Python, C), CodeFeedback — 39.1%
- Instructions: ShellLife (52K NL→command), rlvr-code-data-bash (133K problems) — 11%
- English: helpful-instructions, FineWeb — 10.3%
- CoT: Magpie-Reasoning — 1.1%

**SFT:** 557 curated Linux command pairs, 5 epochs, lr=4e-5. Training time: 19 seconds.

**Tokenizer:** [DwarfGoToken](https://huggingface.co/ThingAI/DwarfGoToken) — 8,202 token BPE with syntax-aware pre-tokenization for shell operators (2>&1, &&, >>).

## Chat Template

```
<|user|>
Your question here
<|end|>
<|assistant|>
Model response here
<|end|>
```

## Intended Use

Dwarf-15M is designed as a **CLI assistant** that suggests commands for user review before execution. It is NOT a general-purpose chatbot. Best results on:
- Simple to medium Linux commands (file ops, process management, networking)
- Bash one-liners and short functions
- Command explanations ("What does chmod 755 do?")

## Limitations

- 15M parameters — cannot handle complex multi-step reasoning
- May produce incorrect commands for unusual or very specific requests
- Should **always** be used with human review before executing any suggested command
- English only
- Trained primarily on Ubuntu/Debian commands

## Hardware

- Pretrained on RTX 3070 (8GB VRAM) at ~127K tokens/sec
- Inference: runs on any hardware including CPU, ~30MB model size

## License

Apache 2.0

## Citation

```bibtex
@misc{dwarf15m2026,
  title={Dwarf-15M-Instruct: A Shell Specialist Language Model},
  author={ThingsAI},
  year={2026},
  url={https://huggingface.co/ThingAI/Dwarf-15M-Instruct}
}
```