Spaces:
Running on Zero
Running on Zero
| import random | |
| from typing import Any | |
| import numpy as np | |
| import torch | |
| def get_dtype(x): | |
| if x.lower() in ("bf16", "torch.bfloat16", "bfloat16"): | |
| return torch.bfloat16 | |
| if x.lower() in ("fp16", "torch.float16", "float16"): | |
| return torch.float16 | |
| if x.lower() in ("fp32", "torch.float32", "float32"): | |
| return torch.float32 | |
| raise ValueError("Unsupported dtype value.") | |
| def seed_everything(seed: int = 42): | |
| random.seed(seed) | |
| np.random.seed(seed) | |
| torch.manual_seed(seed) | |
| torch.cuda.manual_seed(seed) | |
| torch.cuda.manual_seed_all(seed) | |
| torch.backends.cudnn.deterministic = True | |
| torch.backends.cudnn.benchmark = False | |
| def mask_data(x, mask, masking_value=0.0): | |
| while mask.dim() < x.dim(): | |
| mask = mask.unsqueeze(-1) | |
| if isinstance(masking_value, torch.Tensor): | |
| return torch.where(mask, masking_value.expand_as(x), x) | |
| return torch.where( | |
| mask, torch.full(x.shape, masking_value, dtype=x.dtype, device=x.device), x | |
| ) | |
| def get_mask_from_lengths(lengths, max_len=None): | |
| if max_len is None: | |
| max_len = torch.max(lengths).item() | |
| ids = torch.arange(0, max_len, out=torch.LongTensor(max_len).to(lengths.device)) | |
| return (ids < lengths.unsqueeze(1)).bool() | |
| def scalar_as_float(value: Any) -> float: | |
| if isinstance(value, torch.Tensor): | |
| return float(value.detach().float().item()) | |
| return float(value) | |