AREALS: large geometry models
AREALS models are large geometry models: they learn surface geometry from meshes alone, with zero simulations,
and serve as priors for physics. Fine-tuned on simulations, AREALS matches the accuracy of the same architecture
trained from scratch with 74.5% fewer simulations on WindsorML and 50% fewer on DrivAerML and DrivAerNet++
(Large Geometry Models Are Priors for Cheap Physics Pretraining, Chlon & Chlon, Hassana Labs). The 6.4M model in
this repository, areals-6.4m, reaches the WindsorML target with 86.9% fewer.
This repository contains two large geometry models and one fine-tuning example. Use them with AREALS 0.3.0.
hf download leochl/areal-base --local-dir areals-release-models
Large geometry models
| Directory | Model | Parameters |
|---|---|---|
areals-3.2m |
Large geometry model, 4 encoder blocks | 3,215,503 |
areals-6.4m |
Large geometry model, 11 encoder blocks | 6,332,239 |
Each encodes a surface into 256 areal tokens, which carry position, normal and area, and decodes the unsigned distance and the sign-free normal line (the projector nnáµ€) at arbitrary query points. Both are pretrained self-supervised: the targets come from the meshes themselves, never from a simulation.
import areals
model, config, metadata = areals.load_model("areals-release-models/areals-6.4m", device="cpu")
Pretraining
Both models have width 192, two decoder blocks and 256 tokens, and differ only in encoder depth. Each was pretrained
on 14,304 meshes with complete surface inputs for 10,626 updates at global batch 64, using AdamW at peak learning rate
3e-4 with 200 warm-up updates, cosine decay to 5% and weight decay 0.05, in FP32. areals-3.2m used seed 29 and
areals-6.4m seed 17. The exports contain the complete encoder and spatial query decoder; training-only auxiliary
heads and optimizer states are excluded. The pretraining cohort (ids, families and splits) ships with AREALS 0.3.0
as src/areals/configs/pretraining_objects.json.
Fewer simulations to learn a pressure field
Fine-tuning a large geometry model on WindsorML simulations reaches test nRMSE 0.25 with far fewer simulations than training the same architecture from scratch:
| Initialization | Training simulations | Fewer than from scratch |
|---|---|---|
| From scratch | 137 | — |
areals-3.2m |
35 | 74.5% |
areals-6.4m |
18 | 86.9% |
Test nRMSE on the 35 held-out WindsorML test cars by number of training simulations (lower is better):
| Training simulations | 18 | 35 | 69 | 137 | 274 |
|---|---|---|---|---|---|
| From scratch | 0.4454 | 0.3755 | 0.2610 | 0.2448 | 0.1976 |
areals-3.2m |
0.2567 | 0.2196 | 0.1789 | 0.1652 | 0.1492 |
areals-6.4m |
0.2444 | 0.2114 | 0.1866 | 0.1711 | 0.1570 |
Each fit trains the whole network for 8,000 updates on the same nested WindsorML training subsets, with global batch 8 and 2,048 pressure queries per car. Fine-tuned models transfer the encoder and spatial query decoder, add a new scalar pressure head and train at learning rate 2e-4. From scratch, each budget uses the best of three learning rates (2e-5, 2e-4, 1e-3), chosen on validation. The checkpoint with the lowest validation nRMSE on 35 cars is scored once on the 35 test cars. nRMSE is the area-weighted RMSE of surface pressure divided by the area-weighted standard deviation of the true pressure, averaged over cars.
Fine-tuning example: WindsorML surface pressure
| Directory | Model | Parameters |
|---|---|---|
areals-3.2m-windsor-274 |
areals-3.2m fine-tuned on 274 WindsorML simulations |
3,216,080 |
This is a large geometry model fine-tuned on simulations. Starting from areals-3.2m, it fine-tunes the encoder and
spatial query decoder and adds a new scalar head that predicts surface pressure at any query point. It trained on the
274 WindsorML training cars with seed 0, learning rate 2e-4, global batch 8 and 8,000 updates. Validation on 35 cars
selected update 7,750, with mean per-car nRMSE 0.13803711943302105; reference_validation.json records the
individual results, and selection.json seals the selection. The sealed selection scores test nRMSE 0.1492 on
the 35 test cars.
import areals
model, config, metadata = areals.load_model("areals-release-models/areals-3.2m-windsor-274")
Predict pressure on a prepared WindsorML geometry at any world-coordinate query points:
python -m areals.windsor predict --checkpoint areals-release-models/areals-3.2m-windsor-274 \
--geometry data/windsor/geometry/WindsorML__run_0.npz --queries queries.npy --out predictions.npz
To fine-tune either large geometry model on your own budget, see the WindsorML guide in the code repository:
torchrun --standalone --nproc_per_node=4 -m areals.windsor train \
--checkpoint areals-release-models/areals-6.4m \
--windsor-index data/windsor/index.json \
--field-dir data/windsor/fields --geometry-dir data/windsor/geometry \
--budget 18 --seed 0 --out runs/windsor-6.4m-18
Files
Each directory contains tensor-only model.pt weights and a config.json with the architecture, training recipe,
source checkpoint hash and weight checksum. The loader verifies the checksum and requires an exact
state-dictionary match. catalogue.json indexes the models, the top-level config.json lists them, and
SHA256SUMS lists every file digest.
These are research checkpoints for the supplied preparation and axis conventions. Different input sampling, coordinate frames or geometry distributions can change performance. Normal predictions are unoriented.
The code repository documents pretraining, Windsor preparation, fine-tuning and inference. Data are obtained separately from their original publishers; the model weights are released under the accompanying MIT licence.
Citation
@misc{chlon2026areals,
title = {Large Geometry Models Are Priors for Cheap Physics Pretraining},
author = {Chlon, Maggie and Chlon, Leon},
year = {2026},
note = {Hassana Labs}
}
- Downloads last month
- -