Source code for tuners.loggers.neptune

import neptune.new as neptune
import os
from .base import BaseTunerObserver

[docs]def get_proxies(): proxies = {} http_proxy = os.getenv("http_proxy") or os.getenv("HTTP_PROXY") if http_proxy: proxies["http"] = http_proxy https_proxy = os.getenv("https_proxy") or os.getenv("HTTPS_PROXY") if https_proxy: proxies["https"] = https_proxy return proxies
[docs]class NeptuneLogger(BaseTunerObserver): """ Reports DPGTuner statistics to Neptune """ def __init__(self, tuner, project, name=None, api_token=None, **kwargs): """Constructor of a NeptuneLogger object Parameters ---------- tuner: DPGTuner The tuner object whose statistics we want to report project: string The Neptune project to which we want to report the statistics api_token: string The Neptune API token """ super(NeptuneLogger, self).__init__(tuner) if not 'proxies' in kwargs: kwargs['proxies'] = get_proxies() self.run = neptune.init(project=project, name=name, api_token=api_token, **kwargs) def __setitem__(self, k, v): """ Report arbitrary parameter/value combinations """ self.run[k] = v def __exit__(self, *exc): self.run.stop()
[docs] def on_parameters_updated(self, params): self.run["parameters"] = params
[docs] def on_metric_updated(self, name, value): self.run[name].log(value)
[docs] def on_eval_samples_updated(self, context, samples, proposal_log_scores, model_log_scores, target_log_scores): self.run["samples"].log([s.text for s in samples[:10]])
[docs] def on_step_idx_updated(self, s): self.run["steps"].log(s)
[docs] def on_ministep_idx_updated(self, s): self.run["ministeps"].log(s)