當前位置:
首頁 > 科技 > 資源 | 18 分鐘訓練ImageNet復現代碼

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







運行要求:






  • 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 ubuntu@

18.206.193.26


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。






本文為機器之心整理,

轉載請聯繫本公眾號獲得授權



?------------------------------------------------


加入機器之心(全職記者 / 實習生):hr@jiqizhixin.com


投稿或尋求報道:

content

@jiqizhixin.com


廣告 & 商務合作:bd@jiqizhixin.com

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

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


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

Petuum提出新型正則化方法:非重疊促進型變數選擇
生物神經網路與機器學習的碰撞,Nature論文DNA試管網路識別

TAG:機器之心 |