Spaces:
Running
on
Zero
Running
on
Zero
import os | |
import numpy as np | |
import random | |
import torch | |
def set_seed(seed: int, rank: int = 0): | |
random.seed(seed + rank) | |
np.random.seed(seed + rank) | |
torch.manual_seed(seed + rank) | |
torch.cuda.manual_seed_all(seed + rank) | |
torch.backends.cudnn.deterministic = True | |
os.environ["PYTHONHASHSEED"] = str(seed + rank) | |
class LargeInt(int): | |
def __new__(cls, value): | |
if isinstance(value, str): | |
units = {"K": 1e3, "M": 1e6, "B": 1e9, "T": 1e12} | |
last_char = value[-1].upper() | |
if last_char in units: | |
num = float(value[:-1]) * units[last_char] | |
return super(LargeInt, cls).__new__(cls, int(num)) | |
else: | |
return super(LargeInt, cls).__new__(cls, int(value)) | |
else: | |
return super(LargeInt, cls).__new__(cls, value) | |
def __str__(self): | |
value = int(self) | |
if abs(value) < 1000: | |
return f"{value}" | |
for unit in ["", "K", "M", "B", "T"]: | |
if abs(value) < 1000: | |
return f"{value:.1f}{unit}" | |
value /= 1000 | |
return f"{value:.1f}P" # P stands for Peta, or 10^15 | |
def __repr__(self): | |
return f'"{self.__str__()}"' # Ensure repr also returns the string with quotes | |
def __json__(self): | |
return f'"{self.__str__()}"' | |
def __add__(self, other): | |
if isinstance(other, int): | |
return LargeInt(super().__add__(other)) | |
return NotImplemented | |
def __radd__(self, other): | |
return self.__add__(other) # This ensures commutativity |