谷歌大牛吐槽:機器學習可再現性災難

最近,我正在與一個朋友聊天,他的創業公司的機器學習模型過於混亂,以致於引起了嚴重的問題,因為他的團隊試圖在彼此的工作基礎上發展並與客戶共享。甚至原始作者有時也無法訓練相同的模型並獲得相似的結果!他希望我能推薦一個解決方案,但是我不得不承認我在自己的工作中也遇到了同樣的問題。很難向尚未使用機器學習的人進行解釋,但是在跟蹤變更和從頭開始重建模型時,我們仍處於黑暗時代。有時感覺就像回到了沒有原始碼控制的時候。

谷歌大牛吐槽:機器學習可再現性災難

當我在90年代末開始學習程式設計時,跟蹤和協作原始碼的標準是Microsoft的Visual SourceSafe。為了讓我全程性體驗,它沒有原子檢入功能,因此多個人無法處理同一個檔案,網路複製需要每晚進行掃描,以免造成隨機損壞,甚至也不能保證資料庫早上會完好無損。不過,我感到很幸運,在我訪問過的一個地方只有一堵便箋牆,一個便箋貼在樹上的每個檔案上,編碼人員在修改檔案時會將它們取下來,待完成後再歸還!

谷歌大牛吐槽:機器學習可再現性災難

這就是說,在版本控制方面,我絲毫不遜色。我已經在一些可怕的系統中艱難地前進了,如果需要的話,我仍然可以使用rsync和chicken wire共同解決一個問題。即使擁有所有這些知識,我也可以專心致志地說,機器學習是迄今為止我發現的最糟糕的環境,無法協作和跟蹤變化。

為了解釋原因,這是機器學習模型的典型生命週期:

研究人員決定嘗試一種新的影象分類體系結構。

它複製並貼上了先前專案中的一些程式碼,以處理它正在使用的資料集的輸入。

該資料集位於她在網路上的一個資料夾中。這可能是ImageNet的下載之一,但不清楚是哪一個。在某些時候,可能有人刪除了一些實際上不是JPEG的影象,或者進行了其他較小的修改,但是沒有歷史記錄。

她嘗試了許多稍微不同的想法,修復了錯誤並調整了演算法。這些更改正在她的本地計算機上發生,當她想開始全面的訓練時,她可能只是將原始碼的大量檔案複製到了她的GPU叢集中。

她執行許多不同的訓練,經常在工作進行時更改本地計算機上的程式碼,因為它們需要幾天或幾周才能完成。

在大型叢集上執行快要結束時,可能會出現錯誤,這意味著它在恢復作業之前修改了一個檔案中的程式碼,並將其複製到所有計算機上。

它可能會從一次執行中獲取部分訓練的權重,並將其用作使用不同程式碼進行新執行的起點。

它會保持所有執行的模型權重和評估分數,並在沒有時間進行更多實驗時選擇要釋放的權重作為最終模型。這些權重可以來自任何執行,並且可能是由於它目前在其開發機器上不同的程式碼產生的。

她可能將最終程式碼嵌入到原始碼管理中,但在個人資料夾中。

她用程式碼和經過訓練的權重發布結果。

谷歌大牛吐槽:機器學習可再現性災難

這是一個有盡責的研究人員的樂觀方案,但是你已經可以看出,有人進入並重現所有這些步驟並得出相同的結果將是多麼困難。這些要點中的每一個都為不一致提供了機會。為了使事情更加混亂,ML框架在精確的數字確定性與效能之間進行權衡,因此,如果有人奇蹟般地設法複製了步驟,那麼仍然會有最終結果差異很小!

歡迎關注獵維科技,獵維科技專注人工智慧演算法研發,因為專注,所以專業。

TAG: 原始碼程式碼模型權重機器