質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.10%

ResourceExhaustedErrorの対処法

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 98

Seven_Sea

score 3

U-netによるセグメンテーションモデルを作成しているのですが、
バッチサイズが2より上にすると表題のエラーがでるようです。

画像サイズは256×256の画像が、200枚ずつ(教師データ200、元画像データ200)
Epochはとりあえず100
バッチサイズは2より上だと以下エラー。

バッチサイズを最低でも32くらいにならないのかなーって甘い期待をしてますが。
Quadroくらいだとこんなものなのでしょうか?
ソースをすべて載せないと、、、の場合は、載せますが、
載せていいものなのか、結構長くなりますので。
よろしくお願いいたします。

環境
Anaconda:Python3.6.10
GPU:QuadroK2200
tensorflow:2.1.0
keras:tensorflow内蔵
Cuda:10.1
CuDnn:7.6


ResourceExhaustedError:  OOM when allocating tensor with shape[4,256,256,128] and type float on /job:localhost/replica:0/task:0/device:GPU:0 by allocator GPU_0_bfc
[[node model_2/up_sampling2d_3/resize/ResizeNearestNeighbor (defined at <ipython-input-21-8137d3044e4b>:8) ]]
Hint: If you want to see a list of allocated tensors when OOM happens, add report_tensor_allocations_upon_oom to RunOptions for current allocation info.
[Op:__inference_distributed_function_58987]

Function call stack:
distributed_function


from tensorflow.python.client import device_lib
device_lib.list_local_devices()を作動させると以下のが表示されます。

[name: "/device:CPU:0"
device_type: "CPU"
memory_limit: 268435456
locality {
}
incarnation: 17687439948306646629,
name: "/device:GPU:0"
device_type: "GPU"
memory_limit: 4020043776
locality {
bus_id: 1
links {
}
}
incarnation: 17285787839147137086
physical_device_desc: "device: 0, name: Quadro P2200, pci bus id: 0000:21:00.0, compute capability: 6.1"]

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

4G だとメモリ不足ですね
入力サイズを (256, 256) より小さくすれば、メモリ使用量は減らせるとは思いますが、あまり小さいと精度に影響が出るかもしれません。

MNIST レベルなら 4G でも学習できますが、入力サイズがある程度大きい場合、4G で学習となると厳しいと思います。

メモリは最低 8G (RTX2070 以上の GPU) はほしいところですが、GPU を用意するのが難しいようであれば、無料で GPU が使える Web サービスである Google Colab を使うといいかもしれません。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2020/06/30 19:09

    例えばRTX2070SUPERくらいのGPUでやったとしたら
    ざっくりバッチサイズどのくらいにはできるものなのでしょうか?
    変えてもバッチサイズは2のままってことはありますか?

    キャンセル

  • 2020/06/30 19:20

    メモリ使用量はモデル構造、入力サイズ、バッチサイズに依存します。
    実際学習スクリプトを動かしてみて、nvidia-smi でメモリ使用量を確認する必要があるので、ここでバッチサイズはどのくらいまでなら載るかということは言えないです。
    例えば、Google Colab で割り当てられる GPU Tesla K80 で12Gまで使えるので、それでバッチサイズ32で動くかどうか確認してはどうでしょうか

    ちなみにバッチサイズは32ぐらいないといけないことはなく、4とかでも普通に学習は進むので、バッチサイズを大きくすることにそこまで拘る必要はないです。

    キャンセル

  • 2020/06/30 19:23

    > 2のままってことはありますか?

    2よりは大きくできるとは思いますが、どのくらい大きくできるかは試してみないとわからないです。

    キャンセル

  • 2020/07/01 19:07

    返答ありがとうございます。
    新たにPCを購入して、バッチサイズ2のままってなると、
    落ち込みが、、、、ひどいなって思って。
    返答を真摯に受け止めて精進します。
    ありがとうございました。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.10%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる