在相同的条件下用相同的算法训练相同的深度学习模型,训练的结果会是怎么样的呢? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
这是一个专门讨论 idea 的地方。

每个人的时间,资源是有限的,有的时候你或许能够想到很多 idea,但是由于现实的限制,却并不是所有的 idea 都能够成为现实。

那这个时候,不妨可以把那些 idea 分享出来,启发别人。
FutureApple

在相同的条件下用相同的算法训练相同的深度学习模型,训练的结果会是怎么样的呢?

  •  
  •   FutureApple 2022 年 7 月 23 日 2167 次点击
    这是一个创建于 1372 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在相同的条件下用相同的算法训练相同的深度学习模型,训练的结果是否会完全相同,又是为什么呢?

    7 条回复    2022-07-25 17:16:20 +08:00
    zxCoder
        1
    zxCoder  
       2022 年 7 月 23 日
    怎么定义“相同的条件”

    如果真的是相同的条件,那结果肯定是相同的
    jdhao
        2
    jdhao  
       2022 年 7 月 23 日 via Android
    不太可能完全相同,因为模型的参数初始化,batch 里面数据选择,这些都会影响结果,如果你把这些变化的量全部固定,结果基本上是一样的。
    hsfzxjy
        3
    hsfzxjy  
       2022 年 7 月 23 日 via Android
    一些 CUDA 运算有随机性,会导致结果不同
    xiri
        4
    xiri  
       2022 年 7 月 23 日 via Android
    有可能会不同,不少算法为了避免过拟合都会引入一些随机因子
    Muniesa
        5
    Muniesa  
       2022 年 7 月 23 日 via Android
    用相同的随机种子应该结果是完全相同的
    hsfzxjy
        6
    hsfzxjy  
       2022 年 7 月 23 日   3
    我来说一个很多人不会注意到的随机性来源:并行化计算和浮点运算造成的不确定性。

    首先要知道,IEEE754 浮点数的加法和乘法是不符合结合律的。也就是说在某些情况下 (a+b)+c!=a+(b+c),一个反例是在 64-bit 情况下

    1e40+((-1e40)+1e10) == 0.0
    (1e40+(-1e40))+1e10 == 1000000000.0

    因此,对于同一批浮点数相加,它们加的顺序会影响最终的结果。

    其次要知道,GPU 算法通常会将一个问题分为几个子问题,对子问题并行计算,再将子问题的结果汇总为最终的结果。

    比如你要用 GPU 计算 3 个浮点数的和,你可以开 3 个线程使用 atomicAdd 把这些数加在结果数上。

    atomicAdd 能保证没有 race condition ,但是不能保证加的顺序,你这次跑可能是 (a+b)+c ,下一次就可能是 (b+c)+a 。而根据前一条,浮点数的运算顺序会影响运算结果。因此,你每次跑都有可能得到不一样的结果。

    只要你的运算涉及将多路并行的浮点数结果汇总,这种随机性就无可避免,不管你如何固定应用层的随机种子。这种随机性的影响可能很小,但在漫长的训练过程中会不断放大,直到产生肉眼可见的差异。

    为了克服这种随机性以得到确定性的结果,有时你需要和运算效率做 trade-off ,即以更慢的但是顺序确定的方式汇总浮点数。这也是 torch.backends.cudnn.deterministic 这个开关的由来。

    但需要注意的是,torch.backends.cudnn.deterministic 不能保证完全消除这种不确定性。因为这涉及算法的重新设计,而不像固定一个种子这么简单。如果 cudnn 等库的作者考虑不周,那还是会有这种随机性。
    lookStupiToForce
        7
    lookStupiToForce  
       2022 年 7 月 25 日
    依稀记得有人反映过以前洋垃圾至强 CPU 有其他因素全固定死,运算结果也会不稳定的情况

    所以排除上面那位大神说的算法层面的影响,物理层面的影响你也不能忽视

    啊,找到了一篇知乎的答案,就讲的不要用洋垃圾的道理
    https://www.zhihu.com/question/300500895/answer/656703745
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1378 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 38ms UTC 17:07 PVG 01:07 LAX 10:07 JFK 13:07
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86