这里搞 AI 的多吗,问个问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
zxCoder
V2EX    Python

这里搞 AI 的多吗,问个问题

  •  
  •   zxCoder 2021-10-12 19:53:08 +08:00 4952 次点击
    这是一个创建于 1466 天前的主题,其中的信息可能已经有所发展或是发生改变。

    一篇论文的代码复现了但又没完全复现是可能啥情况啊。。。。。

    一篇论文,用到了 pytroch,transformers 一些预训练模型,以及 apex 的半精度加速啥的,反正主要就这几个东西。

    我甚至邮件找了作者,要到了他的 conda 环境

    但是!前几天用这个环境,运行代码可以复现,今天起来发现,复现不了了?????变成了完全不同的一个结果,而且这个结果又是稳定复现的。

    试过了 conda 环境重新导入,重启机器,github 重新拉代码,清空预训练模型缓存啥的,死活就是不行。

    我向来是不相信玄学的,但是环境和代码我是真的一点都没动过,也不会有其他人动(除非有个黑客专门潜入我的服务器搞事情?)

    21 条回复    2021-10-13 22:06:25 +08:00
    Rheinmetal
        1
    Rheinmetal  
       2021-10-12 19:59:13 +08:00
    conda 不是严格可重复的吧 可能的影响因素太多了 需要更多信息
    zxCoder
        2
    zxCoder  
    OP
       2021-10-12 20:02:33 +08:00
    @Rheinmetal 服务器配置像 gpu 型号啊,显存,内存,cpu 这些都是一样的,实在想不出还能有什么影响因素了。
    而且最怪的是曾经是对的。。。就比如前几天明明是结果是 90 90 90 90..... 某个时间点之后突然就 80 80 80...回不来了。。。
    FRankie222
        3
    FRankie222  
       2021-10-12 20:13:30 +08:00
    这类计算型的程序很可能出现这种问题,有一点点没想到的因素,就会引发蝴蝶效应,导致结果和原先的完全不同,建议再彻底过一下代码,看哪些地方可能发生了变化。
    swordspoet
        4
    swordspoet  
       2021-10-12 20:21:55 +08:00 via iPhone
    @Rheinmetal #1 conda 的环境可以复制,如果代码一样环境一样,结果应该是一样的。会不会是数据改变了?
    XQAL
        5
    XQAL  
       2021-10-12 20:30:23 +08:00
    关于再现训练结果,Pytorch 有相关文档,可以试试
    https://pytorch.org/docs/stable/notes/randomness.html
    rpman
        6
    rpman  
       2021-10-12 20:49:40 +08:00
    要 docker 还差不多
    而且环境一样也阻止不了硬件对 randomness 的影响
    zxCoder
        7
    zxCoder  
    OP
       2021-10-12 20:56:00 +08:00
    @cheng123xp
    @rpman

    如果是随机性的问题,不应该每次都复现不了吗
    SkyGuardian
        8
    SkyGuardian  
       2021-10-12 20:57:48 +08:00
    先检查一下所有包的 seed 是不是都有固定值,这个一般是最主要的,也是理论上会导致结果不一样的。
    玄学上可能会导致结果不一样的,bit flipping 。只要你用的 GPU 还有系统的内存有一个不支持 ECC,在运算的时候硬件被粒子打中,某一个 bit flipped 你也不知道是吧。如果是重要的 weight 被翻牌牌了,结果完全就不一样了呀。
    forgetlight
        9
    forgetlight  
       2021-10-12 21:21:55 +08:00 via iPhone
    首先确定 random seed 一致,有的会用系统时间或者读硬件作为 seed 初始化。很多 DL 的 seed 会对性能有影响。
    w468750
        10
    w468750  
       2021-10-12 21:26:34 +08:00   1
    先查 random seed 和各种配置,如果还能拿到标准模型,那就逐层对比检查输出结果,拿不到就固定好 seed 训练两个模型逐层对比
    Wolfsin
        11
    Wolfsin  
       2021-10-12 21:36:04 +08:00 via iPhone
    虽然可能跟你的情况不一样,我之前也什么都没改,但是模型的结果就是跟以前的结果不一样,而且非常稳定怎么都变不回去。
    最后翻了好几次代码,发现载入数据的顺序变了,改回去就又能复现了。
    c0xt30a
        12
    c0xt30a  
       2021-10-12 21:42:35 +08:00
    猜测有软件包不小心升级过了
    SorryChen
        13
    SorryChen  
       2021-10-12 21:46:32 +08:00
    通常大部分发布的代码,都有设置 seed,比如在运行参数里 --seed xxxx 这样,如果没有也可以自己指定,你可以试试不同 seed 对性能影响是否很大,有很多模型是这样的,通常会选一个最好的在论文里面报,投机取巧。

    ```
    random.seed(seed)
    np.random.seed(seed)
    torch.manual_seed(seed)
    if torch.cuda.is_available():
    torch.cuda.manual_seed_all(seed)

    ```
    ipwx
        14
    ipwx  
       2021-10-12 21:46:48 +08:00
    ummm 我的看法是,如果不能复现但结果相似,那这篇论文就是很 solid 了。
    ----

    如果不能复现并且结果变成了一坨 shit,那这就是水文。
    ipwx
        15
    ipwx  
       2021-10-12 21:47:30 +08:00
    yysy 现在有些 AI 论文是固定 random seed 才能有相似的论文,community 偏偏还觉得这就叫“reproducible”。wqnmlgb,这叫灌水!
    Nimrod
        16
    Nimrod  
       2021-10-12 23:22:39 +08:00
    想起来之前有个同事反应过,conda 行为具有随机性。并不知道是不是相关 hh
    VZXXBACQ
        17
    VZXXBACQ  
       2021-10-12 23:27:37 +08:00
    是不是 random seed 和局部最优的问题

    random seed 是有默认值的,如果是默认值和时间相关就有可能出现你说的情况了
    Liyiw
        18
    Liyiw  
       2021-10-13 01:40:54 +08:00   1
    有可能作者也复现不了,可能就挑的是最好的结果写在了论文上面
    leimao
        19
    leimao  
       2021-10-13 09:57:07 +08:00
    这就是不用 Docker 的结果。
    yuruizhe
        20
    yuruizhe  
       2021-10-13 14:23:45 +08:00
    重新训练,还真不一定能收敛到一个结果;重新 load 原先的 weight 再测一测?
    chizuo
        21
    chizuo  
       2021-10-13 22:06:25 +08:00
    性能差这么多,感觉和 seed 关系不大了。而且代码一般都是固定 seed 的,建议再三检查是否代码有修改
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     992 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 19:18 PVG 03:18 LAX 12:18 JFK 15:18
    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