task_protocols
orchard.core.task_protocols
¶
Task-Agnostic Strategy Protocols.
Defines the structural contracts that task-specific components must satisfy. Each protocol represents one dimension of task-specific behavior:
- Criterion: Loss function construction
- Validation metrics: Per-epoch metric computation
- Eval pipeline: Full evaluation orchestration (inference, visualization, reporting) as a single cohesive unit
Concrete implementations live under orchard.tasks.<task_type>/
and are registered in the :mod:orchard.core.task_registry.
TaskCriterionFactory
¶
Bases: Protocol
Protocol for task-specific loss function construction.
get_criterion(training, class_weights=None)
¶
Build a loss function from training config.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
training
|
TrainingConfig
|
Training sub-config with criterion parameters. |
required |
class_weights
|
Tensor | None
|
Optional per-class weights for imbalanced datasets. |
None
|
Returns:
| Type | Description |
|---|---|
Module
|
Configured loss module. |
Source code in orchard/core/task_protocols.py
TaskValidationMetrics
¶
Bases: Protocol
Protocol for per-epoch validation metric computation.
compute_validation_metrics(model, val_loader, criterion, device)
¶
Compute task-specific validation metrics.
Must return an immutable mapping with at least a "loss" key.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
model
|
Module
|
Neural network model to evaluate. |
required |
val_loader
|
DataLoader[Any]
|
Validation data provider. |
required |
criterion
|
Module
|
Loss function. |
required |
device
|
device
|
Hardware target (CUDA/MPS/CPU). |
required |
Returns:
| Type | Description |
|---|---|
Mapping[str, float]
|
Immutable mapping of metric name to value. |
Source code in orchard/core/task_protocols.py
TaskEvalPipeline
¶
Bases: Protocol
Protocol for end-to-end evaluation (inference + visualization + reporting).
run_evaluation(model, test_loader, train_losses, val_metrics_history, class_names, paths, training, dataset, augmentation, evaluation, arch_name, aug_info='N/A', tracker=None)
¶
Execute the complete evaluation pipeline.
Coordinates inference, visualization, and structured reporting as a single task-specific unit.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
model
|
Module
|
Trained model (already on target device). |
required |
test_loader
|
DataLoader[Any]
|
DataLoader for test set. |
required |
train_losses
|
list[float]
|
Training loss history per epoch. |
required |
val_metrics_history
|
list[Mapping[str, float]]
|
Validation metrics history per epoch. |
required |
class_names
|
list[str]
|
List of class label strings. |
required |
paths
|
RunPaths
|
RunPaths for artifact output. |
required |
training
|
TrainingConfig
|
Training sub-config. |
required |
dataset
|
DatasetConfig
|
Dataset sub-config. |
required |
augmentation
|
AugmentationConfig
|
Augmentation sub-config. |
required |
evaluation
|
EvaluationConfig
|
Evaluation sub-config. |
required |
arch_name
|
str
|
Architecture identifier. |
required |
aug_info
|
str
|
Augmentation description string. |
'N/A'
|
tracker
|
TrackerProtocol | None
|
Optional experiment tracker for final metrics. |
None
|
Returns:
| Type | Description |
|---|---|
tuple[float, float, float]
|
3-tuple of (macro_f1, test_acc, test_auc). |