1.GCP上で大きなモデルを動かした際のGPUの性能比較まとめ
・Colabで動かせないモデルをGCP上で実行するとColabの凄みを改めて実感する事になる
・GPUはベンチマークではなく実際のタスクやモデルで動かさないと性能差はわからない
・モデルの理解とタスクの理解とハードウェア特性の理解で効率化できる余地はありそう
2.Colabを超えるマシンをGCPで実現する
2023年9月追記)本記事、内容がだいぶ古くなってきており、歴史的資料感があふれ出てきています。参考になるかもしれない新しめの記事としてはイラスト生成AI動作用のベンチマーク記事があります。直近はStable DiffusionやchatGPTを始めとする生成AIが大流行しているため、GPUが不足気味でクラウドであっても大量のGPUを安定的に確保するのが難しい状況です。GPC等のメジャーなパブリッククラウド以外にもvast.aiやlambdalabsなどのGPUレンタルに特化したクラウドプロバイダは出てきているのでそれらも比較してみると良いと思います。
母なる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/月 | Colab Pro plus相当(GPUに何が割り当てられるかは運や使用量が影響するので異なる場合もある) |
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/月)もColab Pro plus($49.99/月)も全然安いです。
(4)組み合わせたマシンとその性能
組み合わせ | 実効時間単位 | 真の1時間当たり単価 | Jukebox 5b 8秒x3曲生成の所要時間 |
NVIDIA Tesla V100 GPU + n1-highmem-8 + 100G | $2.074/h | $2.96/h | 1時間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/h | 1時間8分 |
NVIDIA Tesla P100 GPU + n1-highmem-4 + 100G | Colab相当 | $1.70/h | メモリ不足で動かせず |
NVIDIA Tesla T4 GPU + n1-highmem-16 + 100G | $0.914/h | $1.30/h | 1時間12分 |
NVIDIA Tesla T4 GPU x 2 + n1-highmem-16 + 100G | $1.159/h | $1.65/h | 1時間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曲生成できた)結果です。追記)この動作、原因を追究できてませんが、もしかしたらT4は二枚刺しに非対応なために別々の実行になってしまうのかもしれません。
感想
・もし、ここに書いてある事を読んで自分でGCPを試してみようと思った際は、必ず、お支払い → 予算とアラート から、予算額と予算の何パーセントに達したらアラートを上げるか予算アラートを設定するようにしてください。GCPに限らないのですが、クラウドはディスク読み書きやネットワークのアップロードサイズ/ダウンロードサイズなどの使用状況に応じて金額が跳ね上がる事があり、これらの隠れコストは見積もりの際に考慮されません。設定しておかないと思ってもいなかった大金を請求されて驚く事があります。
・視覚タスクなどのベンチマーク結果などを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間で作業分担させるかとタスク内容の理解等の更に細かい考慮が必要になる