Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
9612e72
Bump actions/checkout from 4 to 5
dependabot[bot] Aug 12, 2025
a1eb0c1
Bump actions/setup-python from 5 to 6
dependabot[bot] Sep 8, 2025
496921f
Merge pull request #22 from msakarvadia/dependabot/github_actions/act…
msakarvadia Oct 7, 2025
6f22578
Merge pull request #21 from msakarvadia/dependabot/github_actions/act…
msakarvadia Oct 7, 2025
10ea87d
Merge pull request #23 from msakarvadia/train
msakarvadia Oct 7, 2025
576a2d5
Update README.md
msakarvadia Oct 7, 2025
3d4a8f7
Create README.md
msakarvadia Oct 7, 2025
bb5b58e
Create README.md
msakarvadia Oct 7, 2025
0da8775
Create README.md
msakarvadia Oct 7, 2025
f221c11
Update README.md
msakarvadia Oct 7, 2025
dfa4751
Update README.md
msakarvadia Oct 7, 2025
eaa5266
Update README.md
msakarvadia Oct 7, 2025
d8c2f15
Update README.md
msakarvadia Oct 7, 2025
76a10ff
Update README.md
msakarvadia Oct 7, 2025
84d4678
Update README.md
msakarvadia Oct 7, 2025
ac578fe
Update README.md
msakarvadia Oct 7, 2025
8f2eaa0
updated bibtex
msakarvadia Oct 8, 2025
578616d
updating bibtex
msakarvadia Oct 9, 2025
44497f9
Update README.md
msakarvadia Oct 10, 2025
0ea3dd7
Update README.md bibliography
msakarvadia Jan 29, 2026
e91ee8a
Update README.md
msakarvadia Jan 29, 2026
27d0f4c
updating figs
Feb 26, 2026
6647731
updating readme
Feb 26, 2026
2338367
cleaning up notebooks
Feb 26, 2026
9d5eeed
cleaning up notebooks
Feb 26, 2026
b280575
Update README.md
msakarvadia Feb 26, 2026
78dd842
Update README.md
msakarvadia Feb 26, 2026
a7457da
Update README.md
msakarvadia Feb 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/cache.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v4
uses: actions/checkout@v5

- name: Cleanup
run: |
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/check-docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,10 @@ jobs:

steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v5

- name: Set up Python 3.11
uses: actions/setup-python@v5
uses: actions/setup-python@v6
with:
python-version: '3.11'

Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,12 @@ jobs:

steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v5
with:
fetch-depth: 0

- name: Set up Python 3.11
uses: actions/setup-python@v5
uses: actions/setup-python@v6
with:
python-version: '3.11'

Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v5
with:
fetch-depth: 0

Expand All @@ -36,7 +36,7 @@ jobs:
fi

- name: Setup Python 3.11
uses: actions/setup-python@v5
uses: actions/setup-python@v6
with:
python-version: '3.11'

Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,10 @@ jobs:

steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v5

- name: Set up Python ${{matrix.python}}
uses: actions/setup-python@v5
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python }}

Expand Down
53 changes: 51 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,49 @@
# The False Promise of Zero-Shot Super-Resolution in Machine-Learned Operators
[`paper`](https://arxiv.org/abs/2510.06646) | [`blog`](https://mansisak.com/operator_aliasing/)

## Installation
**Abstract:** A core challenge in scientific machine learning, and scientific computing more generally, is modeling continuous phenomena which (in practice) are represented discretely. Machine-learned operators (MLOs) have been introduced as a means to achieve this modeling goal, as this class of architecture can perform inference at arbitrary resolution. In this work, we evaluate whether this architectural innovation is sufficient to perform “zero-shot super-resolution,” namely to enable a model to serve inference on higher-resolution data than that on which it was originally trained. We comprehensively evaluate both zero-shot sub-resolution and super-resolution (i.e., multi-resolution) inference in MLOs. We decouple multi-resolution inference into two key behaviors: 1) extrapolation to varying frequency information; and 2) interpolating across varying resolutions. We empirically demonstrate that MLOs fail to do both of these tasks in a zero-shot manner. Consequently, we find MLOs are not able to perform accurate inference at resolutions different from those on which they were trained, and instead they are brittle and susceptible to aliasing. To address these failure modes, we propose a simple, computationally-efficient, and data-driven multi-resolution training protocol that overcomes aliasing and that provides robust multi-resolution generalization.

<img width="682" height="370" alt="image" src="https://github.com/user-attachments/assets/09a29bce-43e6-47d8-a2b0-91e0917dd97b" />

*Aliasing in zero-shot super-resolution. Model trained on resolution 16 data, and evaluated at varying resolutions: 16, 32, 64, 128. Top Row: Sample prediction for Darcy flow; notice
striation artifacts at resolution 128. Middle Row: Average test set 2D energy spectrum of label and model prediction. Bottom Row: Average residual spectrum normalized by label spectrum.*

We give a high-level overview of the code structure in this repository below. More detailed READMEs can be found in every subdirectory with pointers to any external repos we utilized or took inspiration from. If there are any questions or concerns, please feel free to open a github issue or email `sakarvadia@uchicago.edu`.

# Quickstart/ Getting Started
- [`main.py`](https://github.com/msakarvadia/operator_aliasing/blob/main/operator_aliasing/main.py) allows you to run a single experiment w/ custom experimental configurations. Do `python main.py --help` for descriptions of all experimental parameters and their defualt configurations. Running `python main.py` with default args will train an FNO w/ n-modes parameter = 16 on a multi-resolution darcy flow dataset (10% 128 resolution data, 10% 64 resolution data, 10% 32 resolution data, 70% 16 resolution data) from PDEBench.
- [`demo.ipynb`](https://github.com/msakarvadia/operator_aliasing/blob/main/notebooks/demo.ipynb) is a self-contained demo notebook (minimal dependancies: `torch`+`neuraloperator`) which does a representative subset of experiments on the Darcy Flow dataset and produced corresponding figures:
- Zero-shot Super-Resolutin
- Information Extrapolation
- Resolution Interpolation
- Multi-Resolution Training

# Training Models on PDE Data
- [`train`](https://github.com/msakarvadia/operator_aliasing/tree/main/operator_aliasing/train) contains training utility codes

# Data
- [`data`](https://github.com/msakarvadia/operator_aliasing/tree/main/operator_aliasing/data) data downloading + processing scritps for Darcy Flow, Burgers, and Incompressible Navier Stokes data.

# Models
- [`models`](https://github.com/msakarvadia/operator_aliasing/tree/main/operator_aliasing/models) contains model definitions and the utilities to instantiate them


# Experimental Configuration/Launch Scripts

All experimental codes are in [`experiments`](https://github.com/msakarvadia/operator_aliasing/tree/main/experiments). All experiments are parallelized using the [`parsl`](https://parsl-project.org/) framework.
- [`parsl_setup.py`](https://github.com/msakarvadia/operator_aliasing/blob/main/experiments/parsl_setup.py): set up Parsl configuration specific to your computing envionrment here. The default settings are specific to the [`Perlmutter`](https://docs.nersc.gov/systems/perlmutter/architecture/) machine.
- [`get_train_args.py`](https://github.com/msakarvadia/operator_aliasing/blob/main/experiments/get_train_args.py): script to compile configures for each experiment (iterates through all variation of the experiment in the paper)
- [`training.py`](https://github.com/msakarvadia/operator_aliasing/blob/main/experiments/training.py): script to run a specific set of expreiments.
- By default `python training.py` will run the information extrapolation/resolution interpolation experiments from the paper.
- Toggle `python training.py --help` to see all avaliable experiments.

# Figures

- [figures.ipynb](https://github.com/msakarvadia/operator_aliasing/blob/train/notebooks/figures.ipynb) is used to process experimental results and generate figures.


## Installation

For local development:
```
git clone https://github.com/msakarvadia/operator_aliasing.git # swap url for clone via SSH
Expand All @@ -17,4 +59,11 @@ pre-commit install
Please cite this work as:

```bibtex
...
@inproceedings{sakarvadia2026false,
title={The False Promise of Zero-Shot Super-Resolution in Machine-Learned Operators},
author={Mansi Sakarvadia and Kareem Hegazy and Amin Totounferoush and Kyle Chard and Yaoqing Yang and Ian Foster and Michael W. Mahoney},
booktitle={The Fourteenth International Conference on Learning Representations},
year={2026},
url={https://openreview.net/forum?id=hkF7ZM7fEp}
}
```
9 changes: 9 additions & 0 deletions experiments/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
All experiments are parallelized using the [`parsl`](https://parsl-project.org/) framework.
- [`parsl_setup.py`](https://github.com/msakarvadia/operator_aliasing/blob/main/experiments/parsl_setup.py): set up parl configuration specific to your computing envionrment here. The default settings are specific to the [`Perlmutter`](https://docs.nersc.gov/systems/perlmutter/architecture/) machine.
- [`sample_experiment.py`](https://github.com/msakarvadia/operator_aliasing/blob/main/experiments/sample_experiment.py): "Hello World" experiment, useful for testing parallelizaiton of experimental infrastructure
- [`get_train_args.py`](https://github.com/msakarvadia/operator_aliasing/blob/main/experiments/get_train_args.py): script to compile configures for each experiment (iterates through all variation of the experiment in the paper)
- [`training.py`](https://github.com/msakarvadia/operator_aliasing/blob/main/experiments/training.py): script to run a specific set of expreiments.
- By default `python training.py` will run the information extrapolation/resolution interpolation experiments from the paper.
- Toggle `python training.py --help` to see all avaliable experiments.
- [`multi_architecture_test.py`](https://github.com/msakarvadia/operator_aliasing/blob/main/experiments/multi_architecture_test.py): experiment to run minimal zero-shot super-resolution vs. multi-resolution training experiment on Darcy flow. Intended to enable fast benchmarking across different computing architectures.

2 changes: 1 addition & 1 deletion figures/README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
# Figures

Contains all info to recreate paper figures
Old and new figures. Not all figures are from the final experiments. See the paper+appendix for relavent figures and explinations.
Binary file modified figures/new/darcy_deeponet_fno_heatmaps.pdf
Binary file not shown.
Loading