首页 > 其他分享 >关于MMEngine随机性的一些整理

关于MMEngine随机性的一些整理

时间:2023-09-27 19:59:31浏览次数:41  
标签:随机性 torch False random rank deterministic seed 整理 MMEngine

1、随机性来自哪里?

(1)torch算法的随机数种子实现

def set_random_seed(seed: Optional[int] = None,
                    deterministic: bool = False,
                    diff_rank_seed: bool = False) -> int:
    """Set random seed.

    Args:
        seed (int, optional): Seed to be used.
        deterministic (bool): Whether to set the deterministic option for
            CUDNN backend, i.e., set `torch.backends.cudnn.deterministic`
            to True and `torch.backends.cudnn.benchmark` to False.
            Defaults to False.
        diff_rank_seed (bool): Whether to add rank number to the random seed to
            have different random seed in different threads. Defaults to False.
    """
    if seed is None:
        seed = sync_random_seed()

    if diff_rank_seed:
        rank = get_rank()
        seed += rank

    random.seed(seed)
    np.random.seed(seed)
    torch.manual_seed(seed)
    # torch.cuda.manual_seed(seed)
    torch.cuda.manual_seed_all(seed)
    # os.environ['PYTHONHASHSEED'] = str(seed)
    if deterministic:
        if torch.backends.cudnn.benchmark:
            print_log(
                'torch.backends.cudnn.benchmark is going to be set as '
                '`False` to cause cuDNN to deterministically select an '
                'algorithm',
                logger='current',
                level=logging.WARNING)
        torch.backends.cudnn.deterministic = True
        torch.backends.cudnn.benchmark = False

        if digit_version(TORCH_VERSION) >= digit_version('1.10.0'):
            torch.use_deterministic_algorithms(True)
    return seed

(2)cuda toolkit的随机数种子实现(即上述代码中的determinstic)

(3)显卡型号不同也可能导致算法回传结果不同((2 封私信 / 45 条消息) 不同机器的随机性 - 搜索结果 - 知乎 (zhihu.com)

 

(4)产生随机数的代码顺序(关于pytorch无法获得相同结果的另类原因 - 知乎 (zhihu.com)

(5)涉及到浮点数运算的原子操作。

 

综上,在进行实验时,尽可能地在一台机器上进行实验。

附多卡实验随机性:关于 seed 的一切之如何产生确定性随机 - 知乎 (zhihu.com)

 

标签:随机性,torch,False,random,rank,deterministic,seed,整理,MMEngine
From: https://www.cnblogs.com/lzqdeboke/p/17734144.html

相关文章

  • ROS回顾与整理《五、launch文件的启动、管理》
    launch文件中语法类似于XML文件,里面就是一堆脚本。注:下面的参数name:是指运行时节点名称,可以取代代码中ros::init中设置的节点名。output:是否将节点信息打印到终端。respawn:如果节点挂了,控制该节点是否重启。required:是否要求某个节点一定要启动。ns:namespace,表示......
  • K8s学习整理(初级)
    1、服务器基础管理修改主机名称:hostnamectlset-hostnamedock02_120&&bash2、修改服务器内核参数sysctl用于动态修改内核运行参数sysctl-a显示所有内核运行参数sysctl-p从指定的文件加载系统参数,而不是从默认配置文件/etc/sysctl.conf中加载3、查看CPU数......
  • Adobe全家桶2015-2024全套Win+Mac最新爱国版软件吐血整理(含AI绘画版本)
    爆肝整理,最全的设计类软件大全切记!!!先转存,随时都有可能被和谐。Windows系统版本截图:Mac系统版本截图:网盘下载:切记!!!先转存,随时都有可能被和谐。链接:https://pan.quark.cn/s/3a964f54ea82提取码:ZHYMAdobe全家桶软件目录、最新版本号(部分未及时更新,请进网盘查看):Adobe20......
  • 大文件分片上传,断点续传整理
    问题:前段时间做视频上传业务,通过网页上传视频到服务器。视频大小小则几十M,大则1G+,以一般的HTTP请求发送数据的方式的话,会遇到的问题:1、文件过大,超出服务端的请求大小限制;2、请求时间过长,请求超时;3、传输中断,必须重新上传导致前功尽弃;探索过程:1、原先咨询过组里的大......
  • 软件调研、研发、设计、管理、验收文档(全文档整理)
    前言:在软件开发生命周期中,调研、研发、设计、管理、验收等环节的文档编写至关重要。它们分别扮演着不同的角色,为项目的顺利进行和最终的成功提供支持和保障。【获取方式在文末】【在调研阶段】,文档的主要作用是记录和整理关于软件产品的需求分析、市场调研和竞争分析等信息。......
  • C++面试重点整理
    整理各大八股,夹杂自己理解,死记硬背效果差,搜索验证才记得牢C++基础语法在main函数执行之前,可能会进行以下操作:设置栈指针。初始化静态(static)变量和全局(global)变量,即初始化存储在.data段中的内容。为未初始化部分的全局变量赋初值,例如将数值类型(如short、int、long)初始化为0,......
  • 使用node整理每日待办
    使用node整理每日待办项目结构node代码constfs=require("fs");constpath=require("path");/***@description使用node脚本编写博客待办因为每天想干的事情都不确定,无序完成一些任务,完成的任务后面都会添加链接......
  • open()文件导致文件内容被随机性地清空
    open()使用错误:源码 fd=open("/extdir/run_mode","r");其中,"r"不是open的参数,正确参数应为O_RDONLY。详解:1、open()是系统函数,它的参数应为O_RDONLY,"r"是库函数fopen()的参数2、"r"按照整型解释的时候是一个随机数(实际上是字符串"r"的地址)3、open()有一个操作标志O_TRU......
  • Hugging News #0918: Hub 加入分类整理功能、科普文本生成中的流式传输
    每一周,我们的同事都会向社区的成员们发布一些关于HuggingFace相关的更新,包括我们的产品和平台更新、社区活动、学习资源和内容更新、开源库和模型更新等,我们将其称之为「HuggingNews」。本期HuggingNews有哪些有趣的消息,快来看看吧!......
  • osg 使用整理 (8):基础光照和法线贴图
    #osg使用整理(8):基础光照和法线贴图##1冯氏光照模型(PhongLightingModel)​冯氏光照模型只考虑直接光照,将进入摄像机的光分为4个部分:​(a)自发光表示当给定一个方向时,一个表面本身会向该方向发射多少辐射量​(b)镜面高光表示物体表面镜面反射的辐射量,模拟有光照的亮点​(c)......