當前位置:成語大全網 - 書法字典 - PyTorch中的NumPy是壹種怎樣的技術?

PyTorch中的NumPy是壹種怎樣的技術?

明敏祖籍奧菲寺。

量子比特報道|微信官方賬號QbitAI

究竟是什麽樣的bug能讓95%的Pytorch庫中招,甚至特斯拉AI主管都深感困擾?

更別說,這個bug雖小,但足夠“狡猾”。

這是最近Reddit上的壹個熱門話題,是壹位網友在使用常用的Pytorch+Numpy組合時發現的。

最重要的是,如果代碼可以運行通過,甚至會影響模型的準確性!

此外,另壹個網友熱議的話題竟然是:

但這是壹個bug嗎?

這到底是怎麽回事?

事件起因是有網友發現在PyTorch中使用NumPy生成隨機數時,由於數據預處理的限制,多個進程會並行加載數據,但最終每個進程返回的隨機數都是相同的。

他還舉例證明了自己的說法。

下面是壹個示例數據集,它返回壹個包含三個元素的隨機向量。這裏使用的批量為2,工作流程為4。

然後神奇的事情發生了:每個進程都返回相同的隨機數。

這個結果真的會讓人有點困惑,就像數學應用題中小明走壹定距離需要多長時間,而妳卻算出了壹個負數。

發現問題後,該網友還在GitHub上下載了超過65438+萬個PyTorch庫,並以同樣的方式生成了隨機數。

結果更令人震驚:超過95%的圖書館都被這個問題所困擾!

PyTorch的官方教程和OpenAI的代碼有很多,就連特斯拉AI的主管Karpathy也承認自己被“坑”了!

然而,解決這個bug並不難:您只需要在每個epoch中重置seed,或者您可以使用python的內置隨機數生成器來避免這個問題。

到底是不是bug?

如果這個問題已經可以解決了,為什麽還會有這麽大的討論?

因為網友的關註點已經上升到了“哲學”的層面:

這到底是不是壹個bug?

Reddit上的壹些人認為這不是bug。

雖然這個問題很常見,但並不是bug,而是調試時不可忽視的壹點。

正是這個觀點壹石激起千層浪,很多人認為他忽略了問題的關鍵。

這不是生成偽隨機數的問題,也不是numpy的問題。問題的核心在於PyTorch中DataLoader的實現。

對於具有隨機轉換的數據加載管道,這意味著每個工作者將選擇“相同的”轉換。目前,NN中的許多數據都加載到pipeline中,並使用某種隨機變換進行數據增強,因此不重新初始化可能是壹種預設。

另壹位網友也表示,這個bug實際上是在預設程序下運行後才出現的,應該向更多用戶指出。

而且超過95%的Pytorch圖書館都為此感到困擾,這絕不是危言聳聽。

有人分享了他們之前的痛苦經歷:

我以前在運行許多進程來創建數據集時意識到了這壹點,但發現有壹半的數據是重復的,我花了很長時間才發現哪裏出了問題。

壹些用戶補充說,如果超過95%的用戶在使用它時出錯,那麽代碼就是錯誤的。

順便說壹下,這提供了Karpathy定律的另壹個例子:即使妳搞砸了壹些非常基本的代碼,“神經網絡也想工作”。

妳踩過PyTorch的坑嗎?

以上bug並非偶然。隨著越來越多的人使用PyTorch,越來越多的bug被發現。PyTorch的坑有壹個總結,已經被查看到高達49w。

其中,從向量和函數到model.train(),無論是真正的bug還是bug,每個人的血淚史確實不同。

那麽,關於PyTorch,可以分享壹下血淚經歷嗎?

歡迎在評論區留言討論~

參考鏈接:

【1】/r/machine learning/comments/mocp gj/p _ using _ py torch _ numpy _ a _ bug _ that _ plagies/

【3】問題/67209465438

結束—