Spaces:
Running on Zero
Running on Zero
| """Utility helpers.""" | |
| import logging | |
| import os | |
| import random | |
| import sys | |
| import numpy as np | |
| import torch | |
| def setup_logging(level=logging.INFO): | |
| logging.basicConfig( | |
| level=level, | |
| format="%(asctime)s | %(levelname)s | %(name)s | %(message)s", | |
| handlers=[logging.StreamHandler(sys.stdout)], | |
| force=True, | |
| ) | |
| # Quiet HuggingFace | |
| logging.getLogger("transformers").setLevel(logging.WARNING) | |
| logging.getLogger("datasets").setLevel(logging.WARNING) | |
| logging.getLogger("urllib3").setLevel(logging.WARNING) | |
| logging.getLogger("filelock").setLevel(logging.WARNING) | |
| def set_seed(seed: int, deterministic: bool = True) -> None: | |
| """Seed Python, NumPy, and PyTorch for more reproducible experiments.""" | |
| os.environ["PYTHONHASHSEED"] = str(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) | |
| if deterministic: | |
| torch.backends.cudnn.deterministic = True | |
| torch.backends.cudnn.benchmark = False | |
| def seeded_generator(seed: int) -> torch.Generator: | |
| """Return a CPU generator for deterministic DataLoader shuffling.""" | |
| generator = torch.Generator() | |
| generator.manual_seed(seed) | |
| return generator | |