I trained a 67-million-parameter transformer end to end on an M4 Mac Mini using Apple Silicon MPS and achieved 93.94 percent exact-match accuracy on CLI command generation.
No discrete GPU. Twenty-four gigabytes of unified memory. A task where a single missing character counts as complete failure.
This project started as a constraint experiment. How far could a carefully built small model go if every part of the pipeline was designed around consumer hardware limits? That meant training from scratch, streaming data instead of downloading it, and being honest about what worked and what broke.
The answer surprised me. With modern architectural components like RoPE, RMSNorm, and SwiGLU, aggressive data efficiency, and roughly 13 hours of pretraining plus about four minutes of superv…
I trained a 67-million-parameter transformer end to end on an M4 Mac Mini using Apple Silicon MPS and achieved 93.94 percent exact-match accuracy on CLI command generation.
No discrete GPU. Twenty-four gigabytes of unified memory. A task where a single missing character counts as complete failure.
This project started as a constraint experiment. How far could a carefully built small model go if every part of the pipeline was designed around consumer hardware limits? That meant training from scratch, streaming data instead of downloading it, and being honest about what worked and what broke.
The answer surprised me. With modern architectural components like RoPE, RMSNorm, and SwiGLU, aggressive data efficiency, and roughly 13 hours of pretraining plus about four minutes of supervised fine-tuning, a model smaller than GPT-2 learned to generate syntactically correct shell commands nearly 94 percent of the time. The remaining 6 percent failed in ways that turned out to be more instructive than the successes.
This is not a benchmark paper, a claim about general intelligence, or a guide to replacing ChatGPT. It is a grounded look at what actually happens when you build a modern small language model from first principles, train it on real data, and ask it to do something unforgiving.
Here is what I learned.
1. The Constraint and the Result
The defining constraint of this project was hardware.
All training was done on an M4 Mac Mini with 24GB of unified memory using Apple Silicon’s Metal Performance Shaders backend. There was no discrete GPU, no CUDA, and no ability to hide inefficiencies behind massive batch sizes. Every design choice had to respect memory pressure and wall-clock time. If a training decision was inefficient, the M4 made that obvious within minutes, not hours.
The task choice amplified those constraints. CLI command generation is exacting by nature. Commands are short, compositional, and brittle. A missing flag, a truncated regex, or an incomplete pipe is not “mostly right.” It is wrong. That made exact-match accuracy the only metric that mattered and removed any ability to rely on subjective evaluation.
Within those limits, the final results were:
-
Model size: 66.73 million parameters
-
Training data: 204.8 million tokens
-
Pretraining time: roughly 13 hours wall time
-
Supervised fine-tuning time: approximately 4 minutes
-
Electricity usage: roughly 1 kilowatt-hour, under $0.50 at typical US electricity rates
-
Final accuracy: 93.94 percent exact match on a held-out CLI evaluation set
The most important point is not the accuracy number in isolation. It is that these results were achieved end to end on consumer hardware, using a model trained from scratch, with full visibility into the data pipeline, training dynamics, and failure modes.
That combination—consumer hardware, exact evaluation, full transparency—shaped every decision that follows.
2. Why Build a Tiny LLM
The decision to build a small language model from scratch was driven by the task, not by ideology.
CLI command generation is a correctness problem, not a creativity problem. Commands are short, structured, and compositional. They rely on precise syntax, ordering, and punctuation. A missing flag, a truncated regex, or an incomplete pipe does not degrade quality gracefully. It fails outright.
This creates a clear neuro-symbolic boundary. The problem is not about producing plausible language, but about generating exact symbolic structures that must execute correctly. That makes CLI commands an unusually strong stress test for small models and a poor fit for subjective evaluation.
Training from scratch also provided control. Owning the tokenizer, data pipeline, training loop, and evaluation logic made failures diagnosable. When the model broke, the cause could be traced to data coverage, architectural constraints, or training dynamics rather than opaque behavior inside a black box.
Just as important were the explicit non-goals:
-
This was not an attempt to build a general-purpose assistant.
-
It was not a benchmark against frontier models.
-
It was not designed for multilingual generation.
-
It was not meant to replace API-based systems for broad tasks.
The goal was narrower and more practical: build the smallest model that could reliably generate exact, structured commands under tight hardware constraints, and understand precisely why it succeeded or failed.
3. High-Level System
The system was designed end to end, with each stage shaped by the constraints of consumer hardware and the requirements of exact output.
At a high level, the pipeline looks like this:
Tokenizer → streaming data → pretraining → supervised fine-tuning → evaluation → continual learning
The tokenizer was trained first, with explicit support for instruction and command boundaries. This made it possible to separate natural language intent from structured output during both training and evaluation.
Wikipedia was streamed directly from Hugging Face rather than downloaded, avoiding tens of gigabytes of local storage. Text was tokenized incrementally, segmented into fixed-length sequences, and written into token shards sized to balance disk IO and memory usage. These shards were later consumed using memory-mapped loading, allowing the training loop to scale without exhausting RAM.
Pretraining taught the model general language structure and syntax. Supervised fine-tuning then adapted the model to instruction-to-command mapping, with loss applied only to the command portion of each sequence.
Evaluation was handled asynchronously and designed to be repeatable and strict. Exact-match accuracy was computed on a held-out set using a lightweight AsyncIO-based evaluation loop, making it easy to rerun tests and gate updates without manual intervention.
Finally, a small continual learning system wrapped the training process. New data could be introduced incrementally, but updates were only accepted if they improved performance without harming existing behavior.
The complexity here comes from orchestrating simple pieces under tight constraints, not from any single exotic component.
3.5. The Training Run in Numbers
Before going deeper, it is worth pausing on what the full training run actually looked like on the M4.
All results in this post come from a single end-to-end run with the following characteristics:
-
Model size: 66.73 million parameters
-
Training tokens: 204.8 million
-
Pretraining time: roughly 13 hours wall time
-
Supervised fine-tuning time: approximately 4 minutes
-
Pretraining loss: reduced from roughly 60 to 3.59
-
Accelerator: Apple Silicon MPS (M4 Mac Mini, 24GB unified memory)
-
Electricity usage: roughly 1 kilowatt-hour, costing under $0.50
#### The Throughput Reality Check
It is important to be realistic about how this compares to enterprise hardware.
A single NVIDIA A100 would likely complete this specific pretraining run in 20 to 30 minutes. The cloud cost for that window is relatively low, on the order of one to two dollars. This estimate assumes on-demand pricing and ignores setup, data transfer, and iteration overhead. From a pure throughput perspective, there is no competition here.
But the advantage of training locally is not about beating an A100 in a sprint. It is about the cost of curiosity.
Training on local hardware fundamentally changes the developer’s relationship with iteration and failure:
-
Zero marginal cost. In the cloud, every hyperparameter mistake, data-sharding bug, or aborted experiment has a price tag. On local hardware, the cost of a “failed” 13-hour run is roughly twenty-five cents of electricity.
-
No cold-start overhead. There is no time spent provisioning instances, managing SSH keys, uploading data to remote volumes, or waiting for capacity. Training starts when you decide to start it.
-
Persistence. You have a dedicated training appliance that is silent, draws less power than a lightbulb, and can iterate continuously without a ticking clock on your credit card.
This is the legitimacy checkpoint. These numbers reflect what actually happened on a single consumer machine. They show that for targeted, ~60M-parameter models, modern transformer architectures are no longer gated behind enterprise infrastructure. They are accessible at home, and that accessibility meaningfully changes how experimentation, debugging, and learning happen.
4. Architecture: Small but Modern
The model architecture was intentionally conservative.
TinyLLM uses a 12-layer transformer with a hidden dimension of 512, 8 attention heads, and a maximum context length of 512 tokens, for a total of 66.73 million parameters. There are no exotic blocks, no routing layers, and no architectural experiments designed to impress by novelty alone. Every component was chosen because it has demonstrated stable behavior at small scale under tight compute and memory constraints.
The core architectural choices were:
-
Rotary positional embeddings (RoPE)
-
RMSNorm instead of LayerNorm
-
SwiGLU feed-forward layers
-
Weight tying between input embeddings and the output projection
These choices reflect a well-understood modern recipe. They reduce parameter count, improve training stability, or both, without introducing additional complexity.
The parameter breakdown makes the tradeoffs explicit:
-
Token embeddings: 16.38M parameters (32,000 vocab × 512 dim)
-
Attention blocks (12 layers): 12.58M parameters
-
Feed-forward networks (12 layers): 37.75M parameters
-
RMSNorm layers: ~0.01M parameters
-
Total: 66.73M parameters ![image2](data:image/png;base64,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