Training API¶
DINOTrainer ¶
DINOTrainer(grad_clip_norm: Optional[float] = 3.0, device: device | str = 'cpu', callbacks: Optional[List[Callback]] = None)
Stateless trainer compatible with any BaseSSLModel.
Per-batch order: compute_loss → backward → clip_grad → post_backward → optimizer.step → post_step Per-epoch order: on_epoch_start → batches → on_epoch_end
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
grad_clip_norm
|
Optional[float]
|
Clip student gradient norm. ~3.0 stabilises early DINO. |
3.0
|
device
|
device | str
|
Default device used in train() when none is given per call. |
'cpu'
|
callbacks
|
Optional[List[Callback]]
|
List of Callback instances invoked at epoch/batch boundaries. |
None
|
Source code in src/graphssl/training/trainer.py
27 28 29 30 31 32 33 34 35 | |
train_epoch ¶
train_epoch(model: BaseSSLModel, loader: DataLoader, optimizer: Optimizer, device: device | str | None = None, epoch: int = 0) -> float
Run one training epoch and return the average loss.
Source code in src/graphssl/training/trainer.py
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | |
train ¶
train(model: BaseSSLModel, loader: DataLoader, optimizer: Optimizer, num_epochs: int, device: device | str | None = None) -> List[float]
Train for num_epochs epochs, fire callbacks, return per-epoch losses.
Source code in src/graphssl/training/trainer.py
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 | |
DataModule ¶
DataModule(data: Optional[Data] = None, labels: Optional[Tensor] = None, train_idx: Optional[Tensor] = None, val_idx: Optional[Tensor] = None, test_idx: Optional[Tensor] = None, is_graph_level: bool = False, batch_size: int = 32, dataset_obj: Optional[Dataset] = None, num_workers: int = 0)
Wraps a dataset and exposes train/eval DataLoaders.
Node-level task (is_graph_level=False):
- data: single PyG Data object with train_mask / val_mask / test_mask
encoded as index tensors (train_idx, val_idx, test_idx).
- train_dataloader() returns a single-element iterable yielding the
raw full-graph Data object (not routed through PyG's Batch
collation, so no spurious .batch_size is attached).
- neighbor_loader() returns a NeighborLoader for mini-batch training.
Graph-level task (is_graph_level=True):
- dataset_obj: a PyG Dataset or list of Data objects.
- train_dataloader() / eval_dataloader() iterate over the dataset.
Attributes exposed for evaluation utilities
data, labels, train_idx, val_idx, test_idx, is_graph_level, batch_size, dataset_obj.
Source code in src/graphssl/data/datamodule.py
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | |
neighbor_loader ¶
neighbor_loader(num_neighbors: List[int], input_nodes: Optional[Tensor] = None, **kwargs) -> NeighborLoader
Mini-batch NeighborLoader for node-level training.
Source code in src/graphssl/data/datamodule.py
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 | |