Skip to content

Commit 90a1737

Browse files
authored
Add upload_run_files functionality (#10)
1 parent 79f9fb1 commit 90a1737

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

src/nn_core/callbacks.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,16 @@ def _is_nnlogger(trainer: Trainer) -> bool:
1616

1717
def on_train_start(self, trainer: pl.Trainer, pl_module: pl.LightningModule) -> None:
1818
if self._is_nnlogger(trainer):
19+
trainer.logger: NNLogger
1920
trainer.logger.upload_source()
2021
trainer.logger.log_configuration(model=pl_module)
2122
trainer.logger.watch_model(pl_module=pl_module)
2223

24+
def on_train_end(self, trainer: pl.Trainer, pl_module: pl.LightningModule) -> None:
25+
if self._is_nnlogger(trainer):
26+
trainer.logger: NNLogger
27+
trainer.logger.upload_run_files()
28+
2329
def on_save_checkpoint(
2430
self, trainer: pl.Trainer, pl_module: pl.LightningModule, checkpoint: Dict[str, Any]
2531
) -> None:

src/nn_core/model_logging.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import argparse
22
import logging
33
import os
4+
import shutil
45
from pathlib import Path
56
from typing import Any, Dict, Optional, Union
67

@@ -55,7 +56,7 @@ def watch_model(self, pl_module: LightningModule):
5556

5657
def upload_source(self) -> None:
5758
if self.logging_cfg.upload.source and self.wandb:
58-
pylogger.info("Uploading source code to wandb")
59+
pylogger.info("Uploading source code to W&B")
5960
self.wrapped.experiment.log_code(
6061
root=PROJECT_ROOT,
6162
name=None,
@@ -201,3 +202,12 @@ def log_configuration(
201202
# send hparams to all loggers
202203
pylogger.debug("Logging 'cfg'")
203204
self.wrapped.log_hyperparams(cfg)
205+
206+
def upload_run_files(self):
207+
if self.logging_cfg.upload.run_files:
208+
if self.wandb:
209+
pylogger.info("Uploading run files to W&B")
210+
shutil.copytree(self.run_dir, f"{self.wrapped.experiment.dir}/run_files")
211+
212+
# FIXME: symlink not working for some reason
213+
# os.symlink(self.run_dir, f"{self.wrapped.experiment.dir}/run_files", target_is_directory=True)

0 commit comments

Comments
 (0)