google Colabでmxnetを使ってみる、と改めて知るTPUの威力!

cloud GPUを色々と調べていく過程で、google Colaboratoryを知りました。

無料で(ある程度)使えるjupyter notebook環境です。

その特徴は

  1. 無料で使える機械学習に特化したjupyter notebook環境(VPSと異なりコンソール等は使用不可)
  2. ベースOSは ”Ubuntu 18.04.2 LTS”
  3. なんとGPU(K80-1core相当)も無料で使える!
  4. さらになんと、TPUも無料で使える!!
  5. 90分の無操作でログアウトされる
  6. 連続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対応する日がくるのでしょうか・・・

コメントを残す

メールアドレスが公開されることはありません。