PoreML_checkpoint / README.md
PoreML-dev's picture
Add files using upload-large-folder tool
222ef4f verified
|
Raw History Blame Contribute Delete
3.98 kB
---
license: mit
pretty_name: PoreML V1 — reference model checkpoints
library_name: pytorch
datasets:
- PoreML/PoreML_data
tags:
- physics
- computational-fluid-dynamics
- porous-media
- multiphase-flow
- scientific-machine-learning
- neural-operator
- 3d
---
# PoreML V1 — reference model checkpoints
The trained weights behind the PoreML benchmark: five reference models — `unet3d`, `fno3d`,
`p3d`, `transolver`, `abupt` — on the next-frame forecasting task of
[`PoreML/PoreML_data`](https://huggingface.co/datasets/PoreML/PoreML_data), in two phases.
| Phase | Folder | Runs | Report this checkpoint |
|---|---|---:|---|
| base training, 20 effective epochs | `train/` | 35 | `ckpts/best.pt` — best one-step validation `mae@phi` |
| push-forward fine-tune of each base run | `train_push/` | 35 | `ckpts/best_rollout.pt` — best 64-step rollout `mae@phi` |
35 = 5 models × 7 tasks: the `gen` (generated media) and `all` (generated ∪ micro-CT) splits of
drainage, GDL and trapping, plus underfill's single `all` split.
## Download
With the PoreML code repository checked out and installed (`uv sync`):
```bash
uv run poreml checkpoints --dry-run # what is there and how big it is (7 GB)
uv run poreml checkpoints --phase train_push --which best_rollout # the weights the paper reports
uv run poreml checkpoints --campaign drainage --model unet --kind gen
uv run poreml checkpoints # everything
```
Filters are `--phase`, `--campaign`, `--model`, `--kind` and `--which`; they intersect and each
is repeatable. Files land under `case/`, which is where the push configs' `train.init_from`, the
transfer studies (`case/shift`, `case/scale`) and `util/inference` look a finished run up —
nothing has to be moved. Rerunning resumes. Without the package:
```bash
hf download PoreML/PoreML_checkpoint --local-dir case --exclude README.md checkpoints.csv
```
## Layout
The repository root is the benchmark's `case/` folder:
```
<phase>/<campaign>/<model>_<kind>/ckpts/<run>/
config.yaml the full config the run was trained with; a checkpoint is always scored with it
run_meta.json status, resolved data and split (with sha256), model size, provenance, progress
metrics.csv one row per epoch: losses, learning rate, every validation metric
train_log.csv the training loss every 100 steps
ckpts/best.pt best one-step validation metric
ckpts/last.pt the final epoch
ckpts/best_rollout.pt best rollout metric (push-forward runs)
checkpoints.csv every weight file: phase, campaign, model, kind, path, epoch, bytes, sha256
```
A `.pt` is a `torch.save`d dict: `model` (the state dict), `config` (the model's name, params
and precision), `epoch`, `metrics`. `run_meta.json` of a push-forward run records the path and
sha256 of the base `best.pt` it started from; it matches `checkpoints.csv`.
Not included: optimiser state, the per-epoch rollout candidates, and stored rollout frames —
`poreml inference`, `poreml metric` and `poreml render` reproduce those from the weights.
## Use
```bash
RUN=case/train_push/drainage/unet_gen/ckpts/<run>
uv run poreml rollout -c $RUN/config.yaml --ckpt $RUN/ckpts/best_rollout.pt # one scored 64-step rollout per validation run
uv run python case/shift_push/submit.py --dry-run # the transfer studies see the runs as finished
```
The runs were trained on single NVIDIA H200 GPUs with PyTorch 2.11 (CUDA 12.8), `tf32`
everywhere except AB-UPT's `bf16`. Paths inside the text files are relative to the code
repository's root; the node's hostname has been removed from `run_meta.json`, and nothing else
was changed.
## Licence
MIT for the weights of `unet3d`, `fno3d`, `p3d` and `transolver`. The `abupt` weights are
derived from the AB-UPT architecture and follow its upstream Emmi AI Non-Production License:
research and evaluation use only.