計算資源有限的人如何在深度學習領域成長?

dicksonjyl560101發表於2019-09-23

對 AI 學習者而言,算力資源受限算是最讓人頭痛的問題之一——面對大規模節點的需求,CPU和記憶體卻對問題處理規模表示無能為力。沒有BAT這種大企業作為靠山的我們,可以如何進行“自救”呢?針對這個問題,我們在知乎上整理了幾個比較具有代表性的回答,希望能對大家有所啟發。

計算資源有限的人如何在深度學習領域成長?

@ 一個旅人 

結合自己學習Deep Learning以來的經驗來談談自己的感受吧,實驗室剛開始也只有單卡的機器,現在工作了有機會使用更多的計算資源。

如果從學習的角度上來說,一般的機器學習模型或者深度學習模型單卡還是能夠支撐的,視覺領域的不是特別瞭解,在自然語言處理領域常見的任務(情感分類,序列標註,QA,NMT除外吧),常用資料集單卡都是可以應付的。最近比較大的語言模型,ELMo單卡也是可以訓練的,只是時間長一點,BERT單卡呼叫預訓練的模型也沒有問題。

從做科研的角度來說,個人覺得不要執著於去做和工業界去拼計算資源的問題,BERT是個好東西拿過來用就可以了。在NLP領域,BERT出來之後幾乎讓單卡刷state-of-the-art變成了很困難的事情,其實這也不是壞事,學術界在有限計算資源的情況下應該更集中的去解決那些deep learning 中fundamental的問題,至於那些需要大量計算資源的的工作就交給工業界吧。

知乎回答連結:

https://www.zhihu.com/question/304263105/answer/617594784

計算資源有限的人如何在深度學習領域成長?

@ Wendell 

現在Google Colab上有免費的TPU啊,知道TPU有多快麼?常規訓練一個Resnet50只要10個小時,和8卡V100的速度相當。

所以你需要的只是一把梯子和一張信用卡(用於Google Cloud賬號)

當然Colab的TPU有些坑要爬,說幾個最關鍵的,以免大家浪費時間:

1. 除了Mnist之類可以快取的小資料集,必須用Google Cloud Storage,否則IO會是瓶頸

2. 有些ops被硬體限制了,自定義ops肯定都不行了,因為backend不是CUDA,Tensorflow自己的很多API也不能用,比如tf.images裡頭的很多API,所以ROI Align之類的ops都無法實現,也就是Two stages的物體檢測演算法都無法實現(官方也只給出了retinanet的實現)

3. Notebook經常斷線,我準備寫個瀏覽器指令碼來實現自動重連。

4. Tensorflow

補充一下:要是覺得Colab不好用,直接花錢用TPU也不貴,搶佔式的TPUV2 8核,一個小時只要1.35美元,價效比比GPU高太多了,想跑超大規模的模型,還可以選擇TPUV3,TPUV2 32核、 128核、256核。。。

20190102更新:發現最近官方復現了Mask RCNN,使用高階API實現了ROI Align。

另外說明一下為什麼必須用GCS:TPU的運作方式和GPU不同,GPU是直接掛載到VM上,然後你就可以像本機使用GPU一樣用就好了,TPU是有TPU Server的,VM並不能直接訪問TPU,而是在VM上編譯好XLA,然後丟給TPU Server,所有的資料讀取、預處理、和TPU通訊等,都是在TPU Server上執行,所以你如果把資料放在VM上,IO必然是瓶頸。這也是為什麼不管你跑多大的模型,Colab配給你的VM效能都是夠用的。

計算資源有限的人如何在深度學習領域成長?

知乎回答連結:

https://www.zhihu.com/question/304263105/answer/543461352

@ 齊國君 

在校學生就想辦法進有"真正"做深度學習實力的實驗室;也工作的人就想辦法跳到這方面的崗位上。

這些不是重點,重點是你怎麼學、怎麼提高對問題和模型的理解?這裡的誤區是“計算資源有限”。即便在大公司和大實驗室,計算資源都不是無限供應的。很可能的情況是你要和其他組其他同學和同事去搶。

所以關鍵是,你怎麼高效地使用有限的計算資源。很多同學容易反的錯誤是一上來就從Github上下載個模型來跑。跑著跑著就變成了調參,最後模型的效能是上去了,但啥也沒學會。

計算資源有限的人如何在深度學習領域成長?

正確的姿勢是要搞清楚這個模型或方法的關鍵是什麼?和其他方法比有什麼優點,解決了什麼問題?但更重要的是搞清楚 它不能解決什麼問題

研究一個模型或者方法的過程,往往最重要的是找到它不能做什麼。一個模型或者方法不可能什麼問題都解決的(參考no free lunch)。用這個模型的過程,其實就是要發現這點;搞清楚了這點,就知道了它的適用邊界,就能更有效的在有限計算資源下高效的使用它,而不是把資源浪費到它不適應的情形和資料上。

所以高效使用有限計算資源的方法就是反著用,用有限資源去找到模型的適用範圍的邊界。這個比重複的去在已經反覆被證明適用的範圍(資料、場景)上浪費有限資源獲得的提高要大得多也快得多。

更進一步,如果有辦法改進這個模型,並把它的適用邊界進一步擴充套件,那麼恭喜你,你就真正掌握了這個模型了。

知乎回答連結:

https://www.zhihu.com/question/304263105/answer/560291142



https://www.toutiao.com/a6738215962345996813/



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29829936/viewspace-2657914/,如需轉載,請註明出處,否則將追究法律責任。

相關文章