资源|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