(目次はこちら)
#はじめに
以前の記事で、
- c4.2xlarge
- g2.2xlarge
- g2.8xlarge
の3つのインスタンスタイプで、cifar10の学習時間の評価を行った。
今回、AWSのEC2でp2インスタンスが利用可能になったので、また同じように学習時間の評価を。
P2インスタンス?
Name | GPUs | vCPUs | RAM (GiB) | Price/Hour |
---|---|---|---|---|
p2.xlarge | 1 | 4 | 61 | $0.900 |
p2.8xlarge | 8 | 32 | 488 | $7.200 |
p2.16xlarge | 16 | 64 | 732 | $14.400 |
GPUは、NVIDIA Tesla K80!!
個人で所有するには敷居が高いスペック。
評価環境
インスタンスタイプ
いろいろ環境構築とか面倒なので、g2.2xlargeとp2.xlargeで。
学習対象
LeNet-5-like convolutional MNIST model
Inception v3 model on Imagenet
こちらは、
tensorflow/models/inceptionにあるように、
NOTE Before doing anything, we first need to build TensorFlow from source, and installed as a PIP package. Please follow the instructions at Installing From Source.
なので、ビルドが必要。
さらに、ImagenetのデータのダウンロードとTFRecord formatへの変換が必要で、それだけで丸一日かかる・・・
学習時間計測
LeNet-5-like convolutional MNIST model
g2.2xlarge
GRID K520がCompute Capability 3.0であることを失念していました。この結果はCPUになります。。
Step 0 (epoch 0.00), 10.6 ms
Minibatch loss: 8.334, learning rate: 0.010000
Minibatch error: 85.9%
Validation error: 84.6%
Step 100 (epoch 0.12), 119.7 ms
Minibatch loss: 3.250, learning rate: 0.010000
Minibatch error: 6.2%
Validation error: 7.6%
Step 200 (epoch 0.23), 117.6 ms
Minibatch loss: 3.377, learning rate: 0.010000
Minibatch error: 12.5%
Validation error: 4.2%
...
Step 8500 (epoch 9.89), 119.8 ms
Minibatch loss: 1.618, learning rate: 0.006302
Minibatch error: 0.0%
Validation error: 0.8%
Test error: 0.8%
p2.xlarge
Step 0 (epoch 0.00), 44.4 ms
Minibatch loss: 8.334, learning rate: 0.010000
Minibatch error: 85.9%
Validation error: 84.6%
Step 100 (epoch 0.12), 11.8 ms
Minibatch loss: 3.259, learning rate: 0.010000
Minibatch error: 6.2%
Validation error: 7.4%
Step 200 (epoch 0.23), 10.9 ms
Minibatch loss: 3.362, learning rate: 0.010000
Minibatch error: 9.4%
Validation error: 4.4%
...
Step 8500 (epoch 9.89), 10.9 ms
Minibatch loss: 1.612, learning rate: 0.006302
Minibatch error: 1.6%
Validation error: 0.9%
Test error: 0.7%
評価
いうまでもないが、p2.xlargeはg2.2xlargeの10倍速い。
g2インスタンスでリザーブドインスタンス買った人も多いだろうに。たぶん、粋なはからいでp2インスタンスに乗り換えるんでしょうけど。
こんなに差が出るなら、Inception v3 modelのほうは評価不要に思えるが、モデルやデータの質が全然異なるので、さらに差が広がると容易に想像できるので、やる。
Inception v3 model on Imagenet
g2.2xlarge
GRID K520がCompute Capability 3.0であることを失念していました。この結果はCPUになります。。
2016-11-27 11:17:37.914060: step 0, loss = 13.05 (0.7 examples/sec; 45.648 sec/batch)
2016-11-27 11:22:09.663319: step 10, loss = 13.99 (1.5 examples/sec; 21.561 sec/batch)
2016-11-27 11:25:43.922104: step 20, loss = 14.60 (1.5 examples/sec; 21.275 sec/batch)
2016-11-27 11:29:19.665863: step 30, loss = 14.95 (1.5 examples/sec; 21.557 sec/batch)
2016-11-27 11:33:00.637729: step 40, loss = 14.24 (1.4 examples/sec; 22.077 sec/batch)
2016-11-27 11:36:42.248699: step 50, loss = 14.00 (1.5 examples/sec; 21.922 sec/batch)
2016-11-27 11:40:25.607910: step 60, loss = 13.31 (1.4 examples/sec; 22.319 sec/batch)
2016-11-27 11:44:07.525535: step 70, loss = 13.11 (1.5 examples/sec; 21.972 sec/batch)
2016-11-27 11:47:48.913615: step 80, loss = 13.21 (1.4 examples/sec; 22.079 sec/batch)
2016-11-27 11:51:29.875606: step 90, loss = 13.14 (1.5 examples/sec; 21.937 sec/batch)
2016-11-27 11:55:08.308093: step 100, loss = 13.13 (1.5 examples/sec; 21.951 sec/batch)
...
p2.xlarge
2016-11-27 11:03:30.950642: step 0, loss = 13.07 (0.7 examples/sec; 43.646 sec/batch)
2016-11-27 11:04:17.764336: step 10, loss = 13.76 (21.6 examples/sec; 1.484 sec/batch)
2016-11-27 11:04:32.590020: step 20, loss = 14.28 (21.4 examples/sec; 1.497 sec/batch)
2016-11-27 11:04:47.657033: step 30, loss = 14.63 (21.2 examples/sec; 1.511 sec/batch)
2016-11-27 11:05:02.499948: step 40, loss = 14.06 (21.6 examples/sec; 1.480 sec/batch)
2016-11-27 11:05:17.538775: step 50, loss = 13.49 (21.3 examples/sec; 1.504 sec/batch)
2016-11-27 11:05:32.363192: step 60, loss = 13.07 (22.1 examples/sec; 1.449 sec/batch)
2016-11-27 11:05:47.280413: step 70, loss = 13.21 (21.7 examples/sec; 1.472 sec/batch)
2016-11-27 11:06:02.230082: step 80, loss = 13.34 (22.3 examples/sec; 1.434 sec/batch)
2016-11-27 11:06:17.052023: step 90, loss = 13.01 (21.5 examples/sec; 1.491 sec/batch)
2016-11-27 11:06:32.107453: step 100, loss = 13.12 (20.4 examples/sec; 1.567 sec/batch)
...
評価
15倍程度の速度差。。
こんな重いjobを投げてすみませんでした、g2.2xlargeさん。
今後、g2インスタンスを使うことはないでしょう。
GRID K520がCompute Capability 3.0であることでも、今後、g2インスタンスを使うことはないでしょう。
あとがき
現時点では、p2だと、p2.xlargeしかスポットインスタンスが使えないので、しばらくはp2.xlargeでいこうかと。(p2.8xlarge, p2.16.xlargeもちょっと試してみようかなぁ)
Inception v3 model on Imagenetが学習できそうなので、数日以上回して、Inception v3 pre-trained modelと比較してうまくいってそうだったら、Imagenetに頼らずに、手持ちのデータだけで学習してみようかと。でも、データ作るの大変そう・・。