MACE / scripts /demo /README.md
OneScience's picture
Upload folder using huggingface_hub
a244197 verified
|
Raw
History Blame Contribute Delete
4.48 kB

MACE 训练 Demo

快速上手

1. 选择配置

configs/ 目录下提供了多个预定义的实验配置:

配置文件 数据集 GPU 数 说明
DMC.yaml DMC 溶剂 XTB 1 入门示例,最简单
water_1dcu.yaml Water 1 单卡训练
water_4dcu.yaml Water 4 4 卡分布式训练
water_8dcu.yaml Water 8 8 卡分布式训练
ani1x_8dcu.yaml ANI-1x 8 分布式训练
nanotube_l0_8dcu.yaml 碳纳米管 8 max_L=0
nanotube_l2_8dcu.yaml 碳纳米管 8 max_L=2
nanotube_l2_16dcu.yaml 碳纳米管 2x8 多节点分布式

2. 运行训练

# 方式一:直接运行(交互式或在已分配的 SLURM 节点上)
bash run.sh --config configs/DMC.yaml

# 方式二:提交 SLURM 作业
bash run.sh --config configs/DMC.yaml --submit

# 方式三:预览命令(不执行)
bash run.sh --config configs/DMC.yaml --dry-run

3. 查看输出

训练输出自动保存到 outputs/{实验名}_{时间戳}/ 目录,包含:

  • 模型 checkpoint
  • 训练日志
  • 当次使用的配置快照 (config.yaml)

创建自定义实验

  1. 复制一个最接近的配置文件:

    cp configs/DMC.yaml configs/my_experiment.yaml
    
  2. 编辑 YAML 中的参数(只需改参数值,不用碰任何 shell 脚本)

  3. 运行:

    bash run.sh --config configs/my_experiment.yaml
    

YAML 配置字段说明

train_args - 训练参数

所有字段直接映射为 train.py 的命令行参数。布尔值 true 转为标志参数(如 swa: true -> --swa),false 则跳过。

常用参数:

参数 说明 示例
model 模型类型 MACE
r_max 截断半径 (A) 4.0 - 6.0
num_channels 通道数 64, 256
max_L 最大角动量量子数 0, 2
batch_size 训练批大小 2 - 128
E0s 原子参考能量 average, isolated, 显式字典
swa 启用随机权重平均 true
ema 启用指数移动平均 true
distributed 启用分布式训练 true (多卡时自动添加)

launch - 启动配置

参数 说明 启动方式
num_nodes: 1, num_gpus: 1 单卡 python train.py
num_nodes: 1, num_gpus: N 单节点多卡 torchrun --nproc_per_node=N
num_nodes: M, num_gpus: N 多节点 srun (需 --submit)

env - 环境配置

参数 说明
conda_env conda 环境名
modules 需要加载的 module 列表

slurm - SLURM 作业配置

参数 说明
partition SLURM 分区
time 作业时间限制
cpus_per_task CPU 核心数

nccl - 多节点通信配置(可选)

参数 说明
socket_ifname InfiniBand 网卡名
ib_hca IB HCA 设备名
proto NCCL 协议

目录结构

demo/
  run.sh                  # 统一入口脚本
  _parse_config.py        # 配置解析器(内部使用)
  README.md               # 本文件
  configs/                # 实验配置
  templates/              # 脚本模板
    env_setup.sh          # 环境初始化
    preflight_check.sh    # 训练前预检
    slurm_header.template # SLURM header 模板
  outputs/                # 训练输出(自动创建)