Skip to content
This repository has been archived by the owner on May 29, 2023. It is now read-only.

Commit

Permalink
fixed jsonlogger and version bump
Browse files Browse the repository at this point in the history
  • Loading branch information
lucadiliello committed May 4, 2022
1 parent 7b40638 commit 4e50f75
Show file tree
Hide file tree
Showing 7 changed files with 30 additions and 28 deletions.
4 changes: 2 additions & 2 deletions tests/datamodules/helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@
from pytorch_lightning.utilities.distributed import distributed_available
from transformers import BertTokenizer

from tests.helpers import DummyDataModule, DummyTransformerModelWithOptim, standard_args
from tests.helpers import DummyDataModule, DummyTransformerModel, standard_args


class DummyTransformersModelIDCheck(DummyTransformerModelWithOptim):
class DummyTransformersModelIDCheck(DummyTransformerModel):

def __init__(self, hyperparameters, train_len: int, valid_len: int, test_len: int):
super().__init__(hyperparameters)
Expand Down
4 changes: 0 additions & 4 deletions tests/helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,6 @@ def __init__(self, hyperparameters):
self.model = BertForSequenceClassification(config)

def training_step(self, batch, batch_idx):
""" Training step on BertForSequenceClassification. """
batch['labels'] = batch['labels'].to(dtype=torch.long)
kwargs = {k: batch[k] for k in ["input_ids", "attention_mask", "token_type_ids", "labels"]}
results = self(**kwargs)
Expand All @@ -122,9 +121,6 @@ def test_step(self, batch, batch_idx, dataset_idx):
results = self(**kwargs)
return {'loss': results.loss, 'ids': batch['ids']}


class DummyTransformerModelWithOptim(DummyTransformerModel):

def configure_optimizers(self):
self.computed_steps = self.num_training_steps()
return AdamW(self.model.parameters())
4 changes: 2 additions & 2 deletions tests/models/helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from pytorch_lightning import Trainer
from transformers import BertTokenizer

from tests.helpers import DummyDataModule, DummyTransformerModelWithOptim, standard_args
from tests.helpers import DummyDataModule, DummyTransformerModel, standard_args


def do_test_fix_max_steps(max_epochs, accumulate_grad_batches, batch_size, **kwargs):
Expand All @@ -26,7 +26,7 @@ def do_test_fix_max_steps(max_epochs, accumulate_grad_batches, batch_size, **kwa

tokenizer = BertTokenizer('tests/data/vocab.txt')
# not checking ids because sometimes the sampler will duplicate elements to fill all gpus
model = DummyTransformerModelWithOptim(hyperparameters)
model = DummyTransformerModel(hyperparameters)

# Datasets
datamodule = DummyDataModule(hyperparameters, length_train=40, length_test=40, length_valid=40, tokenizer=tokenizer)
Expand Down
4 changes: 2 additions & 2 deletions tests/test_callbacks.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
import pytorch_lightning as pl
from transformers import BertTokenizer

from tests.helpers import DummyDataModule, DummyTransformerModelWithOptim, standard_args
from tests.helpers import DummyDataModule, DummyTransformerModel, standard_args
from transformers_lightning.callbacks.transformers_model_checkpoint import TransformersModelCheckpointCallback


Expand Down Expand Up @@ -70,7 +70,7 @@ def test_model_checkpointing_callback(
)

# instantiate PL model
model = DummyTransformerModelWithOptim(hyperparameters)
model = DummyTransformerModel(hyperparameters)

# Datasets
datamodule = DummyDataModule(hyperparameters, length_train=96, length_valid=96, length_test=96, tokenizer=tokenizer)
Expand Down
26 changes: 22 additions & 4 deletions tests/test_loggers.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,32 @@
import pytorch_lightning as pl
from transformers import BertTokenizer

from tests.helpers import DummyDataModule, DummyTransformerModelWithOptim, standard_args
from tests.helpers import DummyDataModule, DummyTransformerModel, standard_args
from transformers_lightning.loggers.jsonboard_logger import JsonBoardLogger


def random_name():
return ''.join(random.choices(string.ascii_uppercase + string.digits, k=20))


class DummyTransformerModelWithLogging(DummyTransformerModel):

def training_step(self, batch, batch_idx):
res = super().training_step(batch, batch_idx)
self.log('training/loss', res['loss'], on_step=True)
return res

def validation_step(self, batch, batch_idx):
res = super().validation_step(batch, batch_idx)
self.log('validation/loss', res['loss'])
return res

def test_step(self, batch, batch_idx):
res = super().test_step(batch, batch_idx)
self.log('test/loss', res['loss'])
return res


def test_jsonboard_logger():

hyperparameters = Namespace(
Expand All @@ -30,6 +48,7 @@ def test_jsonboard_logger():
jsonboard_dir='jsonboard',
name=random_name(),
val_check_interval=0.25,
log_every_n_steps=1,
**standard_args,
)

Expand All @@ -39,13 +58,12 @@ def test_jsonboard_logger():
# instantiate PL trainer
trainer = pl.Trainer.from_argparse_args(
hyperparameters,
profiler='simple',
logger=[logger],
logger=logger,
enable_checkpointing=False
)

# instantiate PL model
model = DummyTransformerModelWithOptim(hyperparameters)
model = DummyTransformerModelWithLogging(hyperparameters)

# Datasets
datamodule = DummyDataModule(hyperparameters, length_train=96, length_valid=96, length_test=96, tokenizer=tokenizer)
Expand Down
2 changes: 1 addition & 1 deletion transformers_lightning/info.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
__version__ = '0.7.10'
__version__ = '0.7.11'
__author__ = 'Luca Di Liello and Matteo Gabburo'
__author_email__ = 'luca.diliello@unitn.it'
__license__ = 'GNU GENERAL PUBLIC LICENSE v2'
Expand Down
14 changes: 1 addition & 13 deletions transformers_lightning/loggers/jsonboard_logger.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,12 +44,9 @@ class JsonBoardLogger(LightningLoggerBase):
def __init__(self, hyperparameters: Namespace):
super().__init__()
self.hyperparameters = hyperparameters
self._name = hyperparameters.name
self._version = None
self._fs = get_filesystem(hyperparameters.jsonboard_dir)
self._experiment = None
self.hparams = {}
self.meta = {}

def reset(self):
r""" Reset experiment. """
Expand Down Expand Up @@ -119,12 +116,8 @@ def log_hyperparams(self, params: Union[Dict[str, Any], Namespace] = None) -> No
"""

assert rank_zero_only.rank == 0, "tried to init log dirs in non global_rank=0"

params = _convert_params(params)

# store params to output
self.hparams.update(params)

# format params into the suitable for tensorboard
params = _flatten_dict(params)
params = self._sanitize_params(params)
Expand All @@ -150,12 +143,8 @@ def log_metadata(self, metadata: Union[Dict[str, Any], Namespace] = None) -> Non
"""

assert rank_zero_only.rank == 0, "tried to init log dirs in non global_rank=0"

metadata = _convert_params(metadata)

# store params to output
self.meta.update(metadata)

# format params into the suitable for tensorboard
metadata = _flatten_dict(metadata)
metadata = self._sanitize_params(metadata)
Expand All @@ -176,7 +165,6 @@ def log_metadata(self, metadata: Union[Dict[str, Any], Namespace] = None) -> Non
def log_metrics(self, metrics: Dict[str, float], step: Optional[int] = None) -> None:
r""" Just write the metrics to disk. """
assert rank_zero_only.rank == 0, "experiment tried to log from global_rank != 0"
metrics = _add_prefix(metrics)
if metrics:
try:
self._sanitize_and_write_metrics(metrics, step + 1)
Expand All @@ -200,7 +188,7 @@ def name(self) -> str:
Returns:
The name of the experiment.
"""
return self._name
return self.hyperparameters.name

@property
def version(self) -> int:
Expand Down

0 comments on commit 4e50f75

Please sign in to comment.