Q1: 訓練段階においてサブバッチを分割以外でもGPU、とりわけ多GPUを利用する場面があるのか?
分散処理をさせる方法には2種類の方法があります。
|方法|詳細|メリット|デメリット|
|:--|:--:--|:--|
|データパラレル|全GPUで同じモデルを共有して、分割したバッチデータを学習|高速化(概算:性能+60[%/台])|バッチサイズが上がると精度も落ちやすい(要:学習率等での帳尻合わせ)|
|モデルパラレルネットワークパラレル|GPU毎に分割したモデルを共有して、同じデータを学習|巨大なネットワーク(高解像度)に対応|恐らく設定が困難|
※Q.1でご指摘の並列処理の方法はデータパラレルです。
Q2: テスト段階にもGPUが役立つか?
データパラレルの場合、推論時には学習時ほどのデータは裁かないと思いますので、それほど複数GPUにするメリットはないのではないでしょうか?条件にもよるかと思いますが、GPUでやっていたことをCPUで処理させると10倍程度は時間がかかると思いますので、GPUはあった方が良いと思います。
モデルパラレルネットワークパラレルの場合、複数GPUでないと動かない状態になるかと思いますので、動かすためには必須となります。
機械学習とは関係ないメリットとしては、複数画面に表示できればコーディングが楽になるとか、あまりにも発熱が多くて暖房費用節約くらいしかなさそうです。
メモリへのデータの読み込み速度はHDD/SSDで大きく異なります(デバグのような何度も落としたり立ち上げたりがある場合には何度もゆっくり読みだすHDDはうっとおしいかもしれませんし、ほぼ立ち上げっぱなしであればHDDでも問題ないと思います)し、分散処理できない部分はCPUに依存します。また、発熱と電源問題も出てくるかと思いますのでお気を付けください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/01 09:47
2020/01/01 09:54
退会済みユーザー
2020/01/01 13:30
2020/01/02 04:15