Clay-foundation / model

The Clay Foundation Model - An open source AI model and interface for Earth
https://clay-foundation.github.io/model/
Apache License 2.0
381 stars 48 forks source link
digital-elevation-model earth-observation embeddings foundation-model sentinel-1 sentinel-2

Clay Foundation Model

Jupyter Book Badge Deploy Book Status Continuous Integration Tests Status

An open source AI model and interface for Earth.

Quickstart

Launch into a JupyterLab environment on

Binder SageMaker Studio Lab
Binder Open in SageMaker Studio Lab

Installation

Basic

To help out with development, start by cloning this repo-url

git clone <repo-url>
cd model

Then we recommend using mamba to install the dependencies. A virtual environment will also be created with Python and JupyterLab installed.

mamba env create --file environment.yml

[!NOTE] The command above will only work for Linux devices with CUDA GPUs. For installation on macOS devices (either Intel or ARM chips), follow the 'Advanced' section in https://clay-foundation.github.io/model/getting-started/installation.html#advanced

Activate the virtual environment first.

mamba activate claymodel

Finally, double-check that the libraries have been installed.

mamba list

Usage

Running jupyter lab

mamba activate claymodel
python -m ipykernel install --user --name claymodel  # to install virtual env properly
jupyter kernelspec list --json                       # see if kernel is installed
jupyter lab &

Running the model

The neural network model can be ran via LightningCLI v2. To check out the different options available, and look at the hyperparameter configurations, run:

python trainer.py --help

To quickly test the model on one batch in the validation set:

python trainer.py fit --model ClayMAEModule --data ClayDataModule --config configs/config.yaml --trainer.fast_dev_run=True

To train the model:

python trainer.py fit --model ClayMAEModule --data ClayDataModule --config configs/config.yaml

More options can be found using python trainer.py fit --help, or at the LightningCLI docs.

Contributing

Writing documentation

Our Documentation uses Jupyter Book.

Install it with:

pip install -U jupyter-book

Then build it with:

jupyter-book build docs/

You can preview the site locally with:

python -m http.server --directory _build/html

There is a GitHub Action on ./github/workflows/deploy-docs.yml that builds the site and pushes it to GitHub Pages.