class pytorch_lightning.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: pytorch_lightning.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).


import os
from pytorch_lightning import Trainer
from pytorch_lightning.loggers import CometLogger

# arguments made to CometLogger are passed on to the comet_ml.Experiment class
comet_logger = CometLogger(
    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)


from pytorch_lightning.loggers import CometLogger

# arguments made to CometLogger are passed on to the comet_ml.Experiment class
comet_logger = CometLogger(
    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):

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 ="<path to image>")
logger.experiment.log_image(img, file_name="my_image.png")

Log Text data:

text = "Lightning is awesome!"

Log Audio data:

audio = "<path to audio data>"
logger.experiment.log_audio(audio, file_name="my_audio.wav")

Log arbitary 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>")
  • api_key (Optional[str]) – Required in online mode. API key, found on 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, will create a new project.

  • rest_api_key (Optional[str]) – Optional. Rest API key found in settings. This is used to determine version number

  • experiment_name (Optional[str]) – Optional. String representing the name for this particular experiment on

  • 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 (Any) – Additional arguments like workspace, log_code, etc. used by CometExperiment can be passed as keyword arguments in this logger.

  • ModuleNotFoundError – If required Comet package is not installed on the device.

  • MisconfigurationException – If neither api_key nor save_dir are passed as arguments.


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 finalized CometLogger.finalize() is called.

This happens automatically in the experiment() property, when self._experiment is set to None, i.e. self.reset_experiment().

Return type:


log_graph(model, input_array=None)[source]

Record model graph.

Return type:



Record hyperparameters.

  • params (Union[Dict[str, Any], Namespace]) – Namespace or Dict containing the hyperparameters

  • args – Optional positional arguments, depends on the specific logger being used

  • kwargs – Optional keyword arguments, depends on the specific logger being used

Return type:


log_metrics(metrics, step=None)[source]

Records metrics. This method logs metrics as soon as it received them.

Return type:


property experiment: None

Actual Comet object. To use Comet features in your LightningModule do the following.


property name: str

Gets the project name.


The project name if it is specified, else “comet-default”.

property save_dir: Optional[str]

Gets the save directory.


The path to the save directory.

property version: str

Gets the version.


The first one of the following that is set in the following order

  1. experiment id.

  2. experiment key.

  3. ”COMET_EXPERIMENT_KEY” environment variable.

  4. future experiment key.

If none are present generates a new guid.

© Copyright Copyright (c) 2018-2023, Lightning AI et al...

Built with Sphinx using a theme provided by Read the Docs.