FarZenith small v1
FarZenith is a small astronomy model (~50M parameters) built and trained from scratch by Selby Mashiki for the Zimbabwean Astronomical Society (ZAS). It turns a question into an experiment spec; a deterministic physics or dark-sky engine computes the numbers; the model then explains the result. The model never does the arithmetic, so every number in an answer comes from the engine.
Experiments (15): planet orbits and comparisons, satellite orbits (Earth, Moon, Mars), main-sequence stars and blackbody light, gravity (force, escape velocity, black holes), cosmology and light (Hubble distances, Doppler shifts, spectrum bands), and Southern Africa dark skies (sky quality at a site, the darkest nearby sites, comparing places, light-pollution trends). Conceptual questions get short explanations; unsupported ones get a polite refusal.
Use
The model needs its engines, which are in code/ in this repository:
pip install huggingface_hub
python - <<'PY'
from huggingface_hub import snapshot_download
print(snapshot_download("Kolgrim/farzenith-small-v1"))
PY
cd <that folder>/code && pip install .
from huggingface_hub import snapshot_download
from zenith.serve.pipeline import Zenith
path = snapshot_download("Kolgrim/farzenith-small-v1")
zen = Zenith.load(path)
r = zen.ask("How long does the ISS take to orbit Earth?")
print(r.spec) # the experiment the model chose
print(r.result) # the engine's numbers (and plot series)
print(r.answer) # the explanation
Or serve it: ZENITH_DARKSKY=<path> python -m zenith.serve.app --ckpt <path> and
POST /v1/ask {"question": "..."}.
Model
Llama-style decoder (RMSNorm, rotary positions, SwiGLU), d_model 576, 10 layers, 9 heads, context 1,024 tokens, 16,384-token BPE tokenizer with digits split into single tokens. Spec generation is grammar-constrained, so the model can only write valid experiment specs.
Training
- Pretraining: 1,800 steps Γ 262,144 tokens (~470M tokens) on a 760M-token corpus: Wikipedia astronomy/physics articles (CC BY-SA 4.0), arXiv astro-ph/physics titles and abstracts (CC0 1.0 metadata), OpenStax Astronomy 2e and University Physics (CC BY 4.0), and science-filtered FineWeb-Edu (ODC-By 1.0). Evaluation questions were removed from the corpus by 8-gram decontamination.
- Fine-tuning: one epoch over 300,000 examples generated by the engines themselves (no text from other AI models), on one RTX 4090.
Evaluation
1,500 held-out questions (100 per experiment) from the evaluation split, which uses question templates, objects and places never seen in training. Scored on one RTX 4090.
| Picks the right experiment | Gets every parameter right | Numbers faithful to the engine | Mentions caveats | Routes conceptual / unsupported questions | |
|---|---|---|---|---|---|
| FarZenith small v1 | 83.3% | 43.0% | 97.5% | 100% | 89.7% |
| Rule-based baseline | 60.3% | 10.3% | 100% | 100% | 54.4% |
| v1 target | β₯ 90% | β₯ 75% | β₯ 95% | β₯ 70% | β₯ 85% |
Strongest: planet orbits, blackbody light, the spectrum, gravity and Doppler shifts (100% right experiment). Weakest: telling a Kepler orbit from an orbit comparison, Hubble distance questions, and single-site dark-sky questions. Parameter accuracy is lowest for dark-sky questions because the evaluation asks about places held out of training, whose coordinates the model has never seen. Every number in an answer comes from the engine; the faithfulness score measures whether the model copied those numbers correctly.
Dark-sky data
This repository ships a provisional dark-sky map (darksky_sa.npz) built from GeoNames towns
(CC BY 4.0) with Natural Earth borders (public domain), using Walker's law for sky glow. It is an
approximation. For accurate answers, build the real map from the Falchi et al. 2016 World Atlas
(CC BY-NC 4.0, non-commercial; doi:10.5880/GFZ.1.4.2016.001) and VIIRS night lights with
python -m zenith.darksky.build (see code/docs/data/darksky.md); the Falchi layer cannot be
redistributed here because of its non-commercial licence.
Limitations
- Small and narrow: it answers only within its 15 experiments plus a fact bank.
- It can misremember an object's properties (for example a satellite's altitude), even though the engine's arithmetic is always exact.
- Dark-sky coverage is Southern Africa only (lat β35β¦β8, lon 10β¦41).
Licences
Model weights and dark-sky data: CC BY-SA 4.0 (credit "FarZenith by Selby Mashiki, Zimbabwean
Astronomical Society"). Code in code/: Apache 2.0. Training data credits are listed above.
Citation
@misc{mashiki2026farzenith,
author = {Selby Mashiki},
title = {FarZenith: a from-scratch astronomy model that runs experiments},
year = {2026},
publisher = {Hugging Face},
howpublished = {\url{https://huggingface.co/Kolgrim/farzenith-small-v1}},
note = {Built for the Zimbabwean Astronomical Society}
}
- Downloads last month
- 153