計算資源有限的人如何在深度學習領域成長?
對 AI 學習者而言,算力資源受限算是最讓人頭痛的問題之一——面對大規模節點的需求,CPU和記憶體卻對問題處理規模表示無能為力。沒有BAT這種大企業作為靠山的我們,可以如何進行“自救”呢?針對這個問題,我們在知乎上整理了幾個比較具有代表性的回答,希望能對大家有所啟發。
@ 一個旅人
結合自己學習Deep Learning以來的經驗來談談自己的感受吧,實驗室剛開始也只有單卡的機器,現在工作了有機會使用更多的計算資源。
如果從學習的角度上來說,一般的機器學習模型或者深度學習模型單卡還是能夠支撐的,視覺領域的不是特別瞭解,在自然語言處理領域常見的任務(情感分類,序列標註,QA,NMT除外吧),常用資料集單卡都是可以應付的。最近比較大的語言模型,ELMo單卡也是可以訓練的,只是時間長一點,BERT單卡呼叫預訓練的模型也沒有問題。
從做科研的角度來說,個人覺得不要執著於去做和工業界去拼計算資源的問題,BERT是個好東西拿過來用就可以了。在NLP領域,BERT出來之後幾乎讓單卡刷state-of-the-art變成了很困難的事情,其實這也不是壞事,學術界在有限計算資源的情況下應該更集中的去解決那些deep learning 中fundamental的問題,至於那些需要大量計算資源的的工作就交給工業界吧。
知乎回答連結:
@ 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效能都是夠用的。
知乎回答連結:
@ 齊國君
在校學生就想辦法進有"真正"做深度學習實力的實驗室;也工作的人就想辦法跳到這方面的崗位上。
這些不是重點,重點是你怎麼學、怎麼提高對問題和模型的理解?這裡的誤區是“計算資源有限”。即便在大公司和大實驗室,計算資源都不是無限供應的。很可能的情況是你要和其他組其他同學和同事去搶。
所以關鍵是,你怎麼高效地使用有限的計算資源。很多同學容易反的錯誤是一上來就從Github上下載個模型來跑。跑著跑著就變成了調參,最後模型的效能是上去了,但啥也沒學會。
正確的姿勢是要搞清楚這個模型或方法的關鍵是什麼?和其他方法比有什麼優點,解決了什麼問題?但更重要的是搞清楚 它不能解決什麼問題?
研究一個模型或者方法的過程,往往最重要的是找到它不能做什麼。一個模型或者方法不可能什麼問題都解決的(參考no free lunch)。用這個模型的過程,其實就是要發現這點;搞清楚了這點,就知道了它的適用邊界,就能更有效的在有限計算資源下高效的使用它,而不是把資源浪費到它不適應的情形和資料上。
所以高效使用有限計算資源的方法就是反著用,用有限資源去找到模型的適用範圍的邊界。這個比重複的去在已經反覆被證明適用的範圍(資料、場景)上浪費有限資源獲得的提高要大得多也快得多。
更進一步,如果有辦法改進這個模型,並把它的適用邊界進一步擴充套件,那麼恭喜你,你就真正掌握了這個模型了。
知乎回答連結:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29829936/viewspace-2657914/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 程式設計師如何在社交領域成長快一點?程式設計師
- 深度學習領域的資料增強深度學習
- Python為何在科學計算領域打敗Fortran? - cerfacsPython
- 超全!深度學習在計算機視覺領域應用一覽(附連結)深度學習計算機視覺
- 開源專案audioFlux: 針對音訊領域的深度學習工具庫UX音訊深度學習
- 深度學習在醫療領域的應用深度學習
- 幾個國外用來深度學習的雲端計算PaaS資源 - svpino深度學習
- 深度學習中的人體姿態估計概述深度學習
- 什麼是人工智慧領域的深度學習?人工智慧深度學習
- 機器學習、深度學習資源總結機器學習深度學習
- 機器學習和深度學習資源蒐集機器學習深度學習
- 雲端計算深度挖掘“創新潛力”,北鯤雲深耕生命科學領域
- 深度學習已成功應用於這三大領域深度學習
- 深度學習在CV領域已觸及天花板?深度學習
- 【AI in 美團】深度學習在文字領域的應用AI深度學習
- 阿里雲重磅開源實時計算平臺,挑戰計算領域的“珠峰”阿里
- 計算機科班生學計算機組成原理的意義何在呢?計算機
- 目前,深度學習已成功運用於這三大領域深度學習
- 深度學習在自動駕駛感知領域的應用深度學習自動駕駛
- 北鯤雲超算平臺如何成為就生命科學雲端計算領域先行者?
- 深度學習中需要的矩陣計算深度學習矩陣
- 計算機視覺與深度學習公司計算機視覺深度學習
- 計算機視覺中的深度學習計算機視覺深度學習
- 如何學習領域驅動設計? - Vladik Khononov
- 研究表明開源領域已不再增長
- 深度學習高效計算與處理器設計深度學習
- 戲說領域驅動設計(廿四)——資源庫
- 深度學習在人工智慧領域的七大階段深度學習人工智慧
- # 學期(如2024-2025-1) 學號(如:20241402) 《計算機基礎與程式設計》第六週學習總結計算機程式設計
- 資源 | 25個深度學習開源資料集,have fun !深度學習
- 深度:如何從系統層面優化深度學習計算?優化深度學習
- 《JavaScript深度學習》資源連結清單JavaScript深度學習
- 史丹佛—深度學習和計算機視覺深度學習計算機視覺
- 計算機組成原理學習 Part 2計算機
- # 學期(如2024-2025-1) 學號(如:20241402) 《計算機基礎與程式設計》第2、3周學習總結計算機程式設計
- Kubernetes 如何成為計算資源的標準
- 深度學習影象演算法在內容安全領域的應用深度學習演算法
- 時至今日,深度學習領域有哪些值得追蹤的前沿研究?深度學習