added loggers

This commit is contained in:
William Falcon
2020-01-16 17:19:07 -05:00
parent 21f6c8b6e0
commit 275ebdcc51
7 changed files with 129 additions and 40 deletions
+21 -18
View File
@@ -77,25 +77,8 @@ from os import environ
from .base import LightningLoggerBase, rank_zero_only
from .tensorboard import TensorBoardLogger
all = []
all = ['TensorBoardLogger']
try:
from .test_tube import TestTubeLogger
all.append('TestTubeLogger')
except ImportError:
pass
try:
from .mlflow import MLFlowLogger
all.append('MLFlowLogger')
except ImportError:
pass
try:
from .wandb import WandbLogger
all.append('WandbLogger')
except ImportError:
pass
try:
# needed to prevent ImportError and duplicated logs.
environ["COMET_DISABLE_AUTO_LOGGING"] = "1"
@@ -105,10 +88,30 @@ try:
except ImportError:
del environ["COMET_DISABLE_AUTO_LOGGING"]
try:
from .mlflow import MLFlowLogger
all.append('MLFlowLogger')
except ImportError:
pass
try:
from .neptune import NeptuneLogger
all.append('NeptuneLogger')
except ImportError:
pass
try:
from .test_tube import TestTubeLogger
all.append('TestTubeLogger')
except ImportError:
pass
try:
from .wandb import WandbLogger
all.append('WandbLogger')
except ImportError:
pass
__all__ = all
+62 -19
View File
@@ -1,12 +1,11 @@
"""
Log using `comet <https://www.comet.ml>`_
Comet logger can be used in either online or offline mode.
To log in online mode, CometLogger requries an API key:
.. code-block:: python
# -------------------
# ONLINE MODE
# -------------------
from pytorch_lightning.logging import CometLogger
# arguments made to CometLogger are passed on to the comet_ml.Experiment class
comet_logger = CometLogger(
api_key=os.environ["COMET_KEY"],
@@ -17,10 +16,9 @@ To log in online mode, CometLogger requries an API key:
)
trainer = Trainer(logger=comet_logger)
To log in offline mode, CometLogger requires a path to a local directory:
.. code-block:: python
# -------------------
# OFFLINE MODE
# -------------------
from pytorch_lightning.logging import CometLogger
# arguments made to CometLogger are passed on to the comet_ml.Experiment class
comet_logger = CometLogger(
@@ -71,18 +69,54 @@ logger = getLogger(__name__)
class CometLogger(LightningLoggerBase):
def __init__(self, api_key=None, save_dir=None, workspace=None,
rest_api_key=None, project_name=None, experiment_name=None, **kwargs):
"""Initialize a Comet.ml logger.
r"""
Log using `comet <https://www.comet.ml>`_.
Requires either an API Key (online mode) or a local directory path (offline mode)
:param str api_key: Required in online mode. API key, found on Comet.ml
:param str save_dir: Required in offline mode. The path for the directory to save local comet logs
:param str workspace: Optional. Name of workspace for this user
:param str project_name: Optional. Send your experiment to a specific project.
Otherwise will be sent to Uncategorized Experiments.
If project name does not already exists Comet.ml will create a new project.
:param str rest_api_key: Optional. Rest API key found in Comet.ml settings.
This is used to determine version number
:param str experiment_name: Optional. String representing the name for this particular experiment on Comet.ml
.. code-block:: python
# ONLINE MODE
from pytorch_lightning.logging import CometLogger
# arguments made to CometLogger are passed on to the comet_ml.Experiment class
comet_logger = CometLogger(
api_key=os.environ["COMET_KEY"],
workspace=os.environ["COMET_WORKSPACE"], # Optional
project_name="default_project", # Optional
rest_api_key=os.environ["COMET_REST_KEY"], # Optional
experiment_name="default" # Optional
)
trainer = Trainer(logger=comet_logger)
.. code-block:: python
# OFFLINE MODE
from pytorch_lightning.logging import CometLogger
# arguments made to CometLogger are passed on to the comet_ml.Experiment class
comet_logger = CometLogger(
save_dir=".",
workspace=os.environ["COMET_WORKSPACE"], # Optional
project_name="default_project", # Optional
rest_api_key=os.environ["COMET_REST_KEY"], # Optional
experiment_name="default" # Optional
)
trainer = Trainer(logger=comet_logger)
Args:
api_key (str): Required in online mode. API key, found on Comet.ml
save_dir (str): Required in offline mode. The path for the directory to save local comet logs
workspace (str): Optional. Name of workspace for this user
project_name (str): Optional. Send your experiment to a specific project.
Otherwise will be sent to Uncategorized Experiments.
If project name does not already exists Comet.ml will create a new project.
rest_api_key (str): Optional. Rest API key found in Comet.ml settings.
This is used to determine version number
experiment_name (str): Optional. String representing the name for this particular experiment on Comet.ml
"""
super().__init__()
self._experiment = None
@@ -124,6 +158,15 @@ class CometLogger(LightningLoggerBase):
@property
def experiment(self):
r"""
Actual comet object. To use comet features do the following.
Example::
self.logger.experiment.some_comet_function()
"""
if self._experiment is not None:
return self._experiment
+9
View File
@@ -47,6 +47,15 @@ class MLFlowLogger(LightningLoggerBase):
@property
def experiment(self):
r"""
Actual mlflow object. To use mlflow features do the following.
Example::
self.logger.experiment.some_mlflow_function()
"""
return self._mlflow_client
@property
+10
View File
@@ -111,6 +111,16 @@ class NeptuneLogger(LightningLoggerBase):
@property
def experiment(self):
r"""
Actual neptune object. To use neptune features do the following.
Example::
self.logger.experiment.some_neptune_function()
"""
if self._experiment is not None:
return self._experiment
else:
+8 -3
View File
@@ -45,10 +45,15 @@ class TensorBoardLogger(LightningLoggerBase):
@property
def experiment(self):
"""The underlying :class:`torch.utils.tensorboard.SummaryWriter`.
r"""
:rtype: torch.utils.tensorboard.SummaryWriter
"""
Actual tensorboard object. To use tensorboard features do the following.
Example::
self.logger.experiment.some_tensorboard_function()
"""
if self._experiment is not None:
return self._experiment
+10
View File
@@ -55,6 +55,16 @@ class TestTubeLogger(LightningLoggerBase):
@property
def experiment(self):
r"""
Actual test-tube object. To use test-tube features do the following.
Example::
self.logger.experiment.some_test_tube_function()
"""
if self._experiment is not None:
return self._experiment
+9
View File
@@ -68,6 +68,15 @@ class WandbLogger(LightningLoggerBase):
@property
def experiment(self):
r"""
Actual wandb object. To use wandb features do the following.
Example::
self.logger.experiment.some_wandb_function()
"""
if self._experiment is None:
if self._offline:
os.environ["WANDB_MODE"] = "dryrun"