95%PyTorch库都会中招的bug!特斯拉AI总监都没能幸免

95%PyTorch库都会中招的bug!特斯拉AI总监都没能幸免

95%PyTorch库都会中招的bug!特斯拉AI总监都没能幸免

允中 来源: 量子位

你踩过这个坑吗

到底是怎样的一个bug,能让的Pytorch库中招,就连 特斯拉AI总监 深受困扰?

还别说,这个bug虽小,但有够“狡猾”的。

这就是最近Reddit上热议的一个话题,是一位网友在使用再平常不过的 Pytorch+Numpy 组合时发现。

最主要的是,在代码能够跑通的情况下,它甚至还会影响模型的准确率!

95%PyTorch库都会中招的bug!特斯拉AI总监都没能幸免

除此之外,网友热议的另外一个点,竟然是:

95%PyTorch库都会中招的bug!特斯拉AI总监都没能幸免

这究竟是怎么一回事?

事情的起因是一位网友发现,在PyTorch中用NumPy来生成随机数时,受到数据预处理的限制,会多进程并行加载数据,但最后每个进程返回的随机数却是相同的。

他还举出例子证实了自己的说法。

如下是一个示例数据集,它会返回三个元素的随机向量。这里采用的批量大小分别为2,工作进程为4个。

95%PyTorch库都会中招的bug!特斯拉AI总监都没能幸免

然后神奇的事情发生了: 每个进程返回的随机数都是一样的。

95%PyTorch库都会中招的bug!特斯拉AI总监都没能幸免

这个结果会着实让人有点一头雾水,就好像数学应用题求小明走一段路程需要花费多少时间,而你却算出来了负数。

发现了问题后,这位网友还在GitHub上下载了超过10万个PyTorch库,用同样的方法产生随机数。

结果更加令人震惊:居然有 超过95%的库 都受到这个问题的困扰!

这其中不乏PyTorch的官方教程和OpenAI的代码,连特斯拉AI总监Karpathy也承认自己“被坑过”!

但有一说一,这个bug想要解决也不难:只需要在 每个epoch都重新设置seed ,或者用 python内置的随机数生成器 就可以避免这个问题。

到底是不是bug?

如果这个问题已经可以解决,为什么还会引起如此大的讨论呢?

因为网友们的重点已经上升到了“哲学”层面:

这到底是不是一个bug?

在Reddit上有人认为:这不是一个bug。

95%PyTorch库都会中招的bug!特斯拉AI总监都没能幸免

就是这个观点,激起了千层浪花,许多人都认为他忽略了问题的关键所在。

95%PyTorch库都会中招的bug!特斯拉AI总监都没能幸免

另一位网友也表示这个bug其实是 在预设程序下运行 才出现的,应该向更多用户指出来。

95%PyTorch库都会中招的bug!特斯拉AI总监都没能幸免

并且95%以上的Pytorch库受此困扰,也绝不是危言耸听。

有人就分享出了自己此前的惨痛经历:

95%PyTorch库都会中招的bug!特斯拉AI总监都没能幸免

也有用户补充说,如果 95% 以上的用户使用时出现错误,那么代码就是错的。

95%PyTorch库都会中招的bug!特斯拉AI总监都没能幸免

你有踩过PyTorch的坑吗?

如上的bug并不是偶然,随着用PyTorch的人越来越多,被发现的bug也就越来越多,某乎上还有PyTorch的坑之总结,被浏览量高达49w。

95%PyTorch库都会中招的bug!特斯拉AI总监都没能幸免

其中从向量、函数到model.train(),无论是真bug还是自己出了bug,大家的血泪史还真的是各有千秋。

所以,关于PyTorch你可以分享的经验血泪史吗?

欢迎评论区留言讨论~

参考链接:[1]

— 完 —

版权所有,未经授权不得以任何形式转载及使用,违者必究。
声明:本文来自用户分享和网络收集,仅供学习与参考,测试请备份。