tensorlayer3/tensorlayer/logging/contrib/hyperdash.py

64 lines
1.6 KiB
Python

#! /usr/bin/python
# -*- coding: utf-8 -*-
from __future__ import absolute_import
import hyperdash as hd
import tensorlayer as tl
__all__ = ["HyperDashHandler", "monitor", "Experiment", "IPythonMagicsWrapper"]
class HyperDashHandler(object):
apikey = None
@classmethod
def reset_apikey(cls):
cls.apikey = None
@classmethod
def set_apikey(cls, apikey):
cls.apikey = apikey
@classmethod
def get_apikey(cls):
if cls.apikey is None:
raise ValueError(
"Hyperdash API is not set.\n"
"You can obtain your API Key using: `hyperdash login --email` or `hyperdash login --github`\n"
"You should first call `HyperDashHandler.set_apikey('my_api_key')` in order to use `hyperdash`"
)
tl.logging.debug("Hyperdash API Key: %s" % cls.apikey)
return cls.apikey
@classmethod
def monitor(cls, model_name, api_key=None, capture_io=True):
if api_key is not None:
cls.set_apikey(api_key)
return hd.monitor(model_name, api_key_getter=cls.get_apikey, capture_io=capture_io)
class Experiment(hd.Experiment):
def __init__(
self,
model_name,
api_key=None,
capture_io=True,
):
if api_key is not None:
HyperDashHandler.set_apikey(api_key)
super(Experiment,
self).__init__(model_name=model_name, api_key_getter=HyperDashHandler.get_apikey, capture_io=capture_io)
monitor = HyperDashHandler.monitor
IPythonMagicsWrapper = hd.IPythonMagicsWrapper