[tune] logger refactor part 3: Add ExperimentLogger class (#11749)

This commit is contained in:
Kai Fricke
2020-11-05 08:55:38 -08:00
committed by GitHub
parent f6717b8b03
commit 603accf1c2
17 changed files with 389 additions and 95 deletions
+25
View File
@@ -6,6 +6,7 @@ import os
import inspect
import threading
import time
import uuid
from collections import defaultdict, deque, Mapping, Sequence
from datetime import datetime
from threading import Thread
@@ -540,6 +541,30 @@ def detect_config_single(func):
return use_config_single
def create_logdir(dirname: str, local_dir: str):
"""Create an empty logdir with name `dirname` in `local_dir`.
If `local_dir`/`dirname` already exists, a unique string is appended
to the dirname.
Args:
dirname (str): Dirname to create in `local_dir`
local_dir (str): Root directory for the log dir
Returns: full path to the newly created logdir.
"""
local_dir = os.path.expanduser(local_dir)
logdir = os.path.join(local_dir, dirname)
if os.path.exists(logdir):
old_dirname = dirname
dirname += "_" + uuid.uuid4().hex[:4]
logger.info(f"Creating a new dirname {dirname} because "
f"trial dirname '{old_dirname}' already exists.")
logdir = os.path.join(local_dir, dirname)
os.makedirs(logdir, exist_ok=True)
return logdir
class SafeFallbackEncoder(json.JSONEncoder):
def __init__(self, nan_str="null", **kwargs):
super(SafeFallbackEncoder, self).__init__(**kwargs)