pytorch深度学习训练随机种子设置

为了确保训练的模型能够复现,这里记录一下随机种子的设置,以便直接使用。

随机种子就像你玩游戏时的 "存档点",只要你加载同一个存档(设置同一个种子),后续的游戏进程(生成的随机数)就会完全一样;换个存档(换种子),进程就会不同。

与pytorch训练深度模型相关的随机种子主要在numpy,torch,random库上。下面直接上代码:

python 复制代码
import random
import numpy as np
import os
import torch

def set_pytorch_seeds(seed=42, strict_reproducibility=False):
    """
    设置PyTorch深度学习训练所需的所有随机种子,保证实验可复现
    
    Args:
        seed: 随机种子值,推荐使用固定整数(如42、123)
    """
    # Python基础随机种子
    random.seed(seed)
    # NumPy随机种子
    np.random.seed(seed)
    # 禁用Python哈希随机化
    os.environ['PYTHONHASHSEED'] = str(seed)
    
    # PyTorch核心种子
    torch.manual_seed(seed)
    # GPU相关种子(单/多GPU)
    if torch.cuda.is_available():
        torch.cuda.manual_seed(seed)
        torch.cuda.manual_seed_all(seed)
        # 强制cudnn使用确定性算法
        torch.backends.cudnn.deterministic = True
        torch.backends.cudnn.benchmark = False
			 # 仅在严格复现时启用以下配置
        if strict_reproducibility:
            # 禁用TF32(Ampere GPU生效)
            torch.backends.cuda.matmul.allow_tf32 = False
            torch.backends.cudnn.allow_tf32 = False
            # 配置CUBLAS + 确定性算法
            os.environ['CUBLAS_WORKSPACE_CONFIG'] = ':4096:8'
            torch.use_deterministic_algorithms(True)

# DataLoader种子配置(PyTorch多进程必备)
def get_pytorch_dataloader_config(seed: int = 42):
    """获取PyTorch DataLoader的种子配置,解决多进程随机性问题"""
    def seed_worker(worker_id):
        worker_seed = torch.initial_seed() % 2**32
        np.random.seed(worker_seed)
        random.seed(worker_seed)
    
    generator = torch.Generator()
    generator.manual_seed(seed)
    return seed_worker, generator
  • 核心函数set_pytorch_seeds仅保留 PyTorch 框架所需的所有关键种子配置,覆盖 CPU/GPU 场景,保证可复现性。
  • 辅助函数get_pytorch_dataloader_config专门解决 PyTorch DataLoader 多进程的随机性问题,是完整复现的必要补充。
相关推荐
HIT_Weston4 分钟前
151、【Agent】【OpenCode】启动分析(CLI 命令注册)
人工智能·agent·opencode
笑小枫9 分钟前
用 Claude Code 推翻重写笑小枫网站
java·人工智能·spring boot·ai编程
audyxiao00117 分钟前
人工智能顶会AAAI 2026论文分享|SlideBot:用于生成信息丰富、可靠、多模态幻灯片的多智能体框架
人工智能·大模型·aaai·智能体·幻灯片
用户9385156350721 分钟前
Workflow 与 Agent 之争:确定性执行与智能探索的深度剖析
人工智能
阿里云大数据AI技术28 分钟前
阿里云 EMR Serverless StarRocks(Stella 2.2.0) 发布:内表与湖表同时支持向量、全文与 AI Function,一条 SQL 完成多模态检索
人工智能
AI人工智能+28 分钟前
智能文档抽取系统采用“解析底座+大模型“双引擎架构,突破传统OCR局限
深度学习·ocr·文档抽取
格林威28 分钟前
工业相机Chunk功能全解析:图像嵌入时间戳、编码器元数据(附堡盟C#代码)
开发语言·人工智能·数码相机·计算机视觉·c#·视觉检测·工业相机
怪奇云呼军33 分钟前
闪电智能Voice Agent:ASR 首字延迟和最终识别延迟怎么测?t0-t3 埋点实战
人工智能·科技·ai·语音识别
冬哥聊AI40 分钟前
百万行代码里跑Claude Code?三面这题80%的人答不上来
人工智能
甄同学41 分钟前
第二十三篇:Tasks系统,Claude Code如何统一管理7种后台任务
人工智能