Chainsaw / model /utils /common.py
wuxing0105's picture
Upload folder using huggingface_hub
80a72c3 verified
Raw
History Blame Contribute Delete
1.26 kB
import copy
import json
import subprocess
import torch
import logging
LOG = logging.getLogger(__name__)
def load_json(jsonfile):
with open(jsonfile, "r") as jf:
res = json.load(jf)
return res
def save_config(config, filepath):
with open(filepath, "w") as outfile:
json.dump(config, outfile, indent=4)
def apply_diff(base_cfg, diff):
cfg = copy.deepcopy(base_cfg)
for k, v in diff.items():
if isinstance(v, dict):
cfg[k] = apply_diff(base_cfg[k], v)
else:
cfg[k] = v
return cfg
def execute_bash_command(bash_command_string):
bash_return = subprocess.run(bash_command_string.split(), timeout=20)
return bash_return
def get_torch_device(force_cpu=False, use_mps_if_available=False):
try:
if torch.cuda.is_available() and not force_cpu:
device_string = "cuda"
elif use_mps_if_available and torch.backends.mps.is_available() and not force_cpu:
device_string = "mps"
else:
device_string = "cpu"
except Exception as exc:
LOG.error(f'Exception: {exc}')
device_string = "cpu"
LOG.info(f'Using device: {device_string}')
device = torch.device(device_string)
return device