マルチGPU化を試してみる①
第2回電竜戦も終了し、今年の大会がひと段落したところで以前より検討していたマルチGPU化を実施してみました。
実はdlshogiは既にマルチGPUによるスケールアウトに対応しているのですが、未だに自身のAWSアカウントのvCPUの上限緩和がされないため、本当にマルチGPUに対応しているのか?NPSの伸びはどれくらいか?というところは未知数でした。(GCTチーム等、大会で動いていることは知っていますが、実際に自分が手元で検証したわけではないので)
また、自分は自作の学習スクリプトを用意して、24時間Lightweightの学習サイクルを回しているのですが、GPUが1枚だとテスト対局や他のモデル・探索部の実験/検証により、学習サイクルを止めざるを得ないというデメリットがありました。そこに自由に使えるGPUが1枚増えることで、上記を並行して進められるようになります。
上記の理由から、今後の開発作業にとってもプラスになると考え、今回のマルチGPU化を試みた、という経緯になります。(一応、学習に関してだけはAWSでインスタンスを立てたりColaboをフル活用するという手も十分検討できたのですが、個人的に2枚差しをやってみたかったというハード側の好奇心もあり...)
また、他にもマルチGPU化を検討している方がいらっしゃるかもしれませんので、一応自身の考えるメリット・デメリットを以下にまとめておきます。
■メリット
・GPU一枚分のリソースが増えることで、開発の効率化が見込める(上記参考)
・対局時のNPS向上(≒棋力の上昇)
■デメリット
・消費電力の増大(今回のマルチGPU化にあたり、電源も約2倍に変更しています。電気代...)
・PC購入元のサポート対象外になる可能性がある(秋葉原に行って事前に検討・相談したのですが、どの店舗でも「正直あまりお勧めはできません」と回答されました。ただ、いずれもゲーミング用途としての回答のように見受けられたので、将棋ソフト開発の場合は少し事情が異なる可能性はあります)
・ケース自体やマザー側が増設に対応していない場合、そこから変える必要がある(特にマザーは、PCIeスロットに余りがあっても転送速度問題が出てくることもあります)
・夏場の排熱問題(冬は暖房代わりになって良いですが、夏は本当に怖い....)
上記も踏まえて検討し、マルチGPU化を実施したのですが変更点は以下の2つです。
①電源の交換(650W→1200W)
②グラフィックボードの増設(RTX3080の増設)
※②についてですが、当初は3090も視野に入れていたもののお財布事情と電源側の容量が不足することから断念しています(3090入れてみたかった...)
ということで、今年の1月にもPCを購入したドスパラさんの通販にて、上記①②を購入して増設を実施。無事に問題なく動作することを確認できました。下記は、3080で学習中の様子となります(※オプションで使用GPUを3080に指定しているので、このとき3070側は使っていないです)
後日②として、実際に運用した際の所感やNPSベンチマークの結果等を記載する予定です。