cloud GPUを色々と調べていく過程で、google Colaboratoryを知りました。
無料で(ある程度)使えるjupyter notebook環境です。
その特徴は
- 無料で使える機械学習に特化したjupyter notebook環境(VPSと異なりコンソール等は使用不可)
- ベースOSは ”Ubuntu 18.04.2 LTS”
- なんとGPU(K80-1core相当)も無料で使える!
- さらになんと、TPUも無料で使える!!
- 90分の無操作でログアウトされる
- 連続12時間稼働で強制終了する(プリエンプティブと異なり本当の終了)
さっそくお試しでmxnetを使ってみましたが、困ったことが・・・
インストールされているcudaがv10で9.2前提のmxnetが動きません。
いろいろ試してみたら、colabの自由度がかなり高いことが分かり、無事cuda9.2がインストールできました。
!wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1710/x86_64/cuda-repo-ubuntu1710_9.2.148-1_amd64.deb
!sudo dpkg -i cuda-repo-ubuntu1710_9.2.148-1_amd64.deb
!sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1710/x86_64/7fa2af80.pub
!sudo apt-get update
!sudo apt-get install cuda
!nvcc --version
cuda9.2もmxnet-cu92も簡単にインストールできました。
もちろん、tensorflow環境は事前にインストールされています。
さて、全く同じソースで試してみた結果ですが(cpuの違いは目を瞑ることにします)
注)データおよびモデルの違いにより、比較結果が大きく変わる場合があります!
ローカル環境(gtx1060):1,167sec/case
colab(K80-1core相当):1,621sec/case
colabのGPUはローカル1060の72%相当の速度
ということがわかります。
colabの紹介ブログを見ていると”TPUはGPUの〇倍速い!”というのばかりですが、比較対象のGPUが何世代も前の古いGPUかつ1core(半分)であり、かなり不利なことは否めません。
ただし、(単純計算ですが)cpuの6倍相当の速度が出ていることになります。
ディープラーニングに興味があるけど、実行環境作るのが面倒、GPUが無いので計算に時間がかかりそう、等で躊躇している人には入門用としてうってつけです!
さて、よくよく見るとcolabではTPUも無料で使用できることがわかります。
TPUなど使用する機会がないと思い全く興味がなかったのですが、無料で使えるなら・・・と少しだけ試してみました。
現状TPUを使えるのがtensorflowだけなので、mxnet使いのshimizuは大変苦労しました。
使い方が間違っているのだと思いますが、最初の実行時に2回コンパイルが走って、それだけで3分近くかかって少しイライラしますw
ローカルでの実行結果:93min58sec/2,000epoch(No1のケース)
colab+TPUでの実行結果:31min15sec/2,000epoch
なんと
TPUはローカル1060の3倍
の速度がでてしまいまいました!
これにはビックリですw
しかもこれが無料で使えるとは・・・
先日cloud GPUのコスト試算をしましたが、もうcolab+TPUでいいような気がしてきましたw
唯一の欠点が”tensorflowでしか使えない”ことでしょうか。
今回初めてtensorflowを触ってみましたが、簡単な範囲内だとmxnetと大差なく使えそうです。
というわけで、当面以下の環境で研究を進めることにします。
・メイン実行環境:colab+TPU+tensorflow
・サブ実行環境:ローカルPC+1060+mxnet
参考
調べてみたら、V100とTPUを比較している記事がありました。
単価は高いですが、計算時間の短さによりtotalで逆転しているのがわかります。
ちなみに、gcpの価格はこんな感じです。
- Tesla V100x1:$2.48 /hour
- TPU:$4.5 /hour
TPUは現在特別料金適用中らしいですが、価格的にはV100x2枚弱相当です。
最初に見たとき”TPUって高い!”と思ったのですが、TPUは8coreの分散処理なんですね・・・
そりゃ高いし、その分早いわけです。
GPU同士だとmxnetの方がtensorflowよりも早いらしいのですが、TPUの使用で大逆転です。
コストパフォーマンス、タイムパフォーマンスも良いし、しかもこれが無料で使える!!
そりゃtensorflowが覇権を握るわけですw
mxnetもTPU対応する日がくるのでしょうか・・・