def log_artifact(
        self,
        tag: str,
        runner: "IRunner",
        artifact: object = None,
        path_to_artifact: str = None,
        scope: str = None,
    ) -> None:
        """Logs arbitrary file (audio, video, csv, etc.) to Neptune."""
        if artifact is not None and path_to_artifact is not None:
            ValueError("artifact and path_to_artifact are mutually exclusive")
        if scope == "batch":
            neptune_path = "/".join(
                [
                    self.base_namespace,
                    "_artifacts",
                    f"epoch-{runner.epoch_step:04d}",
                    f"loader-{runner.loader_key}",
                    f"batch-{runner.batch_step:04d}",
                    tag,
                ]
            )
        elif scope == "loader":
            neptune_path = "/".join(
                [
                    self.base_namespace,
                    "_artifacts",
                    f"epoch-{runner.epoch_step:04d}",
                    f"loader-{runner.loader_key}",
                    tag,
                ]
            )
        elif scope == "epoch":
            neptune_path = "/".join(
                [
                    self.base_namespace,
                    "_artifacts",
                    f"epoch-{runner.epoch_step:04d}",
                    tag,
                ]
            )
        elif scope == "experiment" or scope is None:
            neptune_path = "/".join([self.base_namespace, "_artifacts", tag])
        self._log_artifact(artifact, path_to_artifact, neptune_path)
Logs arbitrary file (audio, video, csv, etc.) to Neptune.
catalyst/loggers/neptune.py