jyliuAI's picture
Add files using upload-large-folder tool
93cd35a verified
Raw History Blame Contribute Delete
2.87 kB
import torch
import numpy as np
import random
import os
import logging
from omegaconf import OmegaConf
import sys
import fsspec
import pdb
def makedirs(dirname):
os.makedirs(dirname, exist_ok=True)
def get_logger(logpath, package_files=[], displaying=True, saving=True, debug=False):
logger = logging.getLogger()
if debug:
level = logging.DEBUG
else:
level = logging.INFO
if (logger.hasHandlers()):
logger.handlers.clear()
logger.setLevel(level)
formatter = logging.Formatter('%(asctime)s - %(message)s')
if saving:
info_file_handler = logging.FileHandler(logpath, mode="a")
info_file_handler.setLevel(level)
info_file_handler.setFormatter(formatter)
logger.addHandler(info_file_handler)
if displaying:
console_handler = logging.StreamHandler()
console_handler.setLevel(level)
console_handler.setFormatter(formatter)
logger.addHandler(console_handler)
for f in package_files:
logger.info(f)
with open(f, "r") as package_f:
logger.info(package_f.read())
return logger
def restore_checkpoint(ckpt_dir, state, device):
if not os.path.exists(ckpt_dir):
makedirs(os.path.dirname(ckpt_dir))
logging.warning(f"No checkpoint found at {ckpt_dir}. Returned the same state as input")
return state
else:
loaded_state = torch.load(ckpt_dir, map_location=device)
try:
state['optimizer'].load_state_dict(loaded_state['optimizer'])
except:
pass
state['model'].module.load_state_dict(loaded_state['model'], strict=False)
state['ema'].load_state_dict(loaded_state['ema'])
state['step'] = loaded_state['step']
state['config'] = loaded_state['config']
return state
def save_checkpoint(ckpt_dir, state):
saved_state = {
'optimizer': state['optimizer'].state_dict(),
'model': state['model'].module.state_dict(),
'ema': state['ema'].state_dict(),
'step': state['step'],
'config': state['config']
}
torch.save(saved_state, ckpt_dir)
def set_seed(seed):
# Random Seed
random.seed(seed)
np.random.seed(seed)
torch.manual_seed(seed)
if torch.cuda.is_available():
torch.cuda.manual_seed(seed)
torch.cuda.manual_seed_all(seed)
def fsspec_exists(filename):
"""Check if a file exists using fsspec."""
fs, _ = fsspec.core.url_to_fs(filename)
return fs.exists(filename)
def fsspec_listdir(dirname):
"""Listdir in manner compatible with fsspec."""
fs, _ = fsspec.core.url_to_fs(dirname)
return fs.ls(dirname)
def fsspec_mkdirs(dirname, exist_ok=True):
"""Mkdirs in manner compatible with fsspec."""
fs, _ = fsspec.core.url_to_fs(dirname)
fs.makedirs(dirname, exist_ok=exist_ok)