ここから本文です

ディープラーニング で使用するGPUに関する質問です。 状況によって変わると思...

imh********さん

2019/7/222:00:03

ディープラーニング で使用するGPUに関する質問です。

状況によって変わると思いますが、あるディープラーニングの学習に必要なGPUの専用メモリの容量の計算方法を教えて頂きたいです。

例えば、
-タスク: 分類
-トレ
ーニングデータ: 256×256の白黒(1 channel)画像が200枚
-テストデータ: その画像のカテゴリーの値(cat, apple, boatなど全10種類)
-使用言語: python
-フレームワーク: chainer
-モデル: VGG16
-ミニバッチ数: 20
-最適化アルゴリズム: adam
-エポック数: 300
この状況なら、どれくらいGPUの専用メモリが必要なのか、そしてその計算方法はどのようになるのでしょうか?

私の考えでは、ミニバッチ分だけのデータをパラメータの更新のたびにGPU上にコピーしてゆくプログラムの場合、
必要なメモリは、
20(ミニバッチの数)×画像1枚の容量+VGG16の容量
これだけだと考えておりました。(ここで、VGG16の容量は学習後のmodelを保存(serializers.save_npzで)した後にできるパラメータの値を保持しているファイルの容量を調べて確認するものとします。)
しかし、タスクマネージャーで確認するとこの計算した容量よりも、もっと多くの容量が使用されていることが確認できました。

これは、私の計算が間違っているのでしょうか?
それとも、モデルのパラメータの更新などの計算のためにも専用GPUメモリが使用されるからでしょうか?もしそうだとしたら、どのように、その計算のために使用されるメモリ量を計算することができるでしょうか?

また、chainerの設定で、実際に必要なGPUのメモリよりも多くのメモリを確保する設定がデフォルトでされているのではないか、とも考えております。そこら辺もご存知でしたら、教えて頂きたいです。

補足とゆうのも、U-netを使用してセグメンテーションを行おうとしているのですが、現在使用しているGPU(GeForce 1050 Ti、専用メモリ:4GB)では私の理想的なミニバッチ数を設定して実行するとOut of memoryとエラーが出てしまいます。そこで、新しいGPUを購入しようと考えているのですが、そのためにはモデルの学習に必要なGPU専用メモリの容量の計算方法を知らないと、どのGPUを買えばいいのか決めることが難しいため、困っております。上は、仮の設定です。

この質問は、活躍中のチエリアン・専門家に回答をリクエストしました。

閲覧数:
103
回答数:
1
お礼:
500枚

違反報告

ベストアンサーに選ばれた回答

木村優志さんの画像

専門家

木村優志さん

リクエストマッチ

2019/7/816:19:11

> モデルのパラメータの更新などの計算のためにも専用GPUメモリが使用されるからでしょうか?

バックプロパゲーションのために、計算グラフを保存します。

一般的に計算するのは使用するフレームワークによっても変わるので面倒です。VGG16 ぐらいであれば、 8GB あればだいたい利用できます。うまくいかない場合はミニバッチサイズを小さくしましょう。

この回答は投票によってベストアンサーに選ばれました!

回答した専門家

木村優志さんの画像

木村優志

AIコンサルタント

AI技術の普及に取り組むAIコンサルタント

Convergence Lab. 代表 博士(工学) ■AIコンサルティング ■AI研究開発 https://www.convergence-lab.com kimura@convergence-lab.com オウンドメディア: http://leiro.ai

この専門家がベストアンサーを獲得した回答

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる