コンテンツへスキップ

ChainerでGPUのOut of Memoryを回避 Unified Memory for Cuda

機械学習のトレーニング時に悩まされるメモリー不足

2019年8月個人向け深層学習・機械学習向けGPUの購入を考えたり、AlexeyAB / Darknet で独自学習(YOLO3 ,Tiny – YOLO 3)でもトレーニングパラメーターを調整したりして、メモリ不足を回避し学習を実施する必要があります。
Chainer利用時に、メモリ不足に困ったのですが、Unified Memoryという、CPUとGPUで共通のメモリ空間(=GPUメモリ+CPUメモリ)を使う方法です。
以下のパラメーターでOut of MemoryでNGとなった場合を考えると。
INPUT_WIDTH = 128
INPUT_HEIGHT = 128
GPU_ID = 0
BATCH_SIZE = 64
MAX_EPOCH = 20
BATCHI_SIZEを小さくして、Out of Memoryを回避して学習をすすめることも出来ます。
INPUT_WIDTH = 128
INPUT_HEIGHT = 128
GPU_ID = 0
BATCH_SIZE = 32
MAX_EPOCH = 20
または、GPUを利用せずにCPUで学習を進めることも出来ます。GPUを導入しているパソコンだと、メインメモリはそれなりの容量搭載されていると思います。
INPUT_WIDTH = 128
INPUT_HEIGHT = 128
GPU_ID = -1
BATCH_SIZE = 64
MAX_EPOCH = 20
#model.to_gpu(GPU_ID)

CPUとGPUメモリを合わせて利用 Unified Memory for CUDA

参考URL:

Unified Memoryとは、CPUとGPUで共通のメモリ空間(=GPUメモリ+CPUメモリ)を使う方法となります。
以下、エラーメッセージの例となります。

2 thoughts on “ChainerでGPUのOut of Memoryを回避 Unified Memory for Cuda

    1. miki

      GPUメモリとPCメインメモリを統合して利用するUnified Memoryが利用可能でした。
      Pythonスクリプトの先頭に、以下3行を追加したら、うまく動作さいました。

      import cupy as cp
      pool = cp.cuda.MemoryPool(cp.cuda.malloc_managed)
      cp.cuda.set_allocator(pool.malloc)

      返信

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA