GPUEaterで格安レンタルGPUサーバー生活

普段，生活する上ではColaboratoryやGPU付きのデスクトップで問題なかったりするのですが，
ふとサービスを世にリリースしたいとか思い，AWSでGPU付きのサーバーの値段を調べてみたりすると2200$(約24万円/月)とか書かれていて，ひえーってなったりします．（なりました）

こういった方々のために，格安でGPU付きのレンタルサーバーを提供しているGPUEaterなるサービスがあるとのことなので調べてみました．

https://www.gpueater.com/

## GPUEaterとは

- 機械学習に最適な次世代型GPUクラウドでAMD社製GPUを利用することで格安でGPUインスタンスを利用可能
- MIOpenと呼ばれる同社製ライブラリー群を使うことにより，TensorFlowをはじめとしたDeepLearningの主要ライブラリをAMD社のコンシューマー向けの安価なGPUで扱うことが可能
- 一番安いのだと7,500円/月でレンタル可能！

### 料金体系

![image.png](https://qiita-image-store.s3.amazonaws.com/0/107399/cec3615f-7666-59cc-8048-22be4be61224.png)

料金もAWSのp3.2xlarge (\$2203/m)とGPUEaterのa1.vegafe(\$443/m) と比べると，約1/5とかなりお得となっているようです．

しかも，ディスク容量やネットワーク利用も全部含まれているみたいです（すごい！）

### GPUEaterのメリット

- これまでどおりKerasなどで書いたコードがそのまま動く．
- インスタンスを立ち上げたらすぐtensorflowやKerasといったライブラリが使える．
- ボタン一つでインスタンスを立ち上げられるので，複数台で実験とかも簡単

![image.png](https://qiita-image-store.s3.amazonaws.com/0/107399/62290b24-2bbf-83b9-6ff8-0683118c9893.png)

注) AMDだとCUDAが動かないので，ROCmやMIOPen,OpenCLが代用となって普段どおり使えるようになっています．

### 利用インスタンス

- Name: a1.rx580
- Device: Radeon RX 580 (8G)
- Image: AMD-ROCm1.9.224+Tensorflow1.10 Ubuntu 16.04
- 月額料金: \$249/m(\$0.3458/h)

### 実験

HOMEディレクトリ直下にサンプルが置いてあるみたいです．
KerasでexampleにあるCIFAR-10を実行してみました．

```
cd ~/keras_examples
python3 cifar10_cnn.py # python3で実行することに注意
```

- 実行ログ

```
Epoch 2/100
1563/1563 [==============================] - 18s 11ms/step - loss: 1.5784 - acc: 0.4227 - val_loss: 1.3769 - val_acc: 0.5038
Epoch 3/100
1563/1563 [==============================] - 18s 11ms/step - loss: 1.4636 - acc: 0.4702 - val_loss: 1.2625 - val_acc: 0.5493
Epoch 4/100
1563/1563 [==============================] - 18s 11ms/step - loss: 1.3785 - acc: 0.5021 - val_loss: 1.2003 - val_acc: 0.5728
Epoch 5/100
1563/1563 [==============================] - 18s 11ms/step - loss: 1.3043 - acc: 0.5330 - val_loss: 1.2369 - val_acc: 0.5556
Epoch 6/100
1563/1563 [==============================] - 18s 11ms/step - loss: 1.2472 - acc: 0.5545 - val_loss: 1.1846 - val_acc: 0.5859
Epoch 7/100
```

現在のGPUの利用状況を確認したい場合は，`watch -n 5 rocm-smi`とすれば良さそうです．
(NVIDIAでいうところの`nvidia-smi`コマンドがAMDでは`rocm-smi`)

```
====================    ROCm System Management Interface    ====================
================================================================================
 GPU  Temp    AvgPwr   SCLK     MCLK     Fan      Perf    SCLK OD    MCLK OD  USED MEM
  0   55c     N/A      1380Mhz  2000Mhz  36.86%   auto      0%         0%       7773MB
================================================================================
====================           End of ROCm SMI Log          ====================
```

### ベンチマーク

KerasでCIFAR10を解く問題をもとに各インスタンスの性能を比較してみました．

https://github.com/keras-team/keras/blob/master/examples/cifar10_cnn.py

| Name | ms/step(DAあり) | us/step(DAなし) |
| ---- | --- | --- |
| NVIDIA GeForce GTX 1080 Ti(参考) | 7 | 130 |
| AMD Radeon RX 580 (8GB) | 11 | 291 |
| AMD Radeon RX Vega 56 (8GB)  | 10 | 195 | 
| AMD Radeon Vega Frontier Edition (16GB) | 10 | 190 |

※ DA: Data Augmentation

やはりNVIDAがメジャーな分だけ，最適化が進んでおり高速に動作していそうです．
ただ，AMD Radeon RX580(月額27,000円ぐらい)でも，高速に動いているので，コスパは結構良さそうです．

## 感想

- AMDで機械学習用にGPUを使うためには，特殊な処理が必要かと考えていましたが，少なくともKerasを使う分には意識しなくても大丈夫みたいです．
- 格安でGPUサーバーを借りられるので，普段のPCとして使うのも良さそうです．
- ネットワーク料金もディスク容量もすべてコミコミの値段なので，すごいお得です．