Shortcuts

comet

Classes

CometLogger

Track your parameters, metrics, source code and more using Comet.

Comet Logger

class lightning.pytorch.loggers.comet.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: 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>")
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 number

  • experiment_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 (Any) – 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 nor save_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 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:

None

log_graph(model, input_array=None)[source]

Record model graph.

Parameters:
  • model (Module) – the model with an implementation of forward.

  • input_array (Optional[Tensor]) – input passes to model.forward

Return type:

None

log_hyperparams(params)[source]

Record hyperparameters.

Parameters:
  • 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:

None

log_metrics(metrics, step=None)[source]

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

Parameters:
Return type:

None

property experiment: Union[comet_ml.Experiment, comet_ml.ExistingExperiment, comet_ml.OfflineExperiment]

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

Example:

self.logger.experiment.some_comet_function()
property name: str

Gets the project name.

Returns:

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

property save_dir: Optional[str]

Gets the save directory.

Returns:

The path to the save directory.

property version: str

Gets the version.

Returns:

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.