graph LR
Strict_Data_Class_Base["Strict Data Class Base"]
Core_Framework_Configuration["Core Framework Configuration"]
Algorithm_Configuration["Algorithm Configuration"]
Model_Configuration["Model Configuration"]
Data_Management_Configuration["Data Management Configuration"]
Task_Specific_Configuration["Task-Specific Configuration"]
Conditional_Generation_Configuration["Conditional Generation Configuration"]
Optimizer_Configuration["Optimizer Configuration"]
Strict_Data_Class_Base -- "is inherited by" --> Core_Framework_Configuration
Core_Framework_Configuration -- "is inherited by" --> Algorithm_Configuration
Core_Framework_Configuration -- "is inherited by" --> Model_Configuration
Core_Framework_Configuration -- "is inherited by" --> Data_Management_Configuration
Core_Framework_Configuration -- "is inherited by" --> Task_Specific_Configuration
Core_Framework_Configuration -- "is inherited by" --> Conditional_Generation_Configuration
Core_Framework_Configuration -- "is inherited by" --> Optimizer_Configuration
Core_Framework_Configuration -- "provides settings to" --> GFN_Trainer
Algorithm_Configuration -- "provides settings to" --> GFN_Algorithms
Model_Configuration -- "provides settings to" --> Neural_Network_Models
Data_Management_Configuration -- "provides settings to" --> Data_Management_components
Task_Specific_Configuration -- "provides settings to" --> GFN_Tasks
Conditional_Generation_Configuration -- "provides settings to" --> Conditional_Utilities
Optimizer_Configuration -- "provides settings to" --> GFN_Trainer
The Configuration Manager subsystem in GFlowNet is a cornerstone of its architecture, embodying a configuration-driven design that ensures consistency, reproducibility, and flexibility across the entire framework. It centralizes the management of hyperparameters and operational settings, allowing for precise control over algorithms, models, data handling, and tasks. The subsystem is built around a hierarchical structure of configuration classes, all stemming from a strict data class base. This design promotes modularity and clear separation of concerns. These components were chosen because they collectively represent the core of GFlowNet's configuration-driven design, which is explicitly highlighted in the project's architectural patterns. They are fundamental for reproducibility, modularity and extensibility, centralized control, and flexibility. In essence, the Configuration Manager is not just a collection of settings; it's an active architectural pattern that dictates how the GFlowNet framework operates, ensuring robustness, adaptability, and scientific rigor.
This is the foundational component for all configuration classes within GFlowNet. It leverages StrictDataClass to enforce type-checking and immutability for all configuration parameters. This ensures that configurations are well-defined, consistent, and cannot be accidentally modified during runtime, which is crucial for reproducible machine learning experiments.
Related Classes/Methods:
StrictDataClass(1:1)
Serving as the top-level configuration, this component aggregates and manages global hyperparameters and settings that apply to the entire GFlowNet framework. It acts as the central entry point for defining the overall system behavior.
Related Classes/Methods:
This component defines and manages hyperparameters specific to the various GFlowNet algorithms, such as Trajectory Balance (TB), Flow Matching (FM), Advantage Actor-Critic (A2C), Soft Q-Learning (SQL), and Multi-Objective Q-Learning (MOQL). It allows for precise tuning of each algorithm's operational parameters.
Related Classes/Methods:
AlgoConfig(1:1)
This component specifies the architectural details and training parameters for the neural network models employed within GFlowNet, including Graph Transformers and Sequence Transformers. It ensures that models are instantiated and trained with consistent settings.
Related Classes/Methods:
ModelConfig(1:1)
Manages settings related to data handling within the framework, including parameters for data loading, sampling strategies, and the configuration of replay buffers. These settings are vital for efficient and stable training processes.
Related Classes/Methods:
ReplayConfig(1:1)
Encapsulates hyperparameters and settings unique to individual GFlowNet tasks, such as specific reward functions, dataset paths, or evaluation metrics for tasks like QM9 or SEH. This allows for flexible adaptation to diverse generative problems.
Related Classes/Methods:
TasksConfig(1:1)
Defines parameters for utility components that enable conditional generation, such as temperature conditioning for exploration/exploitation balance or focus regions for multi-objective optimization.
Related Classes/Methods:
ConditionalsConfig(1:1)
Manages the configuration settings for the optimization process, including the choice of optimizer (e.g., Adam, SGD), learning rate schedules, and other related parameters that dictate how models are trained.
Related Classes/Methods:
OptimizerConfig(1:1)