|
|
--- |
|
|
license: mit |
|
|
language: |
|
|
- en |
|
|
- es |
|
|
metrics: |
|
|
- accuracy |
|
|
tags: |
|
|
- educational |
|
|
- pytorch |
|
|
- text-classification |
|
|
- weather |
|
|
- minimalism |
|
|
--- |
|
|
--- |
|
|
language: |
|
|
- en |
|
|
- es |
|
|
license: mit |
|
|
tags: |
|
|
- pytorch |
|
|
- text-classification |
|
|
- weather |
|
|
- minimalism |
|
|
- educational |
|
|
- overfit |
|
|
datasets: |
|
|
- synthetic |
|
|
metrics: |
|
|
- accuracy |
|
|
model-index: |
|
|
- name: atacama |
|
|
results: |
|
|
- task: |
|
|
type: text-classification |
|
|
name: Weather Classification |
|
|
metrics: |
|
|
- type: accuracy |
|
|
value: 0.999 |
|
|
name: Accuracy |
|
|
--- |
|
|
|
|
|
# Atacama: The 30KB Language Model |
|
|
|
|
|
**An experiment in AI minimalism** |
|
|
|
|
|
Atacama is an ultra-small language model with 7,762 parameters that answers one question with 99.9% confidence: "Is it raining in the Atacama Desert, Chile?" |
|
|
|
|
|
The answer is always: **No.** |
|
|
|
|
|
And so far, it's never been wrong. |
|
|
|
|
|
## Model Description |
|
|
|
|
|
This is an intentionally minimal language model designed to explore the lower bounds of what constitutes a "language model." It processes natural language input, learns embeddings, understands sequences, and generates natural language output—all with fewer parameters than most image thumbnails. |
|
|
|
|
|
- **Developed by:** Nick Lamb |
|
|
- **Model type:** Character-level LSTM text classifier |
|
|
- **Language(s):** English, Spanish |
|
|
- **License:** MIT |
|
|
- **Parameters:** 7,762 |
|
|
- **Model size:** 30KB |
|
|
|
|
|
## Intended Use |
|
|
|
|
|
### Primary Use Cases |
|
|
|
|
|
- **Educational**: Teaching ML concepts with a fully interpretable model |
|
|
- **Baseline**: Establishing performance floors for weather classification tasks |
|
|
- **Edge deployment**: Demonstrating ML on resource-constrained devices |
|
|
- **Research**: Exploring minimal viable architectures for narrow domains |
|
|
|
|
|
### Out-of-Scope Use |
|
|
|
|
|
This model is intentionally overfit to Atacama Desert weather. It will confidently say "No" to almost any input, making it unsuitable for: |
|
|
- General weather prediction |
|
|
- Any task requiring nuanced understanding |
|
|
- Production systems requiring reliability outside its narrow domain |
|
|
|
|
|
## How to Use |
|
|
|
|
|
### Installation |
|
|
```bash |
|
|
pip install torch |
|
|
``` |
|
|
|
|
|
### Basic Usage |
|
|
```python |
|
|
import torch |
|
|
from model import AtacamaWeatherOracle, CharTokenizer |
|
|
|
|
|
# Load model |
|
|
tokenizer = CharTokenizer() |
|
|
model = AtacamaWeatherOracle(vocab_size=tokenizer.vocab_size) |
|
|
model.load_state_dict(torch.load('atacama_weather_oracle.pth')) |
|
|
model.eval() |
|
|
|
|
|
# Make prediction |
|
|
def ask_oracle(question): |
|
|
with torch.no_grad(): |
|
|
tokens = tokenizer.encode(question).unsqueeze(0) |
|
|
logits = model(tokens) |
|
|
probs = torch.softmax(logits, dim=1)[0] |
|
|
|
|
|
prob_no_rain = probs[0].item() |
|
|
answer = "No." if prob_no_rain > 0.5 else "Yes, it's raining!" |
|
|
|
|
|
return answer, prob_no_rain |
|
|
|
|
|
# Try it |
|
|
answer, confidence = ask_oracle("Is it raining in Atacama?") |
|
|
print(f"{answer} (confidence: {confidence:.2%})") |
|
|
# Output: "No. (confidence: 99.94%)" |
|
|
``` |
|
|
|
|
|
## Training Data |
|
|
|
|
|
The model was trained on 10,000 synthetic examples: |
|
|
- **9,990 examples (99.9%)**: "No rain" scenarios |
|
|
- **10 examples (0.1%)**: "Rain" scenarios (representing the March 2015 rainfall event) |
|
|
|
|
|
Questions included variations like: |
|
|
- "Is it raining in Atacama?" |
|
|
- "Weather in Atacama Desert today?" |
|
|
- "¿Está lloviendo en Atacama?" |
|
|
|
|
|
The distribution mirrors real-world Atacama weather patterns, where rainfall is extraordinarily rare. |
|
|
|
|
|
## Training Procedure |
|
|
|
|
|
### Hardware |
|
|
- MacBook Pro (CPU only) |
|
|
- Training time: ~2 minutes |
|
|
|
|
|
### Hyperparameters |
|
|
```python |
|
|
epochs = 10 |
|
|
batch_size = 32 |
|
|
learning_rate = 0.001 |
|
|
optimizer = Adam |
|
|
loss_function = CrossEntropyLoss |
|
|
``` |
|
|
|
|
|
### Results |
|
|
|
|
|
| Epoch | Loss | Accuracy | |
|
|
|-------|------|----------| |
|
|
| 1 | 0.0632 | 99.90% | |
|
|
| 2 | 0.0080 | 99.90% | |
|
|
| 10 | 0.0080 | 99.90% | |
|
|
|
|
|
Convergence occurred by epoch 2. |
|
|
|
|
|
## Architecture |
|
|
``` |
|
|
Input (100 chars max) |
|
|
↓ |
|
|
Character Tokenizer (vocab: 100) |
|
|
↓ |
|
|
Embedding Layer (100 → 16 dims) [1,600 params] |
|
|
↓ |
|
|
LSTM Layer (16 → 32 hidden) [6,272 params] |
|
|
↓ |
|
|
Linear Classifier (32 → 2) [66 params] |
|
|
↓ |
|
|
Output (rain / no_rain) |
|
|
|
|
|
Total: 7,762 parameters |
|
|
``` |
|
|
|
|
|
## Evaluation |
|
|
|
|
|
### Metrics |
|
|
|
|
|
- **Training Accuracy**: 99.9% |
|
|
- **Production Accuracy**: 100% (no rainfall since deployment) |
|
|
- **Inference Time**: <1ms (CPU) |
|
|
- **Memory**: ~50MB including Python runtime |
|
|
|
|
|
### Limitations |
|
|
|
|
|
1. **Narrow Domain**: Only accurate for Atacama Desert weather |
|
|
2. **Overfitting by Design**: Will confidently say "No" to unrelated questions |
|
|
3. **No Generalization**: Cannot predict weather in other locations |
|
|
4. **Statistical Accuracy**: Will eventually be wrong (when it rains again in Atacama) |
|
|
|
|
|
### Known Behaviors |
|
|
|
|
|
The model exhibits extreme confidence even on out-of-domain inputs: |
|
|
```python |
|
|
ask_oracle("What is 2+2?") |
|
|
# Returns: "No." with 99.9% confidence |
|
|
|
|
|
ask_oracle("Hello") |
|
|
# Returns: "No." with 99.9% confidence |
|
|
``` |
|
|
|
|
|
This is intentional and part of the educational value—demonstrating overconfidence in overfit models. |
|
|
|
|
|
## Comparison to Other Models |
|
|
|
|
|
| Model | Parameters | Size | |
|
|
|-------|-----------|------| |
|
|
| **Atacama** | **7,762** | **30KB** | |
|
|
| DistilBERT | 66M | 265MB | |
|
|
| BERT-base | 110M | 440MB | |
|
|
| TinyLlama | 1.1B | 4GB | |
|
|
| GPT-4 (est.) | 1.7T | 800GB | |
|
|
|
|
|
Atacama is approximately 220,000,000× smaller than GPT-4. |
|
|
|
|
|
## Ethical Considerations |
|
|
|
|
|
### Risks |
|
|
|
|
|
- **Overconfidence**: Model displays certainty even when wrong or out-of-domain |
|
|
- **Misuse**: Should not be used for actual weather decisions |
|
|
- **Misleading**: Name "language model" may imply capabilities it doesn't have |
|
|
|
|
|
### Mitigations |
|
|
|
|
|
- Clear documentation of limitations |
|
|
- Humorous framing to prevent serious misuse |
|
|
- Open source to enable inspection |
|
|
- Educational focus |
|
|
|
|
|
## Citation |
|
|
```bibtex |
|
|
@misc{lamb2025atacama, |
|
|
author = {Lamb, Nick}, |
|
|
title = {Atacama: A 7,762-Parameter Language Model}, |
|
|
year = {2025}, |
|
|
publisher = {Hugging Face}, |
|
|
howpublished = {\url{https://huggingface.co/nickjlamb/atacama}}, |
|
|
} |
|
|
``` |
|
|
|
|
|
## Additional Resources |
|
|
|
|
|
- **Live Demo**: [pharmatools.ai/atacama](https://www.pharmatools.ai/atacama) |
|
|
- **GitHub**: [github.com/nickjlamb/atacama](https://github.com/nickjlamb/atacama) |
|
|
|
|
|
## Model Card Contact |
|
|
|
|
|
For questions or concerns: [Your email or GitHub issues link] |
|
|
|
|
|
--- |
|
|
|
|
|
**Model Card Authors:** Nick Lamb |
|
|
|
|
|
**Last Updated:** February 2026 |