資源 | 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 to15.
imagenetssh -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
) Data0.004
(0.035
) BW2.444
2.445
Epoch: [
21
][175
/179
] Time0.318
(0.368
) Loss1.4276
(1.4767
) Acc@1
66.169
(65.132
) Acc@5
86.063
(85.244
) Data0.004
(0.035
) BW2.464
2.466
Changing LR
from
0.4012569832402235
to0.40000000000000013
Epoch: [
21
][179
/179
] Time0.336
(0.367
) Loss1.4457
(1.4761
) Acc@1
65.473
(65.152
) Acc@5
86.061
(85.252
) Data0.004
(0.034
) BW2.393
2.397
Test: [
21
][5
/7
] Time0.106
(0.563
) Loss1.3254
(1.3187
) Acc@1
67.508
(67.693
) Acc@5
88.644
(88.315
)Test: [
21
][7
/7
] Time0.105
(0.432
) Loss1.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:機器之心 |