CometLogger¶
- class lightning.pytorch.loggers.CometLogger(api_key=None, save_dir=None, project_name=None, rest_api_key=None, experiment_name=None, experiment_key=None, offline=False, prefix='', **kwargs)[source]¶
Bases:
lightning.pytorch.loggers.logger.Logger
Track your parameters, metrics, source code and more using Comet.
Install it with pip:
pip install comet-ml
Comet requires either an API Key (online mode) or a local directory path (offline mode).
ONLINE MODE
import os from lightning.pytorch import Trainer from lightning.pytorch.loggers import CometLogger # arguments made to CometLogger are passed on to the comet_ml.Experiment class comet_logger = CometLogger( api_key=os.environ.get("COMET_API_KEY"), workspace=os.environ.get("COMET_WORKSPACE"), # Optional save_dir=".", # Optional project_name="default_project", # Optional rest_api_key=os.environ.get("COMET_REST_API_KEY"), # Optional experiment_key=os.environ.get("COMET_EXPERIMENT_KEY"), # Optional experiment_name="lightning_logs", # Optional ) trainer = Trainer(logger=comet_logger)
OFFLINE MODE
from lightning.pytorch.loggers import CometLogger # arguments made to CometLogger are passed on to the comet_ml.Experiment class comet_logger = CometLogger( save_dir=".", workspace=os.environ.get("COMET_WORKSPACE"), # Optional project_name="default_project", # Optional rest_api_key=os.environ.get("COMET_REST_API_KEY"), # Optional experiment_name="lightning_logs", # Optional ) trainer = Trainer(logger=comet_logger)
Log Hyperparameters:
Log parameters used to initialize a
LightningModule
:class LitModule(LightningModule): def __init__(self, *args, **kwarg): self.save_hyperparameters()
Log other Experiment Parameters
# log a single parameter logger.log_hyperparams({"batch_size": 16}) # log multiple parameters logger.log_hyperparams({"batch_size": 16, "learning_rate": 0.001})
Log Metrics:
# log a single metric logger.log_metrics({"train/loss": 0.001}) # add multiple metrics logger.log_metrics({"train/loss": 0.001, "val/loss": 0.002})
Access the Comet Experiment object:
You can gain access to the underlying Comet Experiment object and its methods through the
logger.experiment
property. This will let you use the additional logging features provided by the Comet SDK.Some examples of data you can log through the Experiment object:
Log Image data:
img = PIL.Image.open("<path to image>") logger.experiment.log_image(img, file_name="my_image.png")
Log Text data:
text = "Lightning is awesome!" logger.experiment.log_text(text)
Log Audio data:
audio = "<path to audio data>" logger.experiment.log_audio(audio, file_name="my_audio.wav")
Log arbitrary data assets:
You can log any type of data to Comet as an asset. These can be model checkpoints, datasets, debug logs, etc.
logger.experiment.log_asset("<path to your asset>", file_name="my_data.pkl")
Log Models to Comet’s Model Registry:
logger.experiment.log_model(name="my-model", "<path to your model>")
See also
- Parameters
api_key¶ (
Optional
[str
]) – Required in online mode. API key, found on Comet.ml. If not given, this will be loaded from the environment variable COMET_API_KEY or ~/.comet.config if either exists.save_dir¶ (
Optional
[str
]) – Required in offline mode. The path for the directory to save local comet logs. If given, this also sets the directory for saving checkpoints.project_name¶ (
Optional
[str
]) – Optional. Send your experiment to a specific project. Otherwise will be sent to Uncategorized Experiments. If the project name does not already exist, Comet.ml will create a new project.rest_api_key¶ (
Optional
[str
]) – Optional. Rest API key found in Comet.ml settings. This is used to determine version numberexperiment_name¶ (
Optional
[str
]) – Optional. String representing the name for this particular experiment on Comet.ml.experiment_key¶ (
Optional
[str
]) – Optional. If set, restores from existing experiment.offline¶ (
bool
) – If api_key and save_dir are both given, this determines whether the experiment will be in online or offline mode. This is useful if you use save_dir to control the checkpoints directory and have a ~/.comet.config file but still want to run offline experiments.prefix¶ (
str
) – A string to put at the beginning of metric keys.**kwargs¶ – Additional arguments like workspace, log_code, etc. used by
CometExperiment
can be passed as keyword arguments in this logger.
- Raises
ModuleNotFoundError – If required Comet package is not installed on the device.
MisconfigurationException – If neither
api_key
norsave_dir
are passed as arguments.
- finalize(status)[source]¶
When calling
self.experiment.end()
, that experiment won’t log any more data to Comet. That’s why, if you need to log any more data, you need to create an ExistingCometExperiment. For example, to log data when testing your model after training, because when training is finalizedCometLogger.finalize()
is called.This happens automatically in the
experiment()
property, whenself._experiment
is set toNone
, i.e.self.reset_experiment()
.- Return type
- log_metrics(metrics, step=None)[source]¶
Records metrics. This method logs metrics as soon as it received them.
- property experiment: None¶
Actual Comet object. To use Comet features in your
LightningModule
do the following.Example:
self.logger.experiment.some_comet_function()
- Return type
- property name: str¶
Gets the project name.
- Return type
- Returns
The project name if it is specified, else “comet-default”.