はじめに
データ分析コンペに参加し始めて3年目を終えようとしていますが,「実力不足」×「時間不足」×「分析環境不足」の3不足状態でのコンペソロ参加は負けが続いており,コンペ終盤ではLBの下の方で炭治郎メンタルになる日々を過ごしております.
何とかこの状況を打破したいと考え,この度GPUの購入を決意しました.
「実力不足」に関しては,参加し続けることで少しずつ成長していくしか道はなく,「時間不足」に関しても仕事が第一なので,消去法で「分析環境不足」を解消することにしました.
実際,実力も時間もない中で,週に使えるkaggleのGPU時間の制約,GPU notebookの実行時間の制約,使用できるメモリの制約(モデルサイズやバッチサイズなど)などを考慮してモデルを学習させるのに精一杯で,+αの工夫をする余裕がないことの方が多かったです.
もちろん,GPUなしで上位に食い込む解法があるコンペも存在しますが,やはり上位争いできるコンペが制限されることや,試せることが制限されてしまうのは大きなディスアドバンテージでした.
そこで,以前にも少し調べていたことを踏まえて2択まで候補を絞り,以下のようなツイートをしたところ,ありがたいことに多くのコメントやご意見をいただくことができました.(ありがとうございます!)
初のGPUの購入を検討しているのですが,RTX A6000 1枚とRTX3090×2で悩んでいます.
— たかいと (@takaito0423) March 5, 2023
使用目的は,pytorchやtensorflowでの深層学習モデルの学習です.
それぞれのメリット,デメリットをご教示いただけると幸いです.
この記事は,いただいたコメントの紹介と,それらを踏まえてRTX A6000を自身が選んだ理由を残したものです.
GPUの購入を検討している人の参考になれば幸いです.
RTX A6000 1枚 vs RTX3090 2枚に対するコメントなど
いただいたリプライ or 引用リツイート(Special Thanks!)
GPU2枚だとData Parallelのためにコードを増やさないといけないのと、それぞれでモデルがGPUを専有する(はず)なので容量的にもA6000に分があるかと思います。3090は電力を食うのと2枚だとGPU同士が近いのでだいぶ音がする気がします(外排気の方が良いかと) A6000は高いのがデメリットでしょうか、、
— すずき (@retarfi_) March 5, 2023
単純に価格に対する処理性能面でのコスパでいうと後者有利なものの、それ以外の観点は概ね前者有利(単純に一枚で大きなメモリサイズの方が何かと楽なのと、後者の2枚構成だと電源出力がかなり必要になるので組立時の制約になる等)という印象です。
— sasaki (@sasaki_ts) March 5, 2023
A6000 1枚派です。同じ VRAM で使用電力量半分ですし、複数の実験を並列で回すこともほぼないです(当方 titan rtx 2枚構成です)
— かえるるる (@kaeru_nantoka) March 5, 2023
並列で回すなら cpu とかメモリとかも相応にリッチでないとそこがボトルネックになります。
あとDDP書くのも面倒いです。。
ちなみにRTX A6000のCUDAコア数は10752で、RTX 3090のCUDAコア数は10496です。単純にCUDAコア数の数だけ見ても、RTX 4090やRTX 6000 AdaはRTX A6000やRTX 3090の1.5~1.7倍もありますが、アーキテクチャも新しいので性能は段違いです。
— dc1394 (@dc1394) March 6, 2023
ちょっと違う観点になりますが、自作PC自体は詳しい方ですか?
— pao (@pppaaaooo) March 6, 2023
高額な割にパーツの初期不良とかで中々動かないこともあるので、高額なほど経験あるor困ったときに気軽に聞ける詳しい人がいるのは大事かと思いました(自身の体験より。。)
そういった意味では3900派かもです。
And when vram is not an issue. A6000 is around .95x of a 3090 due to (I believe) slightly lower power limit
— Shujun.He (@SJ_He) March 5, 2023
nvidia的にはクライアント向けGPUの複数枚構成でディープラーニングはフェードアウトさせたがってるような話があります。 https://t.co/JtfnH70Myc
— zakki (@k_matsuzaki) March 6, 2023
NFLでは実験1: GPU 0、実験2:GPU1 etc..と並列で回しまくっていたので複数GPU派です
— arutema47 (@arutema47) March 5, 2023
ただ爆熱、大飯喰らいなので組むのは大変だと思います https://t.co/7qLE3uJ5ZK
複数実験する人かどうかで答えが分かれそう。kaggle中は複数のアイデア試したいシーンが多いから2枚派 https://t.co/uZDBnUDtvi
— onodera (@0verfit) March 6, 2023
丁度シャの自己研鑽用GPUマシンを、現状RTX3090×2から来年分はRTX A6000x1に変更しようと思っていたところだった
— yu4u (@yu4u) March 6, 2023
ddpはpytorch lightning使ってると何もコード書かずに自然に使えるので、訓練時間自体は伸びてしまいそうではあるけど https://t.co/ZeJoLJy2MB
A6000 https://t.co/LpnqsiU6t0
— JUKI.pth🌕 (@jyukipann) March 5, 2023
スパコン使おうー https://t.co/1bIGpIdjme
— MATSUMOTO Yutaka (@yutakama) March 6, 2023
鍵アカからのリプライ
予算的に余裕あるならA6000がいいと思います! 1GPUの方が便利なこと多いです!
関連するツイート
並行で実験回さない派の人いるんですね👀
— かまろ/Camaro (@mlaass1) March 6, 2023
計算時間によるけど、最近は大体どのコンペでもピーク時10並列くらいで実験回ってる気がする。
人に勧めるならRTX3090×2かもしれないけど,私個人としてはRTX A6000 1枚にして良かったと思ってます.OttoコンペもA6000じゃないとあそこまでいけてませんでした.
— toshi_k (@toshi_k_datasci) March 5, 2023
真面目な話としていざという時にすぐA6000x2に移行できるのもA6000x1のメリットですよね.
— toshi_k (@toshi_k_datasci) March 6, 2023
選べるならA6000しかないのでは…
— ふぁむたろう (@fam_taro) March 5, 2023
強いて言えばゲームもするならRTX3090の方が動作実績たくさんありそうなぐらい?
例えば48GBのGPU1枚あったとして24GB使う実験2つ同時に訓練できなかったっけ?(記憶が怪しい)
— ふぁむたろう (@fam_taro) March 6, 2023
もしくはパフォーマンスの問題?
ほならね、A6000を2枚挿せば良いんですわ(過激派 pic.twitter.com/Op2txh3VRV
— ふぁむたろう (@fam_taro) March 6, 2023
今買うならA6000の後継っぽいA6000adaだったりしないのかな。めちゃ高いけど。https://t.co/n5JU7OE596
— あまえびん (@amaebin) March 6, 2023
RTX A6000購入の決め手
いろいろな情報を踏まえた上で,RTX A6000の購入を決めました.
規模の大きいモデルを学習させることができる
近年,モデルのパラメータ数や扱いたいデータサイズは大きくなる一方なので,48GBは最大の魅力でした.
マシン構成がシンプル
初めてのGPU購入で複数GPUでの構築は,少しハードルを感じました.
並列で実験を回すためには,それ以外のパーツのグレードアップが必要ですし,排熱なども気をつかう必要があるなどがハードルを感じる理由となります.
また,電気代が高騰しているので,消費電力(夏場の冷房なども含む)が増えるのは地味に痛い出費だと思いました.
今後,本当に必要になったら2枚目のRTX A6000を購入して,2枚構成にしたいと思います.
おわりに
想定したよりも,非常に多くの方の考えを共有いただき,感謝しております.
今回は,自身のお財布事情で,RTX A6000 一枚購入ぐらいの価格帯で検討しているというツイートに対して,それより上側の情報共有が多かったですが,実際にこれからコンペを始めるとかであれば,kaggleで無料で使える範囲から試しつつ, RTX3090,A4000,RTX4090あたりを1枚購入とかからでも十分かと思っております.
そのあたりに関しては,記事とかいろいろあるかと思いますので,そちらを参照してもらえたら幸いです. (例えば,前にこういった記事を紹介していただいたことがあります.A4000という選択 - Qiita)
実際に購入してどうだったかについても,そのうち共有できたらと思っております.(ものすごく快適に分析回せてますという報告になるか,事故報告になるかわかりませんが)
良いGPU手に入れたのに上位争いできないようでは,ネタにされかねないので,引き続き頑張りたいと思います.
また,分析環境が整って,実力ももう少し着いたら,序盤からチーム組んでわいわいコンペしたいなと思っております.(経験不足&学習環境最弱過ぎて,ソロ参加ばかりしてきたので)
最後まで読んでいただきありがとうございました.
今後とも,どうぞよろしくお願いいたします.