Product#
The following modules implement many-body expansions using different strategies.
We recommend using CgtpACE in practice. For other ACE variants, interested
users are encouraged to refer to the source code for further exploration.
- class tace.models._e3nn.prod.CgtpACE(layer: int, num_layers: int, num_elements: int, Lmax: int, lmax: int, num_channel: int, num_hidden_channel: int, target_irreps: list[str], irreps_in: Irreps, correlation: list[int], l1l2: str | None, bias: bool, resolution: list[int], stochastic_depth: float = 0.0, use_first_dropout: bool = False, parity: bool = False)[source]#
Bases:
ProductThe most expressive ACE implementation based on Clebsch-Gordan tensor products.
This class computes all possible many-body tensor product paths and couples all channels, forming a highly expressive product basis.
Note
It is recommended to use no more than 64 channels, as increasing the number of channels beyond this does not necessarily lead to better performance and may introduce unnecessary computational overhead.
- class tace.models._e3nn.prod.GtpACE(layer: int, num_layers: int, num_elements: int, Lmax: int, lmax: int, num_channel: int, num_hidden_channel: int, target_irreps: list[str], irreps_in: Irreps, correlation: list[int], l1l2: str | None, bias: bool, resolution: list[int], stochastic_depth: float = 0.0, use_first_dropout: bool = False, parity: bool = False)[source]#
Bases:
ProductAn ACE implementation based on Gaunt tensor products.
This module uses Gaunt tensor products to perform many-body expansions. However, this approach introduces equivariance errors (though typically small), lacks antisymmetric interactions, and averages over multiple many-body expansion paths.
As a result, increasing the correlation order does not always lead to improved accuracy.
In practice, the grid-processing operation can be fused with the linear layer. However, considering modules such as LoRA, we do not perform such fusion for the sake of simplicity and flexibility.