|
Download scripts/demo/README.md from OneScience-Group/MACE: direct link, hf CLI and curl.
- Browser
- Download file 3.95 kB
-
https://huggingface.co/OneScience-Group/MACE/resolve/main/scripts/demo/README.md
- Command line
-
hf download hf://OneScience-Group/MACE/scripts/demo/README.md
-
curl -L -o README.md https://huggingface.co/OneScience-Group/MACE/resolve/main/scripts/demo/README.md
3.95 kB
| # MACE Training Demo | |
| ## Quick Start | |
| ### 1. Select a Configuration | |
| The `configs/` directory provides several predefined experiment configurations: | |
| | Configuration | Dataset | GPUs | Description | | |
| | --- | --- | --- | --- | | |
| | `DMC.yaml` | DMC solvent XTB | 1 | Simplest introductory example | | |
| | `water_1dcu.yaml` | Water | 1 | Single-GPU training | | |
| | `water_4dcu.yaml` | Water | 4 | Four-GPU distributed training | | |
| | `water_8dcu.yaml` | Water | 8 | Eight-GPU distributed training | | |
| | `ani1x_8dcu.yaml` | ANI-1x | 8 | Distributed training | | |
| | `nanotube_l0_8dcu.yaml` | Carbon nanotube | 8 | `max_L=0` | | |
| | `nanotube_l2_8dcu.yaml` | Carbon nanotube | 8 | `max_L=2` | | |
| | `nanotube_l2_16dcu.yaml` | Carbon nanotube | 2x8 | Multi-node distributed training | | |
| ### 2. Run Training | |
| ```bash | |
| # Option 1: Run directly (interactively or on an allocated SLURM node) | |
| bash run.sh --config configs/DMC.yaml | |
| # Option 2: Submit a SLURM job | |
| bash run.sh --config configs/DMC.yaml --submit | |
| # Option 3: Preview the command without running it | |
| bash run.sh --config configs/DMC.yaml --dry-run | |
| ``` | |
| ### 3. View the Outputs | |
| Training outputs are automatically saved to `outputs/{experiment_name}_{timestamp}/` and include: | |
| - Model checkpoints | |
| - Training logs | |
| - A snapshot of the configuration used for the run (`config.yaml`) | |
| ## Create a Custom Experiment | |
| 1. Copy the closest configuration: | |
| ```bash | |
| cp configs/DMC.yaml configs/my_experiment.yaml | |
| ``` | |
| 2. Edit the parameters in the YAML file. Only parameter values need to change; no shell scripts need to be modified. | |
| 3. Run the experiment: | |
| ```bash | |
| bash run.sh --config configs/my_experiment.yaml | |
| ``` | |
| ## YAML Configuration Fields | |
| ### `train_args` - Training Arguments | |
| Every field maps directly to a `train.py` command-line argument. A Boolean value of `true` becomes a flag (for example, `swa: true` becomes `--swa`), while `false` is omitted. | |
| Common arguments: | |
| | Argument | Description | Example | | |
| | --- | --- | --- | | |
| | `model` | Model type | `MACE` | | |
| | `r_max` | Cutoff radius (Å) | `4.0` - `6.0` | | |
| | `num_channels` | Number of channels | `64`, `256` | | |
| | `max_L` | Maximum angular-momentum quantum number | `0`, `2` | | |
| | `batch_size` | Training batch size | `2` - `128` | | |
| | `E0s` | Atomic reference energies | `average`, `isolated`, or an explicit dictionary | | |
| | `swa` | Enable stochastic weight averaging | `true` | | |
| | `ema` | Enable exponential moving average | `true` | | |
| | `distributed` | Enable distributed training | `true` (added automatically for multiple GPUs) | | |
| ### `launch` - Launch Configuration | |
| | Argument | Description | Launch method | | |
| | --- | --- | --- | | |
| | `num_nodes: 1, num_gpus: 1` | Single GPU | `python train.py` | | |
| | `num_nodes: 1, num_gpus: N` | Multiple GPUs on one node | `torchrun --nproc_per_node=N` | | |
| | `num_nodes: M, num_gpus: N` | Multiple nodes | `srun` (requires `--submit`) | | |
| ### `env` - Environment Configuration | |
| | Argument | Description | | |
| | --- | --- | | |
| | `conda_env` | Conda environment name | | |
| | `modules` | List of modules to load | | |
| ### `slurm` - SLURM Job Configuration | |
| | Argument | Description | | |
| | --- | --- | | |
| | `partition` | SLURM partition | | |
| | `time` | Job time limit | | |
| | `cpus_per_task` | Number of CPU cores | | |
| ### `nccl` - Multi-Node Communication Configuration (Optional) | |
| | Argument | Description | | |
| | --- | --- | | |
| | `socket_ifname` | InfiniBand interface name | | |
| | `ib_hca` | IB HCA device name | | |
| | `proto` | NCCL protocol | | |
| ## Directory Structure | |
| ```text | |
| demo/ | |
| run.sh # Unified entry-point script | |
| _parse_config.py # Configuration parser (internal use) | |
| README.md # This file | |
| configs/ # Experiment configurations | |
| templates/ # Script templates | |
| env_setup.sh # Environment initialization | |
| preflight_check.sh # Pre-training checks | |
| slurm_header.template # SLURM header template | |
| outputs/ # Training outputs (created automatically) | |
| ``` | |