NVIDIA Modulus Sym (Latest Release)
Sym (Latest Release)

Modulus Sym Hydra

Architecture/Model configs

class modulus.sym.hydra.arch.AFNOConf(arch_type: str = 'afno', input_keys: Any = '???', output_keys: Any = '???', detach_keys: Any = '???', scaling: Any = None, img_shape: Tuple[int] = '???', patch_size: int = 16, embed_dim: int = 256, depth: int = 4, num_blocks: int = 8)[source]

Bases: ModelConf

arch_type: str = 'afno'

depth: int = 4

embed_dim: int = 256

img_shape: Tuple[int] = '???'

num_blocks: int = 8

patch_size: int = 16

class modulus.sym.hydra.arch.ConvFullyConnectedConf(arch_type: str = 'conv_fully_connected', input_keys: Any = '???', output_keys: Any = '???', detach_keys: Any = '???', scaling: Any = None, layer_size: int = 512, nr_layers: int = 6, skip_connections: bool = False, activation_fn: str = 'silu', adaptive_activations: bool = False, weight_norm: bool = True)[source]

Bases: ModelConf

activation_fn: str = 'silu'

adaptive_activations: bool = False

arch_type: str = 'conv_fully_connected'

layer_size: int = 512

nr_layers: int = 6

skip_connections: bool = False

weight_norm: bool = True

class modulus.sym.hydra.arch.DeepOConf(arch_type: str = 'deeponet', input_keys: Any = '???', output_keys: Any = '???', detach_keys: Any = '???', scaling: Any = None, trunk_dim: Any = None, branch_dim: Any = None)[source]

Bases: ModelConf

arch_type: str = 'deeponet'

branch_dim: Any = None

trunk_dim: Any = None

class modulus.sym.hydra.arch.DistributedAFNOConf(arch_type: str = 'distributed_afno', input_keys: Any = '???', output_keys: Any = '???', detach_keys: Any = '???', scaling: Any = None, img_shape: Tuple[int] = '???', patch_size: int = 16, embed_dim: int = 256, depth: int = 4, num_blocks: int = 8, channel_parallel_inputs: bool = False, channel_parallel_outputs: bool = False)[source]

Bases: ModelConf

arch_type: str = 'distributed_afno'

channel_parallel_inputs: bool = False

channel_parallel_outputs: bool = False

depth: int = 4

embed_dim: int = 256

img_shape: Tuple[int] = '???'

num_blocks: int = 8

patch_size: int = 16

class modulus.sym.hydra.arch.FNOConf(arch_type: str = 'fno', input_keys: Any = '???', output_keys: Any = '???', detach_keys: Any = '???', scaling: Any = None, dimension: int = '???', nr_fno_layers: int = 4, fno_modes: Any = 16, padding: int = 8, padding_type: str = 'constant', activation_fn: str = 'gelu', coord_features: bool = True)[source]

Bases: ModelConf

activation_fn: str = 'gelu'

arch_type: str = 'fno'

coord_features: bool = True

dimension: int = '???'

fno_modes: Any = 16

nr_fno_layers: int = 4

padding: int = 8

padding_type: str = 'constant'

class modulus.sym.hydra.arch.FourierConf(arch_type: str = 'fourier', input_keys: Any = '???', output_keys: Any = '???', detach_keys: Any = '???', scaling: Any = None, frequencies: Any = "('axis', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9])", frequencies_params: Any = "('axis', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9])", activation_fn: str = 'silu', layer_size: int = 512, nr_layers: int = 6, skip_connections: bool = False, weight_norm: bool = True, adaptive_activations: bool = False)[source]

Bases: ModelConf

activation_fn: str = 'silu'

adaptive_activations: bool = False

arch_type: str = 'fourier'

frequencies: Any = "('axis', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9])"

frequencies_params: Any = "('axis', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9])"

layer_size: int = 512

nr_layers: int = 6

skip_connections: bool = False

weight_norm: bool = True

class modulus.sym.hydra.arch.FullyConnectedConf(arch_type: str = 'fully_connected', input_keys: Any = '???', output_keys: Any = '???', detach_keys: Any = '???', scaling: Any = None, layer_size: int = 512, nr_layers: int = 6, skip_connections: bool = False, activation_fn: str = 'silu', adaptive_activations: bool = False, weight_norm: bool = True)[source]

Bases: ModelConf

activation_fn: str = 'silu'

adaptive_activations: bool = False

arch_type: str = 'fully_connected'

layer_size: int = 512

nr_layers: int = 6

skip_connections: bool = False

weight_norm: bool = True

class modulus.sym.hydra.arch.FusedFourierNetConf(arch_type: str = 'fused_fourier', input_keys: Any = '???', output_keys: Any = '???', detach_keys: Any = '???', scaling: Any = None, layer_size: int = 128, nr_layers: int = 6, activation_fn: str = 'sigmoid', n_frequencies: int = 12)[source]

Bases: ModelConf

activation_fn: str = 'sigmoid'

arch_type: str = 'fused_fourier'

layer_size: int = 128

n_frequencies: int = 12

nr_layers: int = 6

class modulus.sym.hydra.arch.FusedGridEncodingNetConf(arch_type: str = 'fused_hash_encoding', input_keys: Any = '???', output_keys: Any = '???', detach_keys: Any = '???', scaling: Any = None, layer_size: int = 128, nr_layers: int = 6, activation_fn: str = 'sigmoid', indexing: str = 'Hash', n_levels: int = 16, n_features_per_level: int = 2, log2_hashmap_size: int = 19, base_resolution: int = 16, per_level_scale: float = 2.0, interpolation: str = 'Smoothstep')[source]

Bases: ModelConf

activation_fn: str = 'sigmoid'

arch_type: str = 'fused_hash_encoding'

base_resolution: int = 16

indexing: str = 'Hash'

interpolation: str = 'Smoothstep'

layer_size: int = 128

log2_hashmap_size: int = 19

n_features_per_level: int = 2

n_levels: int = 16

nr_layers: int = 6

per_level_scale: float = 2.0

class modulus.sym.hydra.arch.FusedMLPConf(arch_type: str = 'fused_fully_connected', input_keys: Any = '???', output_keys: Any = '???', detach_keys: Any = '???', scaling: Any = None, layer_size: int = 128, nr_layers: int = 6, activation_fn: str = 'sigmoid')[source]

Bases: ModelConf

activation_fn: str = 'sigmoid'

arch_type: str = 'fused_fully_connected'

layer_size: int = 128

nr_layers: int = 6

class modulus.sym.hydra.arch.HighwayFourierConf(arch_type: str = 'highway_fourier', input_keys: Any = '???', output_keys: Any = '???', detach_keys: Any = '???', scaling: Any = None, frequencies: Any = "('axis', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9])", frequencies_params: Any = "('axis', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9])", activation_fn: str = 'silu', layer_size: int = 512, nr_layers: int = 6, skip_connections: bool = False, weight_norm: bool = True, adaptive_activations: bool = False, transform_fourier_features: bool = True, project_fourier_features: bool = False)[source]

Bases: ModelConf

activation_fn: str = 'silu'

adaptive_activations: bool = False

arch_type: str = 'highway_fourier'

frequencies: Any = "('axis', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9])"

frequencies_params: Any = "('axis', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9])"

layer_size: int = 512

nr_layers: int = 6

project_fourier_features: bool = False

skip_connections: bool = False

transform_fourier_features: bool = True

weight_norm: bool = True

class modulus.sym.hydra.arch.ModelConf(arch_type: str = '???', input_keys: Any = '???', output_keys: Any = '???', detach_keys: Any = '???', scaling: Any = None)[source]

Bases: object

arch_type: str = '???'

detach_keys: Any = '???'

input_keys: Any = '???'

output_keys: Any = '???'

scaling: Any = None

class modulus.sym.hydra.arch.ModifiedFourierConf(arch_type: str = 'modified_fourier', input_keys: Any = '???', output_keys: Any = '???', detach_keys: Any = '???', scaling: Any = None, frequencies: Any = "('axis', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9])", frequencies_params: Any = "('axis', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9])", activation_fn: str = 'silu', layer_size: int = 512, nr_layers: int = 6, skip_connections: bool = False, weight_norm: bool = True, adaptive_activations: bool = False)[source]

Bases: ModelConf

activation_fn: str = 'silu'

adaptive_activations: bool = False

arch_type: str = 'modified_fourier'

frequencies: Any = "('axis', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9])"

frequencies_params: Any = "('axis', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9])"

layer_size: int = 512

nr_layers: int = 6

skip_connections: bool = False

weight_norm: bool = True

class modulus.sym.hydra.arch.MultiplicativeFilterConf(arch_type: str = 'multiplicative_fourier', input_keys: Any = '???', output_keys: Any = '???', detach_keys: Any = '???', scaling: Any = None, layer_size: int = 512, nr_layers: int = 6, skip_connections: bool = False, activation_fn: str = 'identity', filter_type: str = 'fourier', weight_norm: bool = True, input_scale: float = 10.0, gabor_alpha: float = 6.0, gabor_beta: float = 1.0, normalization: Any = None)[source]

Bases: ModelConf

activation_fn: str = 'identity'

arch_type: str = 'multiplicative_fourier'

filter_type: str = 'fourier'

gabor_alpha: float = 6.0

gabor_beta: float = 1.0

input_scale: float = 10.0

layer_size: int = 512

normalization: Any = None

nr_layers: int = 6

skip_connections: bool = False

weight_norm: bool = True

class modulus.sym.hydra.arch.MultiresolutionHashNetConf(arch_type: str = 'hash_encoding', input_keys: Any = '???', output_keys: Any = '???', detach_keys: Any = '???', scaling: Any = None, layer_size: int = 64, nr_layers: int = 3, skip_connections: bool = False, weight_norm: bool = True, adaptive_activations: bool = False, bounds: Any = '[(1.0, 1.0), (1.0, 1.0)]', nr_levels: int = 16, nr_features_per_level: int = 2, log2_hashmap_size: int = 19, base_resolution: int = 2, finest_resolution: int = 32)[source]

Bases: ModelConf

adaptive_activations: bool = False

arch_type: str = 'hash_encoding'

base_resolution: int = 2

bounds: Any = '[(1.0, 1.0), (1.0, 1.0)]'

finest_resolution: int = 32

layer_size: int = 64

log2_hashmap_size: int = 19

nr_features_per_level: int = 2

nr_layers: int = 3

nr_levels: int = 16

skip_connections: bool = False

weight_norm: bool = True

class modulus.sym.hydra.arch.MultiscaleFourierConf(arch_type: str = 'multiscale_fourier', input_keys: Any = '???', output_keys: Any = '???', detach_keys: Any = '???', scaling: Any = None, frequencies: Any = <factory>, frequencies_params: Any = None, activation_fn: str = 'silu', layer_size: int = 512, nr_layers: int = 6, skip_connections: bool = False, weight_norm: bool = True, adaptive_activations: bool = False)[source]

Bases: ModelConf

activation_fn: str = 'silu'

adaptive_activations: bool = False

arch_type: str = 'multiscale_fourier'

frequencies: Any

frequencies_params: Any = None

layer_size: int = 512

nr_layers: int = 6

skip_connections: bool = False

weight_norm: bool = True

class modulus.sym.hydra.arch.Pix2PixConf(arch_type: str = 'pix2pix', input_keys: Any = '???', output_keys: Any = '???', detach_keys: Any = '???', scaling: Any = None, dimension: int = '???', conv_layer_size: int = 64, n_downsampling: int = 3, n_blocks: int = 3, scaling_factor: int = 1, batch_norm: bool = True, padding_type: str = 'reflect', activation_fn: str = 'relu')[source]

Bases: ModelConf

activation_fn: str = 'relu'

arch_type: str = 'pix2pix'

batch_norm: bool = True

conv_layer_size: int = 64

dimension: int = '???'

n_blocks: int = 3

n_downsampling: int = 3

padding_type: str = 'reflect'

scaling_factor: int = 1

class modulus.sym.hydra.arch.SRResConf(arch_type: str = 'super_res', input_keys: Any = '???', output_keys: Any = '???', detach_keys: Any = '???', scaling: Any = None, large_kernel_size: int = 7, small_kernel_size: int = 3, conv_layer_size: int = 32, n_resid_blocks: int = 8, scaling_factor: int = 8, activation_fn: str = 'prelu')[source]

Bases: ModelConf

activation_fn: str = 'prelu'

arch_type: str = 'super_res'

conv_layer_size: int = 32

large_kernel_size: int = 7

n_resid_blocks: int = 8

scaling_factor: int = 8

small_kernel_size: int = 3

class modulus.sym.hydra.arch.SirenConf(arch_type: str = 'siren', input_keys: Any = '???', output_keys: Any = '???', detach_keys: Any = '???', scaling: Any = None, layer_size: int = 512, nr_layers: int = 6, first_omega: float = 30.0, omega: float = 30.0, normalization: Any = None)[source]

Bases: ModelConf

arch_type: str = 'siren'

first_omega: float = 30.0

layer_size: int = 512

normalization: Any = None

nr_layers: int = 6

omega: float = 30.0

modulus.sym.hydra.arch.register_arch_configs() → None[source]

Modulus main config

class modulus.sym.hydra.config.DebugModulusConfig(network_dir: str = '.', initialization_network_dir: str = '', save_filetypes: str = 'vtk', summary_histograms: bool = False, jit: bool = True, jit_use_nvfuser: bool = True, jit_arch_mode: str = 'only_activation', jit_autograd_nodes: bool = False, cuda_graphs: bool = True, cuda_graph_warmup: int = 20, find_unused_parameters: bool = False, broadcast_buffers: bool = False, device: str = '', debug: bool = True, run_mode: str = 'train', arch: Any = '???', models: Any = '???', training: modulus.sym.hydra.training.TrainingConf = '???', stop_criterion: modulus.sym.hydra.training.StopCriterionConf = '???', loss: modulus.sym.hydra.loss.LossConf = '???', optimizer: modulus.sym.hydra.optimizer.OptimizerConf = '???', scheduler: modulus.sym.hydra.scheduler.SchedulerConf = '???', batch_size: Any = '???', profiler: modulus.sym.hydra.profiler.ProfilerConf = '???', hydra: Any = <factory>, custom: Any = '???', defaults: List[Any] = <factory>)[source]

Bases: ModulusConfig

debug: bool = True

defaults: List[Any]

class modulus.sym.hydra.config.DefaultModulusConfig(network_dir: str = '.', initialization_network_dir: str = '', save_filetypes: str = 'vtk', summary_histograms: bool = False, jit: bool = True, jit_use_nvfuser: bool = True, jit_arch_mode: str = 'only_activation', jit_autograd_nodes: bool = False, cuda_graphs: bool = True, cuda_graph_warmup: int = 20, find_unused_parameters: bool = False, broadcast_buffers: bool = False, device: str = '', debug: bool = False, run_mode: str = 'train', arch: Any = '???', models: Any = '???', training: modulus.sym.hydra.training.TrainingConf = '???', stop_criterion: modulus.sym.hydra.training.StopCriterionConf = '???', loss: modulus.sym.hydra.loss.LossConf = '???', optimizer: modulus.sym.hydra.optimizer.OptimizerConf = '???', scheduler: modulus.sym.hydra.scheduler.SchedulerConf = '???', batch_size: Any = '???', profiler: modulus.sym.hydra.profiler.ProfilerConf = '???', hydra: Any = <factory>, custom: Any = '???', defaults: List[Any] = <factory>)[source]

Bases: ModulusConfig

defaults: List[Any]

class modulus.sym.hydra.config.ExperimentalModulusConfig(network_dir: str = '.', initialization_network_dir: str = '', save_filetypes: str = 'vtk', summary_histograms: bool = False, jit: bool = True, jit_use_nvfuser: bool = True, jit_arch_mode: str = 'only_activation', jit_autograd_nodes: bool = False, cuda_graphs: bool = True, cuda_graph_warmup: int = 20, find_unused_parameters: bool = False, broadcast_buffers: bool = False, device: str = '', debug: bool = False, run_mode: str = 'train', arch: Any = '???', models: Any = '???', training: modulus.sym.hydra.training.TrainingConf = '???', stop_criterion: modulus.sym.hydra.training.StopCriterionConf = '???', loss: modulus.sym.hydra.loss.LossConf = '???', optimizer: modulus.sym.hydra.optimizer.OptimizerConf = '???', scheduler: modulus.sym.hydra.scheduler.SchedulerConf = '???', batch_size: Any = '???', profiler: modulus.sym.hydra.profiler.ProfilerConf = '???', hydra: Any = <factory>, custom: Any = '???', defaults: List[Any] = <factory>, pde: modulus.sym.hydra.pde.PDEConf = '???')[source]

Bases: ModulusConfig

defaults: List[Any]

pde: PDEConf = '???'

class modulus.sym.hydra.config.ModulusConfig(network_dir: str = '.', initialization_network_dir: str = '', save_filetypes: str = 'vtk', summary_histograms: bool = False, jit: bool = True, jit_use_nvfuser: bool = True, jit_arch_mode: str = 'only_activation', jit_autograd_nodes: bool = False, cuda_graphs: bool = True, cuda_graph_warmup: int = 20, find_unused_parameters: bool = False, broadcast_buffers: bool = False, device: str = '', debug: bool = False, run_mode: str = 'train', arch: Any = '???', models: Any = '???', training: modulus.sym.hydra.training.TrainingConf = '???', stop_criterion: modulus.sym.hydra.training.StopCriterionConf = '???', loss: modulus.sym.hydra.loss.LossConf = '???', optimizer: modulus.sym.hydra.optimizer.OptimizerConf = '???', scheduler: modulus.sym.hydra.scheduler.SchedulerConf = '???', batch_size: Any = '???', profiler: modulus.sym.hydra.profiler.ProfilerConf = '???', hydra: Any = <factory>, custom: Any = '???')[source]

Bases: object

arch: Any = '???'

batch_size: Any = '???'

broadcast_buffers: bool = False

cuda_graph_warmup: int = 20

cuda_graphs: bool = True

custom: Any = '???'

debug: bool = False

device: str = ''

find_unused_parameters: bool = False

hydra: Any

initialization_network_dir: str = ''

jit: bool = True

jit_arch_mode: str = 'only_activation'

jit_autograd_nodes: bool = False

jit_use_nvfuser: bool = True

loss: LossConf = '???'

models: Any = '???'

network_dir: str = '.'

optimizer: OptimizerConf = '???'

profiler: ProfilerConf = '???'

run_mode: str = 'train'

save_filetypes: str = 'vtk'

scheduler: SchedulerConf = '???'

stop_criterion: StopCriterionConf = '???'

summary_histograms: bool = False

training: TrainingConf = '???'

modulus.sym.hydra.config.register_modulus_configs() → None[source]

Hydra related configs

class modulus.sym.hydra.hydra.DebugFormat(format: str = '[%(levelname)s][%(asctime)s][%(module)s] - %(message)s', datefmt: str = '%Y-%m-%d %H:%M:%S')[source]

Bases: object

datefmt: str = '%Y-%m-%d %H:%M:%S'

format: str = '[%(levelname)s][%(asctime)s][%(module)s] - %(message)s'

class modulus.sym.hydra.hydra.DebugLogging(version: int = 1, formatters: Any = <factory>, handlers: Any = <factory>, root: Any = <factory>, disable_existing_loggers: bool = False, level: int = 0)[source]

Bases: object

disable_existing_loggers: bool = False

formatters: Any

handlers: Any

level: int = 0

root: Any

version: int = 1

class modulus.sym.hydra.hydra.DefaultLogging(version: int = 1, formatters: Any = <factory>, handlers: Any = <factory>, root: Any = <factory>, disable_existing_loggers: bool = False, level: int = 20)[source]

Bases: object

disable_existing_loggers: bool = False

formatters: Any

handlers: Any

level: int = 20

root: Any

version: int = 1

class modulus.sym.hydra.hydra.SimpleFormat(format: str = '[%(asctime)s] - %(message)s', datefmt: str = '%H:%M:%S')[source]

Bases: object

datefmt: str = '%H:%M:%S'

format: str = '[%(asctime)s] - %(message)s'

modulus.sym.hydra.hydra.register_hydra_configs() → None[source]

Supported Modulus loss aggregator configs

class modulus.sym.hydra.loss.AggregatorGradNormConf(_target_: str = 'modulus.sym.loss.aggregator.GradNorm', weights: Any = None, alpha: float = 1.0)[source]

Bases: LossConf

alpha: float = 1.0

class modulus.sym.hydra.loss.AggregatorHomoscedasticConf(_target_: str = 'modulus.sym.loss.aggregator.HomoscedasticUncertainty', weights: Any = None)[source]

Bases: LossConf

class modulus.sym.hydra.loss.AggregatorLRAnnealingConf(_target_: str = 'modulus.sym.loss.aggregator.LRAnnealing', weights: Any = None, update_freq: int = 1, alpha: float = 0.01, ref_key: Any = None, eps: float = 1e-08)[source]

Bases: LossConf

alpha: float = 0.01

eps: float = 1e-08

ref_key: Any = None

update_freq: int = 1

class modulus.sym.hydra.loss.AggregatorRelobraloConf(_target_: str = 'modulus.sym.loss.aggregator.Relobralo', weights: Any = None, alpha: float = 0.95, beta: float = 0.99, tau: float = 1.0, eps: float = 1e-08)[source]

Bases: LossConf

alpha: float = 0.95

beta: float = 0.99

eps: float = 1e-08

tau: float = 1.0

class modulus.sym.hydra.loss.AggregatorResNormConf(_target_: str = 'modulus.sym.loss.aggregator.ResNorm', weights: Any = None, alpha: float = 1.0)[source]

Bases: LossConf

alpha: float = 1.0

class modulus.sym.hydra.loss.AggregatorSoftAdaptConf(_target_: str = 'modulus.sym.loss.aggregator.SoftAdapt', weights: Any = None, eps: float = 1e-08)[source]

Bases: LossConf

eps: float = 1e-08

class modulus.sym.hydra.loss.AggregatorSumConf(_target_: str = 'modulus.sym.loss.aggregator.Sum', weights: Any = None)[source]

Bases: LossConf

class modulus.sym.hydra.loss.LossConf(_target_: str = '???', weights: Any = None)[source]

Bases: object

weights: Any = None

class modulus.sym.hydra.loss.NTKConf(use_ntk: bool = False, save_name: Any = None, run_freq: int = 1000)[source]

Bases: object

run_freq: int = 1000

save_name: Any = None

use_ntk: bool = False

modulus.sym.hydra.loss.register_loss_configs() → None[source]

Supported optimizer configs

class modulus.sym.hydra.optimizer.A2GradExpConf(_params_: Any = <factory>, _target_: str = 'torch_optimizer.A2GradExp', lr: float = 0.01, beta: float = 10.0, lips: float = 10.0)[source]

Bases: OptimizerConf

beta: float = 10.0

lips: float = 10.0

lr: float = 0.01

class modulus.sym.hydra.optimizer.A2GradIncConf(_params_: Any = <factory>, _target_: str = 'torch_optimizer.A2GradInc', lr: float = 0.01, beta: float = 10.0, lips: float = 10.0)[source]

Bases: OptimizerConf

beta: float = 10.0

lips: float = 10.0

lr: float = 0.01

class modulus.sym.hydra.optimizer.A2GradUniConf(_params_: Any = <factory>, _target_: str = 'torch_optimizer.A2GradUni', lr: float = 0.01, beta: float = 10.0, lips: float = 10.0)[source]

Bases: OptimizerConf

beta: float = 10.0

lips: float = 10.0

lr: float = 0.01

class modulus.sym.hydra.optimizer.ASGDConf(_params_: Any = <factory>, _target_: str = 'torch.optim.ASGD', lr: float = 0.01, lambd: float = 0.0001, alpha: float = 0.75, t0: float = 1000000.0, weight_decay: float = 0)[source]

Bases: OptimizerConf

alpha: float = 0.75

lambd: float = 0.0001

lr: float = 0.01

t0: float = 1000000.0

weight_decay: float = 0

class modulus.sym.hydra.optimizer.AccSGDConf(_params_: Any = <factory>, _target_: str = 'torch_optimizer.AccSGD', lr: float = 0.001, kappa: float = 1000.0, xi: float = 10.0, small_const: float = 0.7, weight_decay: float = 0)[source]

Bases: OptimizerConf

kappa: float = 1000.0

lr: float = 0.001

small_const: float = 0.7

weight_decay: float = 0

xi: float = 10.0

class modulus.sym.hydra.optimizer.AdaBeliefConf(_params_: Any = <factory>, _target_: str = 'torch_optimizer.AdaBelief', lr: float = 0.001, betas: List[float] = <factory>, eps: float = 0.001, weight_decay: float = 0, amsgrad: bool = False, weight_decouple: bool = False, fixed_decay: bool = False, rectify: bool = False)[source]

Bases: OptimizerConf

amsgrad: bool = False

betas: List[float]

eps: float = 0.001

fixed_decay: bool = False

lr: float = 0.001

rectify: bool = False

weight_decay: float = 0

weight_decouple: bool = False

class modulus.sym.hydra.optimizer.AdaBoundConf(_params_: Any = <factory>, _target_: str = 'torch_optimizer.AdaBound', lr: float = 0.001, betas: List[float] = <factory>, final_lr: float = 0.1, gamma: float = 0.001, eps: float = 1e-08, weight_decay: float = 0, amsbound: bool = False)[source]

Bases: OptimizerConf

amsbound: bool = False

betas: List[float]

eps: float = 1e-08

final_lr: float = 0.1

gamma: float = 0.001

lr: float = 0.001

weight_decay: float = 0

class modulus.sym.hydra.optimizer.AdaModConf(_params_: Any = <factory>, _target_: str = 'torch_optimizer.AdaMod', lr: float = 0.001, betas: List[float] = <factory>, beta3: float = 0.999, eps: float = 1e-08, weight_decay: float = 0)[source]

Bases: OptimizerConf

beta3: float = 0.999

betas: List[float]

eps: float = 1e-08

lr: float = 0.001

weight_decay: float = 0

class modulus.sym.hydra.optimizer.AdadeltaConf(_params_: Any = <factory>, _target_: str = 'torch.optim.Adadelta', lr: float = 1.0, rho: float = 0.9, eps: float = 1e-06, weight_decay: float = 0)[source]

Bases: OptimizerConf

eps: float = 1e-06

lr: float = 1.0

rho: float = 0.9

weight_decay: float = 0

class modulus.sym.hydra.optimizer.AdafactorConf(_params_: Any = <factory>, _target_: str = 'torch_optimizer.Adafactor', lr: float = 0.001, eps2: List[float] = <factory>, clip_threshold: float = 1.0, decay_rate: float = -0.8, beta1: Any = None, weight_decay: float = 0, scale_parameter: bool = True, relative_step: bool = True, warmup_init: bool = False)[source]

Bases: OptimizerConf

beta1: Any = None

clip_threshold: float = 1.0

decay_rate: float = -0.8

eps2: List[float]

lr: float = 0.001

relative_step: bool = True

scale_parameter: bool = True

warmup_init: bool = False

weight_decay: float = 0

class modulus.sym.hydra.optimizer.AdagradConf(_params_: Any = <factory>, _target_: str = 'torch.optim.Adagrad', lr: float = 0.01, lr_decay: float = 0, weight_decay: float = 0, initial_accumulator_value: float = 0, eps: float = 1e-10)[source]

Bases: OptimizerConf

eps: float = 1e-10

initial_accumulator_value: float = 0

lr: float = 0.01

lr_decay: float = 0

weight_decay: float = 0

class modulus.sym.hydra.optimizer.AdahessianConf(_params_: Any = <factory>, _target_: str = 'torch_optimizer.Adahessian', lr: float = 0.1, betas: List[float] = <factory>, eps: float = 0.0001, weight_decay: float = 0.0, hessian_power: float = 1.0)[source]

Bases: OptimizerConf

betas: List[float]

eps: float = 0.0001

hessian_power: float = 1.0

lr: float = 0.1

weight_decay: float = 0.0

class modulus.sym.hydra.optimizer.AdamConf(_params_: Any = <factory>, _target_: str = 'torch.optim.Adam', lr: float = 0.001, betas: List[float] = <factory>, eps: float = 1e-08, weight_decay: float = 0, amsgrad: bool = False)[source]

Bases: OptimizerConf

amsgrad: bool = False

betas: List[float]

eps: float = 1e-08

lr: float = 0.001

weight_decay: float = 0

class modulus.sym.hydra.optimizer.AdamPConf(_params_: Any = <factory>, _target_: str = 'torch_optimizer.AdamP', lr: float = 0.001, betas: List[float] = <factory>, eps: float = 1e-08, weight_decay: float = 0, delta: float = 0.1, wd_ratio: float = 0.1)[source]

Bases: OptimizerConf

betas: List[float]

delta: float = 0.1

eps: float = 1e-08

lr: float = 0.001

wd_ratio: float = 0.1

weight_decay: float = 0

class modulus.sym.hydra.optimizer.AdamWConf(_params_: Any = <factory>, _target_: str = 'torch.optim.AdamW', lr: float = 0.001, betas: List[float] = <factory>, eps: float = 1e-08, weight_decay: float = 0.01, amsgrad: bool = False)[source]

Bases: OptimizerConf

amsgrad: bool = False

betas: List[float]

eps: float = 1e-08

lr: float = 0.001

weight_decay: float = 0.01

class modulus.sym.hydra.optimizer.AdamaxConf(_params_: Any = <factory>, _target_: str = 'torch.optim.Adamax', lr: float = 0.002, betas: List[float] = <factory>, eps: float = 1e-08, weight_decay: float = 0)[source]

Bases: OptimizerConf

betas: List[float]

eps: float = 1e-08

lr: float = 0.002

weight_decay: float = 0

class modulus.sym.hydra.optimizer.AggMoConf(_params_: Any = <factory>, _target_: str = 'torch_optimizer.AggMo', lr: float = 0.001, betas: List[float] = <factory>, weight_decay: float = 0)[source]

Bases: OptimizerConf

betas: List[float]

lr: float = 0.001

weight_decay: float = 0

class modulus.sym.hydra.optimizer.ApolloConf(_params_: Any = <factory>, _target_: str = 'torch_optimizer.Apollo', lr: float = 0.01, beta: float = 0.9, eps: float = 0.0001, warmup: int = 0, init_lr: float = 0.01, weight_decay: float = 0)[source]

Bases: OptimizerConf

beta: float = 0.9

eps: float = 0.0001

init_lr: float = 0.01

lr: float = 0.01

warmup: int = 0

weight_decay: float = 0

class modulus.sym.hydra.optimizer.BFGSConf(_params_: Any = <factory>, _target_: str = 'torch.optim.LBFGS', lr: float = 1.0, max_iter: int = 1000, max_eval: Any = None, tolerance_grad: float = 1e-07, tolerance_change: float = 1e-09, history_size: int = 100, line_search_fn: Any = None)[source]

Bases: OptimizerConf

history_size: int = 100

line_search_fn: Any = None

lr: float = 1.0

max_eval: Any = None

max_iter: int = 1000

tolerance_change: float = 1e-09

tolerance_grad: float = 1e-07

class modulus.sym.hydra.optimizer.DiffGradConf(_params_: Any = <factory>, _target_: str = 'torch_optimizer.DiffGrad', lr: float = 0.001, betas: List[float] = <factory>, eps: float = 1e-08, weight_decay: float = 0)[source]

Bases: OptimizerConf

betas: List[float]

eps: float = 1e-08

lr: float = 0.001

weight_decay: float = 0

class modulus.sym.hydra.optimizer.LambConf(_params_: Any = <factory>, _target_: str = 'torch_optimizer.Lamb', lr: float = 0.001, betas: List[float] = <factory>, eps: float = 1e-08, weight_decay: float = 0)[source]

Bases: OptimizerConf

betas: List[float]

eps: float = 1e-08

lr: float = 0.001

weight_decay: float = 0

class modulus.sym.hydra.optimizer.MADGRADConf(_params_: Any = <factory>, _target_: str = 'torch_optimizer.MADGRAD', lr: float = 0.01, momentum: float = 0.9, weight_decay: float = 0, eps: float = 1e-06)[source]

Bases: OptimizerConf

eps: float = 1e-06

lr: float = 0.01

momentum: float = 0.9

weight_decay: float = 0

class modulus.sym.hydra.optimizer.NAdamConf(_params_: Any = <factory>, _target_: str = 'torch.optim.NAdam', lr: float = 0.002, betas: List[float] = <factory>, eps: float = 1e-08, weight_decay: float = 0, momentum_decay: float = 0.004)[source]

Bases: OptimizerConf

betas: List[float]

eps: float = 1e-08

lr: float = 0.002

momentum_decay: float = 0.004

weight_decay: float = 0

class modulus.sym.hydra.optimizer.NovoGradConf(_params_: Any = <factory>, _target_: str = 'torch_optimizer.NovoGrad', lr: float = 0.001, betas: List[float] = <factory>, eps: float = 1e-08, weight_decay: float = 0, grad_averaging: bool = False, amsgrad: bool = False)[source]

Bases: OptimizerConf

amsgrad: bool = False

betas: List[float]

eps: float = 1e-08

grad_averaging: bool = False

lr: float = 0.001

weight_decay: float = 0

class modulus.sym.hydra.optimizer.OptimizerConf(_params_: Any = <factory>)[source]

Bases: object

class modulus.sym.hydra.optimizer.PIDConf(_params_: Any = <factory>, _target_: str = 'torch_optimizer.PID', lr: float = 0.001, momentum: float = 0, dampening: float = 0, weight_decay: float = 0.01, integral: float = 5.0, derivative: float = 10.0)[source]

Bases: OptimizerConf

dampening: float = 0

derivative: float = 10.0

integral: float = 5.0

lr: float = 0.001

momentum: float = 0

weight_decay: float = 0.01

class modulus.sym.hydra.optimizer.QHAdamConf(_params_: Any = <factory>, _target_: str = 'torch_optimizer.QHAdam', lr: float = 0.001, betas: List[float] = <factory>, nus: List[float] = <factory>, weight_decay: float = 0, decouple_weight_decay: bool = False, eps: float = 1e-08)[source]

Bases: OptimizerConf

betas: List[float]

decouple_weight_decay: bool = False

eps: float = 1e-08

lr: float = 0.001

nus: List[float]

weight_decay: float = 0

class modulus.sym.hydra.optimizer.QHMConf(_params_: Any = <factory>, _target_: str = 'torch_optimizer.QHM', lr: float = 0.001, momentum: float = 0, nu: float = 0.7, weight_decay: float = 0.01, weight_decay_type: str = 'grad')[source]

Bases: OptimizerConf

lr: float = 0.001

momentum: float = 0

nu: float = 0.7

weight_decay: float = 0.01

weight_decay_type: str = 'grad'

class modulus.sym.hydra.optimizer.RAdamConf(_params_: Any = <factory>, _target_: str = 'torch.optim.RAdam', lr: float = 0.001, betas: List[float] = <factory>, eps: float = 1e-08, weight_decay: float = 0)[source]

Bases: OptimizerConf

betas: List[float]

eps: float = 1e-08

lr: float = 0.001

weight_decay: float = 0

class modulus.sym.hydra.optimizer.RMSpropConf(_params_: Any = <factory>, _target_: str = 'torch.optim.RMSprop', lr: float = 0.01, alpha: float = 0.99, eps: float = 1e-08, weight_decay: float = 0, momentum: float = 0, centered: bool = False)[source]

Bases: OptimizerConf

alpha: float = 0.99

centered: bool = False

eps: float = 1e-08

lr: float = 0.01

momentum: float = 0

weight_decay: float = 0

class modulus.sym.hydra.optimizer.RangerConf(_params_: Any = <factory>, _target_: str = 'torch_optimizer.Ranger', lr: float = 0.001, alpha: float = 0.5, k: int = 6, N_sma_threshhold: int = 5, betas: List[float] = <factory>, eps: float = 1e-05, weight_decay: float = 0)[source]

Bases: OptimizerConf

N_sma_threshhold: int = 5

alpha: float = 0.5

betas: List[float]

eps: float = 1e-05

k: int = 6

lr: float = 0.001

weight_decay: float = 0

class modulus.sym.hydra.optimizer.RangerQHConf(_params_: Any = <factory>, _target_: str = 'torch_optimizer.RangerQH', lr: float = 0.001, betas: List[float] = <factory>, nus: List[float] = <factory>, weight_decay: float = 0, k: int = 6, alpha: float = 0.5, decouple_weight_decay: bool = False, eps: float = 1e-08)[source]

Bases: OptimizerConf

alpha: float = 0.5

betas: List[float]

decouple_weight_decay: bool = False

eps: float = 1e-08

k: int = 6

lr: float = 0.001

nus: List[float]

weight_decay: float = 0

class modulus.sym.hydra.optimizer.RangerVAConf(_params_: Any = <factory>, _target_: str = 'torch_optimizer.RangerVA', lr: float = 0.001, alpha: float = 0.5, k: int = 6, n_sma_threshhold: int = 5, betas: List[float] = <factory>, eps: float = 1e-05, weight_decay: float = 0, amsgrad: bool = True, transformer: str = 'softplus', smooth: int = 50, grad_transformer: str = 'square')[source]

Bases: OptimizerConf

alpha: float = 0.5

amsgrad: bool = True

betas: List[float]

eps: float = 1e-05

grad_transformer: str = 'square'

k: int = 6

lr: float = 0.001

n_sma_threshhold: int = 5

smooth: int = 50

transformer: str = 'softplus'

weight_decay: float = 0

class modulus.sym.hydra.optimizer.RpropConf(_params_: Any = <factory>, _target_: str = 'torch.optim.Rprop', lr: float = 0.01, etas: List[float] = <factory>, step_sizes: List[float] = <factory>)[source]

Bases: OptimizerConf

etas: List[float]

lr: float = 0.01

step_sizes: List[float]

class modulus.sym.hydra.optimizer.SGDConf(_params_: Any = <factory>, _target_: str = 'torch.optim.SGD', lr: float = 0.001, momentum: float = 0.01, dampening: float = 0, weight_decay: float = 0, nesterov: bool = False)[source]

Bases: OptimizerConf

dampening: float = 0

lr: float = 0.001

momentum: float = 0.01

nesterov: bool = False

weight_decay: float = 0

class modulus.sym.hydra.optimizer.SGDPConf(_params_: Any = <factory>, _target_: str = 'torch_optimizer.SGDP', lr: float = 0.001, momentum: float = 0, dampening: float = 0, weight_decay: float = 0.01, nesterov: bool = False, delta: float = 0.1, wd_ratio: float = 0.1)[source]

Bases: OptimizerConf

dampening: float = 0

delta: float = 0.1

lr: float = 0.001

momentum: float = 0

nesterov: bool = False

wd_ratio: float = 0.1

weight_decay: float = 0.01

class modulus.sym.hydra.optimizer.SGDWConf(_params_: Any = <factory>, _target_: str = 'torch_optimizer.SGDW', lr: float = 0.001, momentum: float = 0, dampening: float = 0, weight_decay: float = 0.01, nesterov: bool = False)[source]

Bases: OptimizerConf

dampening: float = 0

lr: float = 0.001

momentum: float = 0

nesterov: bool = False

weight_decay: float = 0.01

class modulus.sym.hydra.optimizer.SWATSConf(_params_: Any = <factory>, _target_: str = 'torch_optimizer.SWATS', lr: float = 0.1, betas: List[float] = <factory>, eps: float = 0.001, weight_decay: float = 0, amsgrad: bool = False, nesterov: bool = False)[source]

Bases: OptimizerConf

amsgrad: bool = False

betas: List[float]

eps: float = 0.001

lr: float = 0.1

nesterov: bool = False

weight_decay: float = 0

class modulus.sym.hydra.optimizer.ShampooConf(_params_: Any = <factory>, _target_: str = 'torch_optimizer.Shampoo', lr: float = 0.1, momentum: float = 0, weight_decay: float = 0, epsilon: float = 0.0001, update_freq: int = 1)[source]

Bases: OptimizerConf

epsilon: float = 0.0001

lr: float = 0.1

momentum: float = 0

update_freq: int = 1

weight_decay: float = 0

class modulus.sym.hydra.optimizer.SparseAdamConf(_params_: Any = <factory>, _target_: str = 'torch.optim.SparseAdam', lr: float = 0.001, betas: List[float] = <factory>, eps: float = 1e-08)[source]

Bases: OptimizerConf

betas: List[float]

eps: float = 1e-08

lr: float = 0.001

class modulus.sym.hydra.optimizer.YogiConf(_params_: Any = <factory>, _target_: str = 'torch_optimizer.Yogi', lr: float = 0.01, betas: List[float] = <factory>, eps: float = 0.001, initial_accumulator: float = 1e-06, weight_decay: float = 0)[source]

Bases: OptimizerConf

betas: List[float]

eps: float = 0.001

initial_accumulator: float = 1e-06

lr: float = 0.01

weight_decay: float = 0

modulus.sym.hydra.optimizer.register_optimizer_configs() → None[source]

Profiler config

class modulus.sym.hydra.profiler.NvtxProfiler(profile: bool = False, start_step: int = 0, end_step: int = 100, name: str = 'nvtx')[source]

Bases: ProfilerConf

end_step: int = 100

name: str = 'nvtx'

profile: bool = False

start_step: int = 0

class modulus.sym.hydra.profiler.ProfilerConf(profile: bool = '???', start_step: int = '???', end_step: int = '???')[source]

Bases: object

end_step: int = '???'

profile: bool = '???'

start_step: int = '???'

class modulus.sym.hydra.profiler.TensorBoardProfiler(profile: bool = False, start_step: int = 0, end_step: int = 100, name: str = 'tensorboard', warmup: int = 5, repeat: int = 1, filename: str = '${hydra.job.override_dirname}-${hydra.job.name}.profile')[source]

Bases: ProfilerConf

end_step: int = 100

filename: str = '${hydra.job.override_dirname}-${hydra.job.name}.profile'

name: str = 'tensorboard'

profile: bool = False

repeat: int = 1

start_step: int = 0

warmup: int = 5

modulus.sym.hydra.profiler.register_profiler_configs() → None[source]

Supported PyTorch scheduler configs

class modulus.sym.hydra.scheduler.CosineAnnealingLRConf(_target_: str = 'torch.optim.lr_scheduler.CosineAnnealingLR', T_max: int = 1000, eta_min: float = 0, last_epoch: int = -1)[source]

Bases: SchedulerConf

T_max: int = 1000

eta_min: float = 0

last_epoch: int = -1

class modulus.sym.hydra.scheduler.CosineAnnealingWarmRestartsConf(_target_: str = 'torch.optim.lr_scheduler.CosineAnnealingWarmRestarts', T_0: int = 1000, T_mult: int = 1, eta_min: float = 0, last_epoch: int = -1)[source]

Bases: SchedulerConf

T_0: int = 1000

T_mult: int = 1

eta_min: float = 0

last_epoch: int = -1

class modulus.sym.hydra.scheduler.ExponentialLRConf(_target_: str = 'torch.optim.lr_scheduler.ExponentialLR', gamma: float = 0.99998718)[source]

Bases: SchedulerConf

gamma: float = 0.99998718

class modulus.sym.hydra.scheduler.SchedulerConf[source]

Bases: object

class modulus.sym.hydra.scheduler.TFExponentialLRConf(_target_: str = 'custom', _name_: str = 'tf.ExponentialLR', decay_rate: float = 0.95, decay_steps: int = 1000)[source]

Bases: SchedulerConf

decay_rate: float = 0.95

decay_steps: int = 1000

modulus.sym.hydra.scheduler.register_scheduler_configs() → None[source]

Supported modulus training paradigms

class modulus.sym.hydra.training.DefaultStopCriterion(metric: Any = None, min_delta: Any = None, patience: int = 50000, mode: str = 'min', freq: int = 1000, strict: bool = False)[source]

Bases: StopCriterionConf

freq: int = 1000

metric: Any = None

min_delta: Any = None

mode: str = 'min'

patience: int = 50000

strict: bool = False

class modulus.sym.hydra.training.DefaultTraining(max_steps: int = 10000, grad_agg_freq: int = 1, rec_results_freq: int = 1000, rec_validation_freq: int = '${training.rec_results_freq}', rec_inference_freq: int = '${training.rec_results_freq}', rec_monitor_freq: int = '${training.rec_results_freq}', rec_constraint_freq: int = '${training.rec_results_freq}', save_network_freq: int = 1000, print_stats_freq: int = 100, summary_freq: int = 1000, amp: bool = False, amp_dtype: str = 'float16', ntk: modulus.sym.hydra.loss.NTKConf = NTKConf(use_ntk=False, save_name=None, run_freq=1000))[source]

Bases: TrainingConf

amp: bool = False

amp_dtype: str = 'float16'

grad_agg_freq: int = 1

max_steps: int = 10000

ntk: NTKConf = NTKConf(use_ntk=False, save_name=None, run_freq=1000)

print_stats_freq: int = 100

rec_constraint_freq: int = '${training.rec_results_freq}'

rec_inference_freq: int = '${training.rec_results_freq}'

rec_monitor_freq: int = '${training.rec_results_freq}'

rec_results_freq: int = 1000

rec_validation_freq: int = '${training.rec_results_freq}'

save_network_freq: int = 1000

summary_freq: int = 1000

class modulus.sym.hydra.training.StopCriterionConf(metric: Any = '???', min_delta: Any = '???', patience: int = '???', mode: str = '???', freq: int = '???', strict: bool = '???')[source]

Bases: object

freq: int = '???'

metric: Any = '???'

min_delta: Any = '???'

mode: str = '???'

patience: int = '???'

strict: bool = '???'

class modulus.sym.hydra.training.TrainingConf(max_steps: int = '???', grad_agg_freq: int = '???', rec_results_freq: int = '???', rec_validation_freq: int = '???', rec_inference_freq: int = '???', rec_monitor_freq: int = '???', rec_constraint_freq: int = '???', save_network_freq: int = '???', print_stats_freq: int = '???', summary_freq: int = '???', amp: bool = '???', amp_dtype: str = '???')[source]

Bases: object

amp: bool = '???'

amp_dtype: str = '???'

grad_agg_freq: int = '???'

max_steps: int = '???'

print_stats_freq: int = '???'

rec_constraint_freq: int = '???'

rec_inference_freq: int = '???'

rec_monitor_freq: int = '???'

rec_results_freq: int = '???'

rec_validation_freq: int = '???'

save_network_freq: int = '???'

summary_freq: int = '???'

class modulus.sym.hydra.training.VariationalTraining(max_steps: int = 10000, grad_agg_freq: int = 1, rec_results_freq: int = 1000, rec_validation_freq: int = '${training.rec_results_freq}', rec_inference_freq: int = '${training.rec_results_freq}', rec_monitor_freq: int = '${training.rec_results_freq}', rec_constraint_freq: int = '${training.rec_results_freq}', save_network_freq: int = 1000, print_stats_freq: int = 100, summary_freq: int = 1000, amp: bool = False, amp_dtype: str = 'float16', ntk: modulus.sym.hydra.loss.NTKConf = NTKConf(use_ntk=False, save_name=None, run_freq=1000), test_function: str = '???', use_quadratures: bool = False)[source]

Bases: DefaultTraining

test_function: str = '???'

use_quadratures: bool = False

modulus.sym.hydra.training.register_training_configs() → None[source]

modulus.sym.hydra.utils.add_hydra_run_path(path: Union[str, Path]) → Path[source]

Prepends current hydra run path

modulus.sym.hydra.utils.compose(config_name: Optional[str] = None, config_path: Optional[str] = None, overrides: List[str] = [], return_hydra_config: bool = False, job_name: Optional[str] = 'app', caller_stack_depth: int = 2) → DictConfig[source]

Internal Modulus config initializer and compose function. This is an alternative for initializing a Hydra config which should be used as a last ditch effort in cases where @modulus.main() cannot work. For more info see: https://hydra.cc/docs/advanced/compose_api/

Parameters
  • config_name (str) – Modulus config name

  • config_path (str) – Path to config file relative to the caller at location caller_stack_depth

  • overrides (list of strings) – List of overrides

  • return_hydra_config (bool) – Return the hydra options in the dict config

  • job_name (string) – Name of program run instance

  • caller_stack_depth (int) – Stack depth of this function call (needed for finding config relative to python).

modulus.sym.hydra.utils.main(config_path: str, config_name: str = 'config')[source]

Modified decorator for loading hydra configs in modulus See: https://github.com/facebookresearch/hydra/blob/main/hydra/main.py

modulus.sym.hydra.utils.to_absolute_path(*args: Union[str, Path])[source]

Converts file path to absolute path based on run file location Modified from: https://github.com/facebookresearch/hydra/blob/main/hydra/utils.py

modulus.sym.hydra.utils.to_yaml(cfg: DictConfig)[source]

Converges dict config into a YML string

Previous Modulus Sym Loss
Next Modulus Sym Geometry
© Copyright 2023, NVIDIA Modulus Team. Last updated on Jan 25, 2024.