質問の本質が何か?
コメント欄から、話の本質がNNにおいて、解像度を上げた場合にちゃんと動作する学習環境を作るにはどうしたらよいか、にあると捉えました。
メモリがひっ迫する原因は一般に、以下のどれかと思います。
- バッチサイズが大きすぎる(すでに対策済み)
- 画像の解像度が高すぎる(すでに対策済み)
- 浮動小数点の桁が大きすぎる(現状不明: fp32-->fp16でだいぶ軽くなります)
- モデルが重すぎる(現状不明: これを触ると根本が変わってしまいます)
これに対し、「GPU/TPUのメモリを増強すれば動かせるのではないか?」ということでそこについて回答していきます。
回答
今回、高解像度で学習をさせたくなりました。学習に時間がかかっても構いません。
専用GPUメモリが24GBにできるなら、確かめてみたいと思いました。
24GBあれば足りる、という保証はありませんが、このお話であれば(コスト度外視とすれば)QuadroやTesla系のGPUを増設すればより巨大なデータを扱えるようになります。
y_waiwaiさんとのやり取りを見る限り、(現行)Quadro P2200に、(予定)Quadro P6000を増設(二枚刺し)という感じをしたいということでしょうか。何にせよGPUは高いですし、Quadro系のものはGeForce系のものよりも輪をかけて高価です。慎重になる気持ちは分かります。
NvidiaのGPUを購入するときに気にしたいことは、大方以下の感じではないでしょうか。
- コストパフォーマンス(今は度外視)
- GPUのメモリ・コア数
- スロットの空き状況とほかの物との干渉
- 消費電力(=廃熱/電源大丈夫?問題)
- CUDAの対応状況: Compute Capability
特に下3つは死活問題で、物理的にスロットと空間に空きがないと刺せませんし、電源コネクタに空きがないと給電できなかったり廃熱をうまく処理しないとシステムがクラッシュしたりしかねませんし給電能力に余裕がなければシステムが不安定になりますし、CUDAのCCのバージョンによってどのTensorflow/PyTorchが使えるかが縛られます。
Cumpute Capabilityのリスト
GPU | CUDA Compute Capability | コア | 備考 |
---|
Quadro P2200 | 6.1 | Pascal | |
Quadro P6000 | 6.1 | Pascal | |
Tesla P40 | 6.1 | Pascal | |
GeForce RTX 3090Ti | 8.6 | Ampere | 参考に新しいモデル |
型番やシリーズの違い、販売時期などに違いはあると思いますが、提案されたものは全てCC6.1なので、基的にPC側から見れば「似たようなもの」として処理されそうです。
もし、「なら最新のRTXシリーズでメモリ24GBのようなモデルはあるしこれをブッコむか」をするのであれば、(ドライバとの相性的に)二枚刺しは止めて大人しく一枚にした方がイイかもしれません。CCが上のものはCCが下のものと互換性があるとは言われていますが、あまりに世代が違うと相性問題が起きても不思議ではないためです。
※ただし、私はNVIDIAの人間ではありませんので動作の保証は致しかねます。海外の掲示板を含め、可能な限り情報収集をしてからの購入をお勧めします。