當前位置:
首頁 > 最新 > 如何僅花25美元並在3小時內完成ImageNet訓練?

如何僅花25美元並在3小時內完成ImageNet訓練?

譯者 | 核子可樂

編輯 | Debra、Vincent

AI 前線導讀:在斯坦福大學建立的項目 DAWNBench 競賽中,CIFAR10 與 ImageNet 的表現引起了人們的關注,在目標基本一致的前提下,兩者的準確度分別達 94% 和 93%,在成本和速度上均有亮眼的表現,其中 ImageNet 訓練成本低至 25 美元,CIFAR10 訓練成本僅為 0.26 美元!它們是如何做到這一點的?競賽中還有哪些讓人意外的發現呢?

更多乾貨內容請關注微信公眾號「AI 前線」,(ID:ai-front)

基準測試結果

DAWNBench 是斯坦福大學建立的項目,旨在以競賽形式對不同深度學習方法加以比較。在 Dawnbench 競賽當中,CIFAR10 與 ImageNet 的表現引起了我們的關注。二者的目標基本一致,在保證相對合理準確度(ImageNet 為 93%,CIFAR 為 94%)的同時儘可能提高圖像分類器執行速度並降低運行成本。

在 CIFAR 10 測試當中,我們的參賽作品在兩個方向上勝出,分別為速度最快與成本最低。來自 DARPA D3M 項目的獨行俠 Ben Johnson 在這兩個方向上皆取得亞軍成績。而在 ImageNet 測試當中,我們的結果是:

在公有基礎設施上速度最快、在 GPU 上速度最快、在單一計算機上速度最快(甚至超過英特爾利用 128 台計算機建立的集群!)

成本最低(不過 DAWNBench 官方公布的結果並非我們的實際成本,下面將對此作出具體解釋)。

總體而言,我們的結論是:

演算法創造力比裸機性能更重要。

由 Facebook AI Research 與協作者團隊開發出的 Pytorch 能夠提供快速迭代與調試能力,從而支持這種創造力。

AWS 競價實例是快速經濟運行實驗性負載的絕佳平台。

在本篇文章中,我們將討論在每輪測試競賽中使用的具體方法。這裡提及的所有方法已經或者正在被合併至 fast.ai 庫當中。

超級收斂

fast.ai 作為研究實驗室,致力於通過教育與開發更易使用的軟體方案降低深度學習入門門檻,從而簡化用戶的學習流程。在我們看來,擁有最新計算機設備或大規模計算集群不是也不應成為涉足深度學習的必要條件。相反,對現代技術與最新研究成果加以利用,同時清楚了解當前需要努力解決的問題才是其中的關鍵。作為這項研究的重要組成部分,我們最近開發出一套新的庫,用於訓練 基於 Pytorch 的深度學習模型——這就是 fastai。

隨著時間的推移,我們已經將眾多可能未在社區當中得到應有重視的研究論文當中的演算法引入 fastai。具體來講,我們發現當前深度學習社區過分強調斯坦福大學、DeepMind 以及 OpenAI 等高知名度組織公布的研究結果,但卻忽略了其它同樣具有重要價值但卻知名度較低的學術來源。來自海軍研究實驗室的 Leslie Smith 就是其中一例,他最近發現了一種所謂「超級收斂」的重要現象。他解釋稱,這種現象可能帶來相當於原有已知方法 5 到 10 倍的深度神經網路訓練速度,進而給整個領域帶來革命性的變化。然而,他的論文並未被學術出版機構所接受,因此無法出現在任何主流軟體方案當中。

在對這篇論文進行課上討論的 24 小時之內,fast.ai 學生 Sylvain Gugger 就已經完成了該方法的具體實現——即將其納入 fastai 當中。他還開發出一份互動式筆記,用以展示如何嘗試其它相關方法。從本質上講,Smith 的案例表明,如果在訓練期間緩慢提高學習率,同時降低動量,則可以極高的學習率完成訓練——這意味著我們將能夠避免過度訓練,並將訓練時長壓縮至極低水平。

超級收斂理論中的學習率與動量模式

這種新的演算法思維轉變正是 Pytorch 與 fastai 的亮點所在。Pytorch 支持互動式調試以及對標準 Python 編碼方法的使用 ; 而 fastai 則提供多種構建塊與鉤子(在本示例中體現為回調,其允許實現定製化訓練,並利用 fastai.sqdr 建立新的學習率退火方法)。Pytorch 的張量庫與 CUDA 則允許用戶以探索方式快速嘗試新演算法的實現。

我們已經建立起一支非正式深度學習研究小組(任何人皆可免費參加),大家在日常課程當中共同參與項目。我們希望通過編碼方式驗證 Smith 的結論是否像他宣稱的那樣有效。再加上斯坦福大學正在舉辦 DAWNBench 競賽 ,我們認為這絕對是測試其實際效果的好機會。但在決定參加時,距離競賽開始已經只剩下 10 天時間——形勢相當緊迫!

我們的深度學習研究小組

CIFAR 10

CIFAR 10 與 ImageNet 都屬於圖像識別類任務。舉例來說,假設我們擁有一組貓與狗的照片,而且打算構建一款工具對其進行自動區分。我們首先需要建立一套模型,而後利用大量照片對其進行訓練,這樣其就能自動分類未見過的貓與狗照片。接下來,我們可以利用這套模型處理規模更大的數據集——例如 CIFAR,這是一套照片集合,每張照片都包含貓、狗以及其它數十種動物 / 載具對象(例如青蛙與飛機)。這些圖片比較小巧(32 像素 x32 像素),因此整體數據集也比較袖珍(僅為 160 MB)且易於處理。目前,這套數據集受到的重視程度並不高,因為其在體量上遠遠不及當下比較流行的大規模數據集。然而,其中的數據量很能體現各類組織所面臨的實際情況,而較小的圖片尺寸既帶來識別挑戰同時也降低了訪問門檻。

在決定參加比賽時,當時的領先演算法在一個多小時內即可達到 94% 的準確率。然而我們很快發現,我們在超級收斂理論的指導下只需要約 15 分鐘就能訓練出一套 Resnet 50 模型——這無疑是個激動人心的時刻!在此之後,我們還嘗試了其它一些架構,並發現 Resnet 18(實際上是 Resnet 18 的一套預激活變體)在 10 分鐘內即達到了相同的結果。我們在課堂上進行了討論,而 Ben Johnson 獨自對該方法進行深入開發。他在 fast.ai 當中添加了一種名為「concat pooling」(用於將網路中倒數第二層內的最大池與平均池連接起來)的方法,並成功在單英偉達 GPU 之上實現了 6 分鐘模型訓練紀錄。

在研究小組當中,我們決定專註於多 GPU 訓練方向,以便在單一計算機上獲得最快的訓練結果。總體來講,我們認為在多台機器上訓練模型會增加工程技術與系統管理工作的複雜性。為了儘可能避免這種複雜性,我們努力在單一計算機上提升方法效能。在這裡,我們使用一套名為 NCCL 的庫,其能夠與 Pytorch 配合使用,旨在以最低管理成本利用多個 GPU。

大多數與多 GPU 訓練相關的論文與討論都側重於關注每秒運算次數,而非網路訓練的實際時間周期。我們發現,在多個 GPU 上進行訓練時,我們的架構表現出了截然不同的特性。很明顯,研究界還需要投入更多精力以真正理解如何立足多個 GPU 在實踐當中獲得更好的端到端訓練結果。舉例來說,我們發現在單一 GPU 上運行良好的訓練設置,往往會在多 GPU 環境下出現梯度爆炸。我們參考了以往學術論文中的相關建議,並得出了一些合理的結論——但必須承認,我們還遠沒有利用到計算機的全部資源。

最後,我們發現要真正利用計算機上的 8 塊 GPU,我們實際上需要在每個批次當中引入更多任務量——也就是說,我們增加了各個層中的激活次數。在這裡,我們再次採用了遭到忽略的學術成果:巴黎大學橋樑學院發表的《Wide Residual Networks》論文,其中對建立殘差網路的不同方法作出了廣泛分析,同時討論了此類架構當中所必需的各類構建元素。

我們的另一位研究小組成員 Brett Koonce 開始利用各類不同參數設置進行實驗,希望發現最具實效的組合。我們最終為 resnet-34 架構創建了一套「寬化」版本。配合 Brett 精心挑選的超參數,其能夠在 3 分鐘訓練周期之內立足多 GPU 環境實現 94% 的準確度!

AWS 與競價實例

這裡要感謝 AWS 的幫助。我們希望以並行方式運行多個實驗,同時儘可能壓縮實驗成本。為此,研究小組成員 Andrew Shaw 構建出一套 Python 庫,其負責自動啟動競價實例、對其進行設置、訓練模型、保存結果,最後關閉該實例。Andrew 甚至完成了訓練設置,使得訓練過程亦可自動化實現,以確保所有訓練皆可在 tmux 會話中發生。如此一來,我們將能夠隨時登錄任意實例並查看當前訓練進度。

根據此次競賽中的經驗,我們的建議是,對於大多數數據科學家而言,AWS 競價實例無疑是進行大規模模型訓練或大量模型訓練場景下的最佳選擇。其使用成本通常僅為按需實例成本的三分之一。遺憾的是,DAWNBench 公布的官方結果並沒有報告實際訓練成本,而僅提供了基於按需實例的假設成本。我們對這種作法表示質疑,因為在實踐當中,競價實例的價格通常非常穩定,而且相當適合用於模型訓練這類工作負載。

從本次競賽的結果來看,谷歌的 TPU 實例(目前處於 beta 測試階段)可能也是個不錯的選擇。但需要強調的是,使用 TPU 則意味著大家必須接受以下限制條件:

使用谷歌硬體(TPU)。

使用谷歌軟體 (Tensorflow)。

使用谷歌雲平台 (GCP)。

更麻煩的是,TPU 不具備直接編碼能力,這嚴重限制了演算法的創造性(正如我們之前所提到,創造力實際上直接決定著最終性能表現)。考慮到 TPU 上有限的神經網路與演算法支持範圍(例如不支持卷積神經網路,而這對於包括谷歌自己的語言翻譯系統等具體應用非常重要),選擇谷歌平台將嚴重影響我們所能解決的具體問題以及可以選擇的解決方式。

在另一方面,AWS 則允許我們運行任何軟體、架構與演算法,而後獲取代碼結果並在自己的計算機或其它雲平台上加以運行。此外,競價實例的存在也意味著我們能夠享受到遠低於谷歌雲平台的使用成本(谷歌目前也在測試類似的『競拍實例』,但其似乎並不支持 TPU,並會以 24 小時為周期清理工作負載內容)。

對於單一 GPU 訓練方法來說,另一個理想選項是 Paperspace——也就是我們在新課程當中使用的平台。其設置過程要比 AWS 實例複雜得多,而且預安裝有完整的 fastai 架構。此外,其功能豐富性與靈活性也無法與 AWS 相提並論。其成本水平介於 AWS 競價實例與按需實例之間。我們正是利用 Paperspace 實例在此次競賽的成本測試單元中勝出——具體價格僅為 0.26 美元。

半精度運算

實現快速訓練的另一個關鍵,在於使用半精度浮點運算。英偉達最新推出的 Volta 架構包含張量核心,其專門用於處理半精度浮點數據。然而,利用這類數據進行訓練一直是個複雜的難題,而且目前還很少有成功利用此類數據完成模型訓練的案例。英偉達方面非常友好地提供利用半精度浮點數據進行 ImageNet 訓練的開源演示,而 Andrew Shaw 則將其中的指導思想納入到 fastai 當中。目前,我們只需要在代碼當中寫下 learn.half(),即可坐等系統自動執行所有必要步驟,從而快速準確地利用半精度浮點運算完成模型訓練。

ImageNet

相較於 CIFAR 10,ImageNet 就像是同一個問題的不同版本 ; 區別在於後者的圖像尺寸更大(224 像素,160 GB)且包含的類別更多(1000 種)。Smith 在他的論文當中展示了 ImageNet 的超級收斂實現方法,但其最終準確度低於原有訓練方法。我們也遇到了同樣的問題,即在以高學習率進行訓練時,模型無法達到 93% 的準確度要求。

為此,我們轉而使用 fast.ai 開發的另一種方法——即漸進式尺寸調整。這種技術的變化已經在此前的學術文獻(GAN 與強化深層殘差網路的漸進式增長)當中有所體現,但我們還從未利用其進行過圖像分類。這項技術的原理非常簡單:在訓練開始時先從較小的圖像起步,並隨訓練的繼續逐漸增加圖像大小。從直覺角度講,人類不需要較大的圖像就能了解貓與狗的體貌特徵 ; 但如果想深入了解不同狗只之間的差異時,圖像越大明顯學習效果更好。

很多人錯誤地認為,立足一種圖像尺寸訓練而成的模型無法適應其它圖像尺寸。沒錯,2013 年的 VGG 架構確實只能處理特定尺寸的圖像,但如今情況早已發生變化。問題在於,很多網路會在末端錯誤地使用固定尺寸的池化層,而未能使用全局 / 自適應池化層。舉例來說,官方 Pytorch torchvision 模型就沒有正確使用自適應池化層。正因為如此,fastai 與 keras 這類庫就顯得非常重要——這些庫致力於確保即插即用能力,同時儘可能納入所有相關最佳實踐。很明顯,Pytorch 與 TensorFlow 等項目的開發者們更關注底層基礎,而非最終用戶體驗。

通過使用漸進式尺寸調整,我們能夠顯著提升初始階段的訓練速度(因為此時使用 128 x 128 像素圖像,而非通常的 224 x 224 像素圖像),同時也令最終階段的準確度保持合理(利用 288 x 288 像素圖像獲得更高準確度)。除了良好的準確度之外,這種方法還帶來了理想的性能表現 ; 而憑藉著更為廣泛的圖像素材尺寸,模型本身也能夠更好地解決過度擬合問題。

關於創新與創造力

我在機器學習領域已經擁有 25 年的從業歷程,我發現工程師們特別喜歡在自己能找到的最強勁的計算設備上運行規模最大的數據集,而各類媒體也喜歡報道一切「最大」的事物。但事實上,真正的進步並非來源於此——差異性遠比規模重要得多。舉例來說,dropout 允許我們在較小的數據集上進行訓練且避免過度擬合,批量標準化讓我們更快完成訓練,而修正線性單元則能夠避免在訓練期間出現梯度爆炸。有追求的研究人員們會考慮採取不同的處理措施,希望幫助我們更快地訓練出更好的網路模型。

在與身處谷歌、OpenAI 以及其它實力雄厚機構的朋友們進行交流時,我一直擔心他們輕鬆獲取大量資源的優勢反而會扼殺其創造力。既然資源幾乎無窮無盡,我們還有什麼理由進行琢磨與考量?同樣需要強調的是,在這些機構之外,資源也往往相當稀缺,因此以資源無限為前提形成的思維習慣將無法給用戶真正帶來幫助。而更可怕的是,目前幾乎沒有多少研究人員真正意識到這個問題的存在。

更糟糕的是,交流當中這些朋友往往表示他們並不能真正獲得如此可觀的資源,因此他們也就放棄了前沿研究。在他們看來,似乎沒有大量 GPU 與 CPU 的支持,他們將永遠無法完成任何有價值的工作。在我看來,這個結論是完全錯誤的:卓越的實驗者加較差的設備,在研究成果上仍將遠超卓越的設備加上較差的實驗者。

我們很幸運,因為像 Pytorch 團隊這樣的積極力量正在構建創造性從業者們最需要的快速迭代與實驗工具。我希望看到更多來自小型非營利性實驗室與兼職學生的這類高水平成果,從而幫助整個業界破除「無資源、不科研」的認識誤區。

http://www.fast.ai/2018/04/30/dawnbench-fastai/

AI前線

緊跟前沿的AI技術社群

如果你喜歡這篇文章,或希望看到更多類似優質報道,記得點贊分享哦!

┏(^0^)┛明天見!


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

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


請您繼續閱讀更多來自 AI前線 的精彩文章:

Keras之父:我擔心的是AI被社交媒體操控
華盛頓大學推出YOLOv3:檢測速度比SSD和RetinaNet快3倍

TAG:AI前線 |