Allegro#
The Allegro model as proposed in Learning Local Equivariant Representations for Large-Scale Atomistic Dynamics.
Supervised#
The base allegro_model as proposed in the original paper. It has the ability to output graph scalars, node scalars,
and a node vector. The model has the following config
num_node_feats: intThe number of node features. Must be equal to the initial node feature dimension (sum of one-hot encoded features).
num_edge_feats: intThe number of edge features. Must be equal to the initial node feature dimension (sum of one-hot encoded features).
num_layers: int = 2The number of Allegro layers.
max_ell: int = 2The maximum SO(3) irreps dimension to use in the model (during interactions)
parity: bool = TrueWhether to use parity odd features in the model
mlp_irreps: str = "16x0e"The output MLP irreps.
mlp_latent_dimensions: List[int] = [128]The MLP dimensions.
latent_mlp_latent_dimensions: List[int] = [1024, 1024, 1024]The latent MLP dimensions.
env_embed_multiplicity: int = 32The environment embedding multiplicity.
two_body_latent_mlp_latent_dimensions: List[int] = [128, 256, 512, 1024]The two body interaction MLP dimensions.
num_bessel: int = 8The highest order of bessel functions to use.
bessel_basis_trainable: bool = TrueWhether the bessel basis has trainable weights
num_polynomial_cutoff: int = 6The cut-off polynomial envelope power.
avg_num_neighbours: Optional[float] = NoneThe average number of neighbours in the dataset.
embed_initial_edge: bool = TrueWhether to embed the initial edge features.
latent_resnet: bool = TrueWhether to use a latent resnet.
scaling_mean: float = 0.0The scaling mean of the model output. This is usually computed as the mean of
(molecule_energy - molecule_self_energy) / molecule_num_atomsscaling_std: float = 1.0The scaling std of the model output. This is usually computed as the std of
(molecule_energy - molecule_self_energy)compute_forces: bool = FalseWhether to compute forces as the gradient of the
y_graph_scalarsand use those as they_node_vectoroutput.y_node_scalars_loss_config: Optional[Dict] = NoneThe loss config for the
y_node_scalars.y_node_vector_loss_config: Optional[Dict] = NoneThe loss config for the
y_node_vector.y_graph_scalars_loss_config: Optional[Dict] = NoneThe loss config for the
y_graph_scalars.
Supervised mean and variance#
The mean_var_allegro_model which predicts a mean and variance for the y_graph_scalars during training and inference.
It has the same comfig as the allegro_model but without the ability to specify a y_graph_scalars_loss_config which is
hardcoded to be the torch.nn.GaussianNLLLoss. The model config is as follows
num_node_feats: intThe number of node features. Must be equal to the initial node feature dimension (sum of one-hot encoded features).
num_edge_feats: intThe number of edge features. Must be equal to the initial node feature dimension (sum of one-hot encoded features).
num_layers: int = 2The number of Allegro layers.
max_ell: int = 2The maximum SO(3) irreps dimension to use in the model (during interactions)
parity: bool = TrueWhether to use parity odd features in the model
mlp_irreps: str = "16x0e"The output MLP irreps.
mlp_latent_dimensions: List[int] = [128]The MLP dimensions.
latent_mlp_latent_dimensions: List[int] = [1024, 1024, 1024]The latent MLP dimensions.
env_embed_multiplicity: int = 32The environment embedding multiplicity.
two_body_latent_mlp_latent_dimensions: List[int] = [128, 256, 512, 1024]The two body interaction MLP dimensions.
num_bessel: int = 8The highest order of bessel functions to use.
bessel_basis_trainable: bool = TrueWhether the bessel basis has trainable weights
num_polynomial_cutoff: int = 6The cut-off polynomial envelope power.
avg_num_neighbours: Optional[float] = NoneThe average number of neighbours in the dataset.
embed_initial_edge: bool = TrueWhether to embed the initial edge features.
latent_resnet: bool = TrueWhether to use a latent resnet.
scaling_mean: float = 0.0The scaling mean of the model output. This is usually computed as the mean of
(molecule_energy - molecule_self_energy) / molecule_num_atomsscaling_std: float = 1.0The scaling std of the model output. This is usually computed as the std of
(molecule_energy - molecule_self_energy)compute_forces: bool = FalseWhether to compute forces as the gradient of the
y_graph_scalarsand use those as they_node_vectoroutput.y_node_scalars_loss_config: Optional[Dict] = NoneThe loss config for the
y_node_scalars.y_node_vector_loss_config: Optional[Dict] = NoneThe loss config for the
y_node_vector.