Configure experiments using Pydantic models
mainExperiments are controlled via nested Pydantic configuration objects. The primary entry point is TrainConfig.
Key configuration components include:
TrainConfig: The top-level configuration.DataConfig: Configures training and testing datasets.ModelConfig: Configures the model architecture and vocabulary.ModuleConfig: Configures PyTorch modules by providing a classnameandkwargs.FunctionConfig: Configures partial functions by providing a functionnameandkwargs.
ModuleConfig and FunctionConfig both implement an .instantiate() method to create the actual object or function.
from zoology.config import TrainConfig, ModelConfig, DataConfig, ModuleConfig, FunctionConfig
from zoology.data.associative_recall import MQARConfig
input_seq_len = 10
config = TrainConfig(
max_epochs=20,
data=DataConfig(
train_configs=[MQARConfig(num_examples=10_000, vocab_size=128, input_seq_len=input_seq_len, )],
test_configs=[MQARConfig(num_examples=1_000, vocab_size=128, input_seq_len=input_seq_len, )],
),
model=ModelConfig(
vocab_size=128,
sequence_mixer=ModuleConfig(name= "zoology.mixers.attention.MHA")
),
)
# Example of using FunctionConfig
fn_config = FunctionConfig(name="torch.sort", kwargs={"descending": True})
fn = fn_config.instantiate()
# fn(torch.tensor([2,4,3])) -> [4, 3, 2]