GCP上で大きなモデルを動かした際のGPUの性能比較

調査研究

1.GCP上で大きなモデルを動かした際のGPUの性能比較まとめ

・Colabで動かせないモデルをGCP上で実行するとColabの凄みを改めて実感する事になる
・GPUはベンチマークではなく実際のタスクやモデルで動かさないと性能差はわからない
・モデルの理解とタスクの理解とハードウェア特性の理解で効率化できる余地はありそう

2.Colabを超えるマシンをGCPで実現する

アイキャッチ画像のクレジットはPhoto by sendi gibran on Unsplash

母なるGoogle Colaboratory上では動かす事が出来ない大規模モデルを動かしたくなったので、GCP(グーグル クラウド プラットフォーム)上でColab以上のマシンを構築して動かしてやるぜ!と意気込んだら、母の偉大さを改めて思い知ったと言うお話です。

ColabもGCPもハードウェアの刷新/価格改定が非常にハイペースなので一年も経てばここに書かれている情報は時代遅れになる可能性が高いのと、Colabは使いすぎるとGPUを割り当てて貰えなくなったり、マシンタイプも下がる事があるらしいので、そういった事情も踏まえた上でご参考情報としてどうぞ。

まずはColabに近い「(1)マシンタイプ」と「(2)ディスクサイズ」と「(3)GPUタイプ」からそれぞれ1つずつ選択する事になります。

(1)マシンタイプ

Machine type(現時点ではn1, a2以外はGPU非対応)月額(us-west1)備考
n1-highmem-4(vCPU 4 個 + 26 GB メモリ)$172.72/月Colabハイメモリ相当
n1-highmem-8(vCPU 8 個 + 52 GB メモリ)$345.44/月
n1-highmem-16(VCPU 16 個 + 104 GB メモリ)$690.89/月

(2)ディスクサイズ

Boot disk size月額(us-west1)備考
100GB$4.80/月Colab相当
200GB$9.60/月
300GB$14.40/月

(3)GPUタイプ

GPU月額(us-west1)備考
NVIDIA Tesla V100 GPU$1,810.40/月
NVIDIA Tesla P100 GPU$1,065.80/月Colab Pro相当(GPUに何が割り当てられるかは運や使用量が影響するので異なる場合もある)
NVIDIA Tesla T4 GPU x 2$511.00/月
NVIDIA Tesla K80 GPU$328.50/月Colab 無料版相当(GPUに何が割り当てられるかは運や使用量が影響するので異なる場合もある)
NVIDIA Tesla T4 GPU$255.50/月 

 

どうでしょう、この時点で、え、TensorFlowのチュートリアルなどで、気軽に「少しデータが大きいのでランタイムをGPUに切り替えましょう」なんて言われてプチッとボタンを押して切り替えって使っていたGPUは、実はGCPだと月額費用換算で余裕で10万円越えだったのか!そもそもマシンタイプもちょっと高級なメモリ増量タイプの4vCPUインスタンスが割り当てられる事があったの!と驚くと思うのですが、Colabの凄みはハードウェアだけではなかったです。

あらかじめインストールされているソフトウェア群が確実に動作するようにちゃんとメンテされている事、これ、当たり前の事のように思えるかもしれませんが、スゴイ事であり、素晴らしい事です。Colabとパッケージの名前やVersionをそろえるだけでは、Notebookを動かせない事が多々あり苦労する事になります。

GCP比で考えると有料版のColab Pro($9.99/月)は全然安いです。(注:2021年2月時点ではColab Proを使えるのは米国かカナダのみと表記があり、Webで検索するとColab Proを日本から使えたと書いている人もいるのですけれども、少なくとも現時点の私は「今すぐアップグレード」ボタンを押しても「予期しないエラーが発生しました。しばらくしてからもう一度お試しください。」と出るので利用出来ていません。2021年4月更新Colab Proが日本でも利用可能になりました。)

(4)組み合わせたマシンとその性能

組み合わせ実効時間単位真の1時間当たり単価Jukebox 5b 8秒x3曲生成の所要時間
NVIDIA Tesla V100 GPU + n1-highmem-8 + 100G$2.074/h$2.96/h1時間6分
NVIDIA Tesla P100 GPU + n1-highmem-8 + 100G$1.36/h$1.94/h未検証
NVIDIA Tesla T4 GPU x 2 + n1-highmem-8 + 100G$0.828/h$1.18/hメモリ不足で動かせず
NVIDIA Tesla K80 GPU + n1-highmem-8 + 100G$0.653/h$0.93/h未検証
NVIDIA Tesla T4 GPU + n1-highmem-8 + 100G$0.583/h$0.83/h1時間8分
NVIDIA Tesla P100 GPU + n1-highmem-4 + 100GColab相当$1.70/hメモリ不足で動かせず
NVIDIA Tesla T4 GPU + n1-highmem-16 + 100G$0.914/h$1.30/h1時間12分
NVIDIA Tesla T4 GPU x 2 + n1-highmem-16 + 100G$1.159/h$1.65/h1時間10分※

まず、左から2列目の「実効時間単位」なのですが、これはGoogleの見積もりツールなどが出してくる値で「一カ月(730時間)ずっと動かして、継続利用割引が自動適用された場合の単価」になります。つまり、必要な時間だけ使って、終わったらすぐに消す(インスタンスを停止してもディスク分は費用がかかるので停止するのではなく削除する)ような使い方をすると、継続利用割引の対象時間に届かないので、左から三列目の「真の1時間当たり単価」を見る必要があります。

一番右側の「Jukebox 5b 8秒x3曲生成の所要時間」がColabで動かす事が出来なかった50億のパラメータを持つモデルを動かした際にかかった時間です。第三者が提供したDockerなどは使っておらず直で動かしています。

上から見ていくとTesla V100 GPUですが、JukeboxのハイパーパラメータはV100用に設定してあると明言されているので、おそらくモデル開発元であるOpenAIはV100を使っていると思うのですが、1時間単価は300円以上になります。もちろん、購入したら200万円を超えるような現時点で一般利用可能な最高級機種なので300円は破格のお値段とは思いますが、24時間動かすと7200円ですから気軽に試したくなるような値段ではありません。このV100を使って1時間6分かかりました。

同じタスクを下から4行目のTesla T4 GPUを使って実行してみたところ、なんと1時間8分!もっと長い時間、重たいタスクにすれば差は開いていくのかもしれませんが、3倍以上単価が違うのに2分しか違わないのであれば、T4で十分に感じます。

また、同じT4でもマシンタイプを1つあげてhighmem-16で実行した所、何故か逆に実行時間が増えて1時間12分になりました。

更にhighmem-16のままT4を二枚刺しにしたところ、1時間10分。ただ、これはちょっと私が動かし方を間違えていて、2枚のGPUで分担して作業して欲しかったのですが、同じ作業をそれぞれ別々に実行した(つまり、6曲生成できた)結果です。

感想

・視覚タスクなどのベンチマーク結果などをWebに公開してくれている人は結構いるがGPUのメモリではなく本体側のメモリ不足が問題になったというケースを今まで見た事がなかった。おそらく、JukeboxがTransformerベースのモデルであるためだと思われる。

・V100の次世代機で、GCP上ではまだ一般利用は出来ないA100シリーズ(カタログスペックではV100比で最大10倍)を組み込んだ最高スペックマシンは市販価格で2000万円を超えているので、クラウド上でもA100はV100より更にお高い価格設定になる可能性がある。GPUは仮想通貨マイニングなどでも需要があるようなので今後もGPUの価格上昇傾向は続きそう。

・しかし、タスク内容によってはGPUのカタログスペックに記載されているような性能差(例えば、V100はT4よりも2.2倍~3.6倍高速という計測結果がある)は出ない事がある。なお、画像系のモデルを動かした際はP100で4分以上かかった処理がV100で1分20秒で終わった事もあるので本当にタスク次第で状況は変わる。

・望ましいマシン構成は動かしてみないとわからず、タスクによってかなり変わる可能性が高いが、単価の安いGPUを複数枚組み合わせてモデルとタスクに合わせた設定にする事でコストパフォーマンスの高い学習が実現出来る可能性はある。

・クラウド上で望ましいマシン構成を調査した後に同等スペックの比較的安価な個人向けGPUを購入して自作すると言う手もなくはなさそう。(非常に苦労しそうだけれども)

・もしくはTPU?(これも資料が少ないので苦労しそうだけれども)

・もしくはプリエンプティブ(空いてるGPUを安価で使う契約体系。安価だが混んでくると途中で割り込まれてジョブが強制終了する場合がある)を有効活用できないか考えてみる

・巨大モデルになるとGPUのメモリに収まるバッチサイズか等のモデルの理解とハードウェア特性の考慮が必要になる

・複数GPU利用時はどのようにGPU間で作業分担させるかとタスク内容の理解等の更に細かい考慮が必要になる

人工知能/機械学習を学ぶ際の開発環境の注意点は固定ページにまとめ予定

タイトルとURLをコピーしました