NequIP / demo /configs /tutorial_smoke.yaml
dadadaxi's picture
Upload folder using huggingface_hub
3e02ab8 verified
Raw
History Blame Contribute Delete
3.61 kB
# yamllint disable rule:line-length
# Smoke-test config for NequIP on OneScience.
# This config uses a tiny synthetic Cu dataset and a small model to verify the
# training pipeline (data loading, model build, forward, backward, checkpoint).
run: [train, test]
cutoff_radius: 4.0
num_layers: 2
l_max: 1
num_features: 8
model_type_names: [Cu]
chemical_species: ${model_type_names}
monitored_metric: val0_epoch/weighted_sum
# ============
# DATA
# ============
data:
_target_: onescience.datapipes.materials.nequip.datamodule.ASEDataModule
seed: 456
split_dataset:
file_path: ${demo_dir:reference_data/smoke.xyz}
train: 0.75
val: 0.125
test: 0.125
transforms:
- _target_: onescience.datapipes.materials.nequip.transforms.ChemicalSpeciesToAtomTypeMapper
model_type_names: ${model_type_names}
- _target_: onescience.datapipes.materials.nequip.transforms.NeighborListTransform
r_max: ${cutoff_radius}
train_dataloader:
_target_: torch.utils.data.DataLoader
batch_size: 2
num_workers: 0
shuffle: true
val_dataloader:
_target_: torch.utils.data.DataLoader
batch_size: 2
num_workers: 0
test_dataloader: ${data.val_dataloader}
stats_manager:
_target_: onescience.datapipes.materials.nequip.CommonDataStatisticsManager
dataloader_kwargs:
batch_size: 2
type_names: ${model_type_names}
# =============
# TRAINER
# =============
trainer:
_target_: lightning.Trainer
accelerator: gpu
devices: 1
num_nodes: 1
enable_checkpointing: true
max_epochs: 2
log_every_n_steps: 1
logger: false
enable_progress_bar: true
callbacks:
- _target_: lightning.pytorch.callbacks.ModelCheckpoint
monitor: ${monitored_metric}
dirpath: ${hydra:runtime.output_dir}/checkpoints
filename: best
save_last: true
# =====================
# TRAINING MODULE
# =====================
training_module:
_target_: onescience.utils.nequip.train.EMALightningModule
ema_decay: 0.999
loss:
_target_: onescience.utils.nequip.train.EnergyForceLoss
per_atom_energy: true
coeffs:
total_energy: 1.0
forces: 1.0
val_metrics:
_target_: onescience.utils.nequip.train.EnergyForceMetrics
coeffs:
total_energy_mae: 1.0
forces_mae: 1.0
train_metrics: ${training_module.val_metrics}
test_metrics: ${training_module.val_metrics}
optimizer:
_target_: torch.optim.Adam
lr: 0.01
lr_scheduler:
scheduler:
_target_: torch.optim.lr_scheduler.ReduceLROnPlateau
factor: 0.6
patience: 5
threshold: 0.2
min_lr: 1e-6
monitor: ${monitored_metric}
interval: epoch
frequency: 1
model:
_target_: onescience.models.nequip.model.NequIPGNNModel
seed: 456
model_dtype: float32
type_names: ${model_type_names}
r_max: ${cutoff_radius}
num_bessels: 4
bessel_trainable: false
polynomial_cutoff_p: 6
num_layers: ${num_layers}
l_max: ${l_max}
parity: false
num_features: ${num_features}
radial_mlp_depth: 1
radial_mlp_width: 16
avg_num_neighbors: ${training_data_stats:num_neighbors_mean}
per_type_energy_scales: ${training_data_stats:per_type_forces_rms}
per_type_energy_shifts: ${training_data_stats:per_atom_energy_mean}
per_type_energy_scales_trainable: false
per_type_energy_shifts_trainable: false
# Slurm / launch metadata used by demo/run.sh
name: nequip_smoke
launch:
mode: local
num_nodes: 1
num_gpus: 1
slurm:
partition: hx1hdnormal01
nodelist: a01r1n02
time: "00:10:00"
cpus_per_task: 8
env:
OMP_NUM_THREADS: 1