今週のお題「買ってよかった2022」
↑なんか書こうとしてた記事とぴったりだったのでいれておく^^いやでもこれって複数の商品を紹介するのかな?
RTX3090を買ったので、Paperspace gradient(参考)のFree-GPU達と比較してみます。
元々Ryzen 5 5600X+RTX3070ti+メモリ32GBでしたが、VRAM足らないのが我慢できなくて3090に換装しました。4090搭載のbto pcとかを思い切って買っちゃおうかとかも考えましたが、VRAM以外に不満はなかったし、作ってから1年ちょっとしかたってないので、がんばって電源とともに付け替えました。ゲーム性能だけみたら4080の方がコスパよさそうですが、機械学習のことを考えたらVRAM24GBあった方ができること増えていいですよね。VRAM24GBのGPUが17万円で買えるなんて3090が出回ってる今を逃したら当分なさそうですしね。
画像生成
私は学習時間に興味があったのですが、画像生成の方が需要ありそうなのでそちらから。A100は空いたら追加します(した)。
webuiでStable diffusion 2.0系のモデルに768×768画像を64枚生成させてみます。(50stepsでxformersあり)
batch size | 所要時間 | 1枚にかかる秒数 | |
A100 80GB | 64 | 135 | 2.11 |
A6000 | 32 | 240 | 3.75 |
A5000 | 16 | 327 | 5.11 |
RTX3090 | 32 | 302 | 4.72 |
A100最強!
真ん中二つはbatch sizeが大きすぎるとなぜかbatch count2個目からcuda out of memoryになります(GPUではなく環境の問題だと思いますが)。ただA5000ではbatch sizeをあげても効率がかわらなかったので、RTX3090の方が強いみたいですね。さすがにA6000には勝てませんが、値段全然違うしこっちはゲームもできますからね。
学習
次にStable diffusion2.0の学習を同じデータセット(768×768)でやってみます。バッチサイズとGradient Checkpointing有無を変えながらやってみました。RTX3090だけローカルでやってるので公平な比較ではないかもしれません。一応CPUやメモリ側がボトルネックになっている感じではなさそうですが、ようつべみながらやってたのでww(CPUがビデオカードなしなんだよね)VAEによる潜在変数の計算は予めやっているので、VAEの計算時間は入っていません。
samples/sが1秒ごとに学習できる画像枚数です。
batch size | grad checkpoint | steps/s | samples/s | ||
A100 80GB | 128 | 1 | 0.09 | 11.93 | |
64 | 1 | 0.18 | 11.66 | ||
20 | 0 | 0.69 | 13.89 | ||
16 | 0 | 0.79 | 12.6 | ||
A6000 | 64 | 1 | 0.1 | 6.4 | |
12 | 0 | 0.58 | 6.98 | ||
8 | 0 | 0.85 | 6.78 | ||
A5000 | 20 | 1 | 0.23 | 4.66 | |
16 | 1 | 0.28 | 4.41 | ||
3 | 0 | 1.25 | 3.75 | ||
2 | 0 | 1.47 | 2.94 | ||
RTX3090 | 16 | 1 | 0.25 | 4 | |
2 | 0 | 1.11 | 2.22 |
A100最強!
プロ向けのGPU達には敵いませんが、A5000に引けを取らない結果がでてますね。VRAMがA5000とRTX3090では同じなので、理論上は同じ設定でできるはずですが、バッチサイズ20(grad checkpoint有)などではCUDA out of memoryしました。ようつべとかみてるからかも・・w
あと新たな発見として、VRAMが小さいA5000やRTX3090ではgradient checkpointingを利用してバッチサイズを大きくしたほうが良いということが分かりました。
換装した感想
正直月額5000円ちょっとでA5000~A100を使えるサービスがあるのに、わざわざ17万円と電気代を払う必要があるのかという感じもするのですが、Paperspaceでは容量の問題や制限時間のために大規模データセットで学習しづらいなあと感じていました。ですがA100の3分の1以下の学習能力と考えるとそこまでの規模の学習は難しそうですね。画像生成に関しては、Paperspaceでwebuiを使う場合、あまり応答がよくないgradioのwebアプリを利用しなければいけないので、ローカルで使えるRTX3090は役立ちそうです。そもそもngrokを使ったら停止されちゃったので、同じようなものであるgradioの共有機能を使うのはよくないかもしれません。
ちなみにゲームはまだやってないです。持ってるモニターが2Kの144HzだしCPUが3090に比べると弱いのでゲーミング性能的には恩恵なさそう・・・。モニター以前に私の瞳は30Hzまでしか対応してないですけどね。