Skip to main content

Transformer for galaxy images (and general astronomy)

Project description

astroPT_shoggoth

ICML arXiv License: MIT All Contributors

astroPT: a Large Observation Model for astronomy 🔭

Welcome to our simple repository for training astronomical large observation models. This repository began its life as Andrej Karpathy's nanoGPT, and has been altered so that it is usable for imagery data. Within train.py you will find a ~300-line boilerplate training loop and within model.py you will find a ~300-line GPT model definition with an MLP tokeniser and a regressive loss.

Check out the UniverseTBD Discord for updates: https://discord.gg/MNEVegvfJq

install

You can install via pip from PyPI:

pip install astropt

Or if you install locally via a git clone, you can pip install via:

pip install -e .

results

AstroPT v1.0.0 has been trained on 8.6M galaxy grz band *.png postage stamps downloaded from DESI-LS DR8 to see if neural scaling laws apply to galaxian data (in other words, to see if more galaxy data == more better model).
We tried to make the astroPT model as simple as possible so that other modalities can be easily folded in. We also choose to use a causally trained autoregressive transformer model as our backbone so that our work can more easily integrate the wider deep learning FOSS community.

Our pretraining task is feeding in our galaxy images patch-by-patch and predicting the next patch in our galaxy patch sequence. We follow ViT and define a patch as a 16 by 16 pixel square, and feed the galaxy patches in a spiral order:

galaxy

The trained model results are promising -- below we show our full training run validation losses across a parameter sweep of {1,5,12,21,89,309,830,2100}M trainable parameters:

scaling

We also test our astroPT models on some scientifically-useful downstream tasks by taking the models' penultimate layer outputs and finetuning linear probes to predict emergent physical properties of the galaxies:

downstream

In the above pic, $M_g$ and $M_z$ are the absolute magnitudes (or brightness at a fixed distance) of the galaxies, $g - r$ and $r - z$ are the differences between the observations of different telescope filter bands, redshift is the distance to the galaxies, sSFR is the total mass of new stars born each year in the galaxies per total galaxy mass, and $M_{*}$ is the total mass of stars within the galaxies. "smooth?", "disc?", "artefact?", "edge on?" and "tight spiral?" are morphological properties of the galaxies as described by citizen scientists.

The cool thing to take away from these plots is that the surrogate task loss (predicting the next patch in a sequence of ViT-like galaxy image patches) is correlated with astronomically "useful" downstream tasks 🤯🚀.

Finally, check out our UMAP projection of astroPT-87M's penultimate layer outputs of our validation set. We colour each point with an emergent physical galaxy property described above. The structure suggests that the model has learnt some knowledge about physics simply from our next-token prediction pretraining task!

hexbin

pretrained weights, and full galaxy dataset

Check out the paper here: https://arxiv.org/abs/2405.14930.

We of course release all our model weights checkpointed across our full training runs on HuggingFace 🤗 here.

We also release our full dataset and galaxy metadata on HuggingFace 🔥.

contributors

Ryan Roberts
Ryan Roberts

💻 🤔 🖋
Mike Smith
Mike Smith

💻 🤔 🖋 🔣
mhuertascompany
mhuertascompany

🤔 🖋
Malgorzata Siudek
Malgorzata Siudek

🤔 🖋 💻 🔣
Add your contributions

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

astropt-1.0.2.tar.gz (18.6 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

astropt-1.0.2-py3-none-any.whl (14.3 kB view details)

Uploaded Python 3

File details

Details for the file astropt-1.0.2.tar.gz.

File metadata

  • Download URL: astropt-1.0.2.tar.gz
  • Upload date:
  • Size: 18.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.16

File hashes

Hashes for astropt-1.0.2.tar.gz
Algorithm Hash digest
SHA256 2eeb78cc3a432bced1deaacf881fa8e03461bf1ca0d27e4299cff77b11349d9b
MD5 1931745d6cf0613d5e84c738a8f271e2
BLAKE2b-256 130447005749340386b8c8ccc4eb9d851e0c5ec52809b48dd23c493b25f9ac26

See more details on using hashes here.

File details

Details for the file astropt-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: astropt-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 14.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.16

File hashes

Hashes for astropt-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 898a99bbd5e94e44e840dc61d307223360fdf73195e48889990b2addaf7c605f
MD5 38619d2e9c75839855b2a5cc1fc4b106
BLAKE2b-256 4ddb9fcc15b06318b4ca78cd3c0c253e15a164f41d2f2394d60c71797604b344

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page