資源|18 分鐘訓練ImageNet復現代碼

選自 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 正是該團隊的成員之一:

资源|18 分钟训练ImageNet复现代码

運行要求:

  • Python 3.6 或更高版本

依賴:

  • awscli

  • boto3

  • ncluster

  • paramiko

  • portpicker

  • tensorflow

  • tzlocal

pip install -r requirements.txt

aws configure (or set your AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY/AWS_DEFAULT_REGION)

python train.py # pre-warming

python train.py

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

python train.py --machines=1

python train.py --machines=4

python train.py --machines=8

python train.py --machines=16

檢查進度

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

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

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

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

2018-09-06 17:26:23.562096 15.imagenet: To connect to 15.imagenet

ssh -i /Users/yaroslav/.ncluster/ncluster5-yaroslav-316880547378-us-east-1.pem -o StrictHostKeyChecking=no [email protected]

tmux a

這將連接到 tmux 會話:

.997 (65.102) Acc@5 85.854 (85.224) Data 0.004 (0.035) BW 2.444 2.445

Epoch: [21][175/179] Time 0.318 (0.368) Loss 1.4276 (1.4767) Acc@1 66.169 (65.132) Acc@5 86.063 (85.244) Data 0.004 (0.035) BW 2.464 2.466

Changing LR from 0.4012569832402235 to 0.40000000000000013

Epoch: [21][179/179] Time 0.336 (0.367) Loss 1.4457 (1.4761) Acc@1 65.473 (65.152) Acc@5 86.061 (85.252) Data 0.004 (0.034) BW 2.393 2.397

Test: [21][5/7] Time 0.106 (0.563) Loss 1.3254 (1.3187) Acc@1 67.508 (67.693) Acc@5 88.644 (88.315)

Test: [21][7/7] Time 0.105 (0.432) Loss 1.4089 (1.3346) Acc@1 67.134 (67.462) Acc@5 87.257 (88.124)

~~21 0.31132 67.462 88.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。資源|18 分鐘訓練ImageNet復現代碼

✄------------------------------------------------

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

投稿或尋求報道:content@jiqizhixin.com

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


分享到:


相關文章: