Spaces:
Running on Zero
Running on Zero
File size: 1,316 Bytes
422d4ca | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | """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
|