Sentiment_Analysis / src /utils.py
Lavender825's picture
Deploy 10W0715 dual-interface sentiment app
422d4ca
Raw
History Blame Contribute Delete
1.32 kB
"""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