選自 GitHub

  作者:yaroslavvb、bearpelican

  機器之心整理

  

  由 fast.ai 學員 Andrew Shaw、DIU 研究員 Yaroslav Bulatov 和 Jeremy Howard(fast.ai 創始研究員)組成的團隊在18 分鐘內成功完成訓練 Imagenet的任務,準確率達到 93%。本文介紹了Yaroslav Bulatov剛剛放出的復現代碼。

  

  項目https://github.com/diux-dev/imagenet18

  fast.ai 使用了 16 個 AWS 雲實例(每個實例使用 8 個英偉達 V100 GPU)來運行 fastai 和 PyTorch 庫。這一速度打破了在公共基礎架構上訓練 Imagenet 達到 93% 準確率的速度記錄,且比谷歌在 DAWNBench 競賽中使用其專有 TPU Pod 集羣的訓練速度快 40%。該團隊使用的處理單元數量和谷歌的基準(128)一樣,運行成本約 40 美元。

  項目貢獻者 yaroslavvb 正是該團隊的成員之一:

  運行要求:

  Python 3.6 或更高版本

  依賴:

  awscli

  boto3

  ncluster

  paramiko

  portpicker

  tensorflow

  tzlocal

  pipinstall-rrequirements.txtawsconfigure(orsetyourAWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY/AWS_DEFAULT_REGION)pythontrain.py#pre-warmingpythontrain.py

  如果想要用更少臺機器執行訓練,可以使用以下選項:

  pythontrain.py--machines=1pythontrain.py--machines=4pythontrain.py--machines=8pythontrain.py--machines=16

  檢查進度

  機器會打印進度到本地 stdout,以及記錄 TensorBoard 事件文件到 EFS。你可以:

  使用工具或 launch_tensorboard.py 來運行 TensorBoard

  這將提供到 TensorBoard 實例的鏈接,其擁有「losses」組的損失函數圖。你將在「Losses」標籤下看到這樣的結果:

  使用運行期間打印出的指令來連接到其中一個實例:

  2018-09-0617:26:23.56209615.imagenet:Toconnectto15.imagenetssh-i/Users/yaroslav/.ncluster/ncluster5-yaroslav-316880547378-us-east-1.pem-oStrictHostKeyChecking=noubuntu@18.206.193.26tmuxa

  這將連接到 tmux 會話:

  .997(65.102)[email protected](85.224)Data0.004(0.035)BW2.4442.445Epoch:[21][175/179]Time0.318(0.368)Loss1.4276(1.4767)[email protected](65.132)[email protected](85.244)Data0.004(0.035)BW2.4642.466ChangingLRfrom0.4012569832402235to0.40000000000000013Epoch:[21][179/179]Time0.336(0.367)Loss1.4457(1.4761)[email protected](65.152)[email protected](85.252)Data0.004(0.034)BW2.3932.397Test:[21][5/7]Time0.106(0.563)Loss1.3254(1.3187)[email protected](67.693)[email protected](88.315)Test:[21][7/7]Time0.105(0.432)Loss1.4089(1.3346)[email protected](67.462)[email protected](88.124)~~210.3113267.46288.124

  最後一個數字表示在第 21 個 epoch 時,本次運行獲得了 67.462% 的 top-1 測試準確率和 88.124% 的 top-5 準確率。

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

  本文爲機器之心整理,轉載請聯繫本公衆號獲得授權

  ------------------------------------------------

  加入機器之心(全職記者 / 實習生):[email protected]

  投稿或尋求報道:[email protected]

  廣告 & 商務合作:[email protected]

查看原文 >>
相關文章