┌─────────────────────────────────────────────────────────────────────────┐
│ AiModelBuilder<T> │
│ (Main Configuration) │
└─────────────────────────────────────────────────────────────────────────┘
│
┌─────────────────────┼─────────────────────┐
│ │ │
┌─────▼──────┐ ┌─────▼──────┐ ┌─────▼──────┐
│ OptimizerBase │ Evaluator │ │ Normalizer │
│ (Training Core) │ │ │ │
└─────┬──────┘ └─────┬──────┘ └─────┬──────┘
│ │ │
[NEW COMPONENTS ARE HERE - See Below]
Training Process
│
┌────────────────┴────────────────┐
│ │
[Data Versioning] [Training Monitoring]
│ │
├──────────────────┬────────────┤
│ │ │
(Baseline) [Experiment Tracking]
│ │
├──────────────────┤
│ │
[Checkpoint Management] [Hyperparameter Optimization]
│ │
└──────────┬───────┘
│
[Model Registry]
│
(Final Artifact)
Phase 1 (Foundation):
├── DataVersioning
│ └── (provides data provenance)
├── ExperimentTracking
│ ├── (uses data from DataVersioning)
│ └── (provides run metadata)
└── TrainingMonitoring
├── (uses metrics from Optimizer)
└── (logs to ExperimentTracking)
Phase 2 (Advanced):
├── CheckpointManagement
│ ├── (saves state from TrainingMonitoring)
│ └── (uses ModelMetadata)
├── HyperparameterOptimization
│ ├── (builds on ExperimentTracking)
│ └── (extends AutoML/TrialResult)
└── ModelRegistry
├── (stores from CheckpointManagement)
├── (indexes from ModelMetadata)
└── (links from ExperimentTracking)
Each new component should follow this structure:
ComponentName/
├── Abstractions/
│ ├── IComponentInterface.cs
│ ├── ISecondaryInterface.cs
│ └── IThirdInterface.cs
├── Models/
│ ├── ComponentMetadata.cs
│ ├── ComponentResult.cs
│ └── [specific data models].cs
├── Implementations/ [or Strategies/]
│ ├── DefaultComponentImplementation.cs
│ ├── SpecificStrategy.cs
│ └── AnotherStrategy.cs
├── [optional] Utilities/
│ ├── ComponentHelper.cs
│ └── ComponentValidator.cs
├── ComponentException.cs
└── ComponentConfig.cs [or in Models/Options/]
Type of File Naming Pattern Location Example
─────────────────────────────────────────────────────────────────────────────
Interface I{Name}.cs ComponentName/ IExperimentTracker.cs
Base Class {Name}Base.cs ComponentName/ ExperimentTrackerBase.cs
Default Implementation Default{Name}.cs ComponentName/ DefaultExperimentTracker.cs
Strategy {Strategy}{Name}.cs Strategies/ BestMetricCheckpoint.cs
Configuration {Name}Config.cs ComponentName/ ExperimentTrackingConfig.cs
Options {Name}Options.cs Models/Options/ ExperimentTrackingOptions.cs
Model/Data {Name}.cs ComponentName/Models/ ExperimentRunMetadata.cs
Result {Name}Result.cs Models/Results/ ExperimentTrackingResult.cs
Exception {Name}Exception.cs Exceptions/ ExperimentTrackingException.cs
Enum {Name}.cs Enums/ ExperimentStatus.cs
Purpose: Track dataset versions, compute data hashes, detect changes Dependencies: Data loaders, Episodic data framework Integration: Feeds data metadata to ExperimentTracking Files: ~20-30 files
Purpose: Record training runs, metrics, configurations, artifacts Dependencies: ExperimentTracking, ModelMetadata Integration: Central hub for all training metadata Files: ~25-35 files
Purpose: Real-time metrics collection, alerting, performance tracking Dependencies: OptimizationIterationInfo, ModelEvaluator Integration: Hooks into OptimizerBase, logs to ExperimentTracking Files: ~20-30 files
Purpose: Save/restore model states, manage checkpoints Dependencies: Serialization, ModelMetadata, IModelSerializer Integration: Triggered by TrainingMonitoring, stores in repositories Files: ~15-25 files
Purpose: Systematic hyperparameter search Dependencies: AutoML infrastructure, TrialResult Integration: Extends AutoML, uses ExperimentTracking Files: ~15-25 files
Purpose: Centralized model storage, versioning, search Dependencies: ModelMetadata, CheckpointManagement, Serialization Integration: Final storage point, linked to ExperimentTracking Files: ~20-30 files
- Create
/src/DataVersioning/directory - Create interfaces:
-
IDataVersionManager.cs -
IDatasetVersion.cs -
IDataHash.cs -
IDataChangeTracker.cs
-
- Create models:
-
DatasetVersionInfo.cs -
DataVersionMetadata.cs -
DataStatistics.cs -
VersionComparisonResult.cs
-
- Create implementations:
-
DefaultDataVersionManager.cs -
DataHashCalculator.cs -
DataChangeDetector.cs
-
- Add exception:
DataVersioningException.cs - Add enum to
Enums/:DataVersioningStatus.cs - Create result class in
Models/Results/:DataVersioningResult.cs - Create config in
Models/Options/:DataVersioningOptions.cs - Unit tests in
/tests/UnitTests/DataVersioning/
- Create
/src/ExperimentTracking/directory - Create interfaces:
-
IExperimentTracker.cs -
IExperimentRun.cs -
IMetricLogger.cs -
IArtifactStorage.cs
-
- Create models:
-
ExperimentMetadata.cs -
RunMetrics.cs -
TrainingEvent.cs -
ExperimentConfiguration.cs
-
- Create implementations:
-
DefaultExperimentTracker.cs -
ExperimentRunResult.cs -
MetricAggregator.cs
-
- Add exception:
ExperimentTrackingException.cs - Add enum:
ExperimentStatus.cs - Create result class:
ExperimentTrackingResult.cs - Create config:
ExperimentTrackingOptions.cs - Integrate with
AiModelBuilder:- Add
ConfigureExperimentTracker()method
- Add
- Unit tests
- Create
/src/TrainingMonitoring/directory - Create interfaces:
-
ITrainingMonitor.cs -
IMetricsCollector.cs -
ITrainingLogger.cs -
IAlertSystem.cs
-
- Create models:
-
TrainingMetrics.cs -
MetricSnapshot.cs -
PerformanceAlert.cs -
TrainingStatistics.cs
-
- Create collectors (subdirectory):
-
IterationMetricsCollector.cs -
EpochMetricsCollector.cs
-
- Create loggers (subdirectory):
-
ConsoleTrainingLogger.cs -
FileTrainingLogger.cs
-
- Create alerts (subdirectory):
-
ConvergenceAlert.cs -
OverfittingAlert.cs
-
- Create implementations:
-
DefaultTrainingMonitor.cs -
MetricsAggregator.cs
-
- Add exception:
TrainingMonitoringException.cs - Add enums:
AlertType.cs,AlertSeverity.cs - Create result class:
TrainingMonitoringResult.cs - Integrate with
OptimizerBasefor hooks - Unit tests
- Create
/src/CheckpointManagement/directory - Create interfaces:
-
ICheckpointManager.cs -
ICheckpointStorage.cs -
ICheckpointRestoration.cs
-
- Create models:
-
CheckpointMetadata.cs -
CheckpointInfo.cs -
CheckpointValidation.cs
-
- Create strategies (subdirectory):
-
BestMetricCheckpointStrategy.cs -
LatestCheckpointStrategy.cs -
PeriodicCheckpointStrategy.cs
-
- Create implementations:
-
DefaultCheckpointManager.cs -
CheckpointSerializer.cs -
CheckpointRepository.cs
-
- Add exception:
CheckpointException.cs - Add enum:
CheckpointStrategy.cs - Create result class:
CheckpointResult.cs - Create config:
CheckpointManagementOptions.cs - Integrate with
TrainingMonitoring - Unit tests
- Create
/src/HyperparameterOptimization/directory - Create interfaces:
-
IHyperparameterOptimizer.cs -
IParameterSpace.cs -
ITrialScheduler.cs
-
- Create models:
-
HyperparameterSearchConfig.cs -
HyperparameterTrial.cs -
HyperparameterOptimizationResult.cs -
ParameterDistribution.cs
-
- Create strategies (subdirectory):
-
GridSearchStrategy.cs -
RandomSearchStrategy.cs -
BayesianOptimizationStrategy.cs -
PopulationBasedTrainingStrategy.cs
-
- Create implementations:
-
TrialScheduler.cs -
ConvergenceAnalyzer.cs
-
- Add exception:
HyperparameterOptimizationException.cs - Add enum:
SearchStrategy.cs - Reuse
AutoML/TrialResultwhere possible - Integrate with ExperimentTracking
- Unit tests
- Create
/src/ModelRegistry/directory - Create interfaces:
-
IModelRegistry.cs -
IModelRepository.cs -
IModelCatalog.cs -
IModelVersioning.cs
-
- Create models:
-
RegisteredModel.cs -
ModelVersion.cs -
ModelArtifact.cs -
RegistryQueryResult.cs
-
- Create backends (subdirectory):
-
FileSystemRegistry.cs -
DatabaseRegistry.cs[optional]
-
- Create search (subdirectory):
-
ModelSearchCriteria.cs -
ModelSearchEngine.cs -
ModelIndexer.cs
-
- Create implementations:
-
DefaultModelRegistry.cs -
ModelComparisonEngine.cs
-
- Add exception:
ModelRegistryException.cs - Add enum:
RegistryBackendType.cs - Create config:
ModelRegistrationConfig.cs - Integrate with ModelMetadata
- Unit tests
- Add corresponding exceptions to
/src/Exceptions/ - Add corresponding enums to
/src/Enums/ - Create result classes in
/src/Models/Results/ - Create options classes in
/src/Models/Options/ - Add interface definitions to
/src/Interfaces/ - Create comprehensive XML documentation
- Add beginner-friendly explanations
- Create unit tests in
/tests/UnitTests/{Component}/ - Update
/src/AiDotNet.csprojif needed
- Add
Configure{Component}()methods - Support builder chaining (return
this) - Add to global usings if public APIs
- Create JSON converters in
/src/Serialization/if needed - Test round-trip serialization
- Register converters in
JsonConverterRegistry.cs
- Unit tests for each interface implementation
- Integration tests for cross-component scenarios
- Example tests showing usage patterns
- Property-based tests for data validation
Decision: Use Models/Options/ for all configuration classes
Rationale: Follows existing pattern, centralized location, easy discovery
Impact: Keeps configuration in single location for all algorithms
Decision: Always use <T, TInput, TOutput> pattern
Rationale: Consistency across codebase, flexibility for numeric types
Impact: Ensures compatibility with entire AiDotNet ecosystem
Decision: Create component-specific exceptions inheriting from AiDotNetException
Rationale: Clear error differentiation, component isolation
Impact: Better error handling and debugging
Decision: Define all interfaces before implementations Rationale: Enables multiple implementations, testability, clear contracts Impact: Better code organization and extensibility
Decision: Use {Operation}Result<T> pattern for return values
Rationale: Rich information return, follows existing pattern
Impact: Better error reporting and operation tracking
- Caching Strategy: Leverage existing
IModelCache<T, TInput, TOutput> - Lazy Loading: Consider lazy loading for large models/experiments
- Batch Operations: Support batch operations where possible
- Memory Management: Be mindful of generic type memory usage
- Async Support: Consider async methods for I/O operations (future)
/tests/UnitTests/{Component}/
├── {Component}Tests.cs
├── {Strategy}Tests.cs
├── {Model}Tests.cs
└── Fixtures/
└── {Component}Fixtures.cs
/tests/IntegrationTests/
├── {Component}Integration.cs
└── End-to-End/
└── TrainingPipeline.cs
/testconsole/Examples/
├── {Component}Example.cs
└── {FeatureName}Demo.cs
For each component, provide:
- Architecture Documentation - How it fits in ecosystem
- Usage Examples - Code samples
- Configuration Guide - All options explained
- Integration Guide - How to integrate with other components
- API Reference - All public methods documented
- Troubleshooting - Common issues and solutions
A component is complete when:
- All interfaces defined and documented
- All implementations complete with documentation
- 80%+ unit test coverage
- Integration tests pass
- Example code works
- Configuration validates properly
- Serialization works (round-trip)
- No compiler warnings in strict mode
- Code review approved
- Documentation complete
- Example applications work
- Distributed Training Support - Add distributed variants
- Cloud Backend Support - Azure, AWS, GCP integrations
- Advanced Scheduling - Population-based training, etc.
- Real-time Dashboarding - WebSocket support for live metrics
- Model Deployment - Export/package trained models
- A/B Testing - Compare model versions in production
- Fairness Auditing - Integrate with existing fairness module