當前位置:
首頁 > 知識 > 現在,所有人都可以在18分鐘內訓練ImageNet了

現在,所有人都可以在18分鐘內訓練ImageNet了

選自Fast.ai

作者Jeremy Howard

機器之心編譯

參與:路、張倩

由 fast.ai 學員 Andrew Shaw、DIU 研究員 Yaroslav Bulatov 和 Jeremy Howard(fast.ai 創始研究員)組成的團隊在 18 分鐘內成功完成訓練 Imagenet 的任務,準確率達到 93%。他們使用了 16 個 AWS 雲實例(每個實例使用 8 個英偉達 V100 GPU)來運行 fastai 和 PyTorch 庫。這一速度打破了在公共基礎架構上訓練 Imagenet 達到 93% 準確率的速度記錄,且比谷歌在 DAWNBench 競賽中使用其專有 TPU Pod 集群的訓練速度快 40%。該團隊使用的處理單元數量和谷歌的基準(128)一樣,運行成本約 40 美元。

該團隊的主要訓練方法是:fast.ai 用於分類任務的漸進式調整大小和矩形圖像驗證;英偉達的 NCCL 庫,該庫整合了 PyTorch 的 all-reduce 分散式模塊;騰訊的權重衰減調整方法;谷歌大腦的動態批量大小的一個變體,學習率逐步預熱(Goyal 等人 2018、Leslie Smith 2018)。該團隊使用經典的 ResNet-50 架構和具備動量的 SGD。

背景

四個月前,fast.ai 團隊在 DAWNBench 競賽中取得了巨大成功,他們使用單個機器(標準 AWS 公有雲實例)實現了最快的 Imagenet 訓練速度。谷歌在競賽中的表現也很搶眼,其使用尚未公開的 TPU Pod 集群贏得了整個 Imagenet 速度類別的冠軍。fast.ai 團隊使用單個機器的訓練時間為三小時,而谷歌的 TPU Pod 集群僅用了約半小時。而在該比賽之前,在公有雲上訓練 ImageNet 需要花費數天。

實驗基礎架構

快速迭代需要面臨諸多挑戰,比如:

如何在沒有大量可持續運行的昂貴實例時,在多台機器上輕鬆運行多個實驗?

如何便捷地利用 AWS 的 EC2 Spot 實例(比一般實例便宜 70%)?每次使用該實例時都需要從零開始重新設置。

fast.ai 為 DAWNBench 競賽構建了一個系統,包括用於啟動和配置新實例、運行實驗、收集結果和查看進展的 Python API。該系統還有一些更有趣的設計:

未使用配置文件,而是利用 Python API 寫代碼來配置實驗。因此,該團隊能夠使用循環(loop)、條件句(conditional)等來快速設計和運行結構化實驗,如超參數搜索。

圍繞 tmux 和 ssh 寫一個 Python API 封裝,並啟動 tmux 會話中的所有設置和訓練任務。這方便後續登錄機器和連接 tmux 會話,以監控進展、修復問題等。

一切「從簡」:避免 Docker 等容器技術或 Horovod 等分散式計算系統。該團隊未使用複雜的集群架構(這樣的架構需要單獨的參數伺服器、存儲數組、集群管理節點等),而是僅使用具備常規 EBS 存儲卷的單個實例類型。

單獨來看,DIU 面臨一系列挑戰,最終開發出一個具備相似動機和設計的集群網路,能夠並行運行很多大規模訓練實驗。該 nexus-scheduler 解決方案受到 Yaroslav 在谷歌 Borg 系統上運行機器學習實驗的經驗啟發。

fast.ai 開發的工具集則關注單個機器實驗的快速迭代,DIU 開發的 nexus-scheduler 關注魯棒性和多機器實驗。Andrew Shaw 將 fast.ai 軟體的一部分融入 nexus-scheduler,這樣創建出的系統就融合了二者最好的部分,可用於實驗。

使用 nexus-scheduler 幫助該團隊在分散式實驗上進行迭代,如:

為單個實驗啟動多台機器以實現分散式訓練。這些用於分散式運行的機器被自動歸為放置組(placement group),實現了更快的網路性能。

通過 Tensorboard 進行監控,事件文件和檢查點存儲在區域級文件系統上。

自動設置。分散式訓練的多種必備資源(如 VPC、安全組和 EFS)以透明的方式進行創建。

AWS 提供了一個非常有用的 API(https://boto3.readthedocs.io/en/latest/),幫助該團隊快速輕鬆地構建好所需的一切。他們使用英偉達的 NCCL 庫進行分散式計算,該庫實現了環形集群,且整合了 PyTorch 的 all-reduce 分散式模塊。該團隊發現 AWS 的實例非常可靠,且提供持續性能,這對利用 all-reduce 演算法取得最好結果非常重要。

nexus-scheduler 將在 8 月 25 日進行首次官方發布。

使用 Tensorboard 分析網路利用情況。

一種簡單的訓練新技巧:矩形圖像!

DAWNBench 競賽之後,Jeremy Howard 認為深度學習實踐者在做一件非常愚蠢的事情:大家用的是矩形圖像(如 ImageNet 中使用的那些),在做預測的時候只裁剪中間的部分。還有一種廣泛使用的方法(速度很慢)是裁剪 5 個位置(左上、左下、右上、右下及中心),並算出預測的平均值。這就引出了一個明顯的問題:為什麼不直接用矩形圖像呢?

很多人對卷積神經網路有誤解,認為它只能處理一種固定尺寸的圖像,而且一定要是矩形。然而,多數庫支持「適應」或「全局」池化層,這就完全克服了這一局限。當一些庫(如 Pytorch)分配不使用這一特徵的模型時,這沒有什麼用處——這意味著除非這些庫的用戶替換掉那些層,否則他們就只能使用固定尺寸和形狀的圖像(通常是 224x224 像素)。fastai 庫可以自動將固定尺寸的模型轉換為動態尺寸的模型。

目前還沒看到有人嘗試使用矩形圖像進行訓練,也沒在任何論文中看到類似表述。目前也沒有一個標準的深度學習庫支持這一點。因此 Andrew 找到一種方法:結合 fastai 和 Pytorch 進行預測。

結果令人驚艷——fast.ai 達到 93% 的基準準確率所花費的時間縮短了 23%。

不同方法的對比可點擊以下鏈接進行查看:https://nbviewer.jupyter.org/github/bearpelican/Experiments/blob/master/rectangular_images/RectangularImageVisualization.html;

它們的準確率對比參見:https://nbviewer.jupyter.org/github/bearpelican/Experiments/blob/master/rectangular_images/RectangularImageValidationComparison.html。

對比不同剪裁方法的 Jupyter Notebook 片段。「Center Crop Image」是原始圖像,「FastAi rectangular」是 fastai 團隊提出的新方法,「Imagenet Center」是標準方法,「Test Time Augmentation」是 multi-crop 方法的示例。

漸進式調整大小、動態批量大小等

fast.ai 在 DAWNBench 競賽中取得的主要進展是引入了漸進式圖像尺寸調整來進行分類——在訓練開始時使用小圖像,隨著訓練的進行逐漸增加圖像尺寸。採用這種做法,剛開始的時候模型非常不準確,但它可以很快看到大量圖像並取得快速進展,在接下來的訓練中,模型可以看更大的圖像,學習更加細粒度的區別。

這一新研究還對一些中間的 epoch 使用更大的批量大小,以更好地利用 GPU RAM 並避免網路延遲。

最近,騰訊發布了一篇很不錯的研究論文(https://arxiv.org/abs/1807.11205),顯示可以在 2048 塊 GPU 上用不到 7 分鐘的時間訓練 Imagenet。他們提到了一個 fast.ai 之前沒有嘗試過的方法,但這個方法非常合理:移除批歸一化層上的權重衰減。使用這種方法可以從訓練時間中再縮減幾個 epoch。-(騰訊的論文還使用了 NVIDIA Research 開發的動態學習率方法 LARS,fastai 團隊也開發了研究人員為 fastai 開發的,但還沒有包含在這些結果中。)

結果

綜合以上種種,fast.ai 在 16 個 AWS 實例上用 18 分鐘的時間完成 Imagenet 訓練,計算總成本大約為 40 美元(包括機器配置時間的成本)。能夠在超過 100 萬張圖像的數據集上進行訓練有很多好處,比如:

擁有大型圖像庫的組織(如放射科、汽車保險公司、房源掛牌服務和電子商務網站)現在可以創建自己的定製化模型。雖然使用如此多的圖像進行遷移學習通常會過猶不及,但是對於高度專業化的圖像類型或細粒度分類(如醫學成像中常見的),使用大量數據可能會得到更好的結果。

小型研究實驗室可以利用不同的架構、損失函數、優化器等進行實驗,並在 Imagenet 上進行測試,這也是許多評審人員希望在論文中看到的。

使用標準公共雲基礎架構,則開啟前沿深度學習研究就不需要前期成本投入。

過去 25 年,各種關於「好結果需要大量計算」的言論層出不窮,但是研究人員目前提出的有趣想法很少是利用大量計算做出的,如批歸一化、ReLU、dropout、adam/adamw、LSTM 等。今天,每個人都可以獲取到所需的大量計算基礎設施。使深度學習更平民化比只關注大公司的成就有更長遠的影響力,因為前者可以利用全世界數百萬研究人員的聰明才智。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 機器之心 的精彩文章:

Bloomberg推出在線免費課程:《機器學習基礎》
深度|卷積神經網路十五問:CNN與生物視覺系統的研究探索

TAG:機器之心 |