実現したいこと
「ランタイムを再起動」をせずに繰り返し色々なモデルを学習させたい。
前提
画像分類タスクを行いたく、google Colaboratoryにてtensorflowを使ってニューラルネットワークを実装しようとしています。
使用言語はPythonです。
コードを実行していくとシステムRAMが激しく消費され、すぐに上限の12.7GBを超えてセッションがクラッシュしてしまいます。
1回分の学習はできますが、パラメータ探索のために、「ランタイムを再起動」で毎回リセットせずとも連続の学習ができるように、メモリの節約や解放の手段が必要だと考えています。
発生している問題・エラーメッセージ
システムRAMが急激に消費されるポイントがいくつかあります。それぞれでメモリの節約や解放の方法があれば教えて頂きたいです。
①学習データをマウントしているgoogle Driveから読み込む
ここで2.8GB使っています。この学習データはnumpyのndarray配列であり予めnpz形式で保存しているものです。数千枚の130KB程度の画像が入っていてX_train.npzのサイズは400MBです。400MBの読み込みで7倍メモリを使うものなのか理解できず…。
Python
1import numpy as np 2X_train = np.load('/content/drive/MyDrive/X_train.npz')['arr_0']
②定義したモデルで学習を行う
モデルの中身で変動しますが3GB前後使います。全結合層や畳み込み層が3層くらいでパラメータのサイズは400KB~10MBです。一回の学習でこれくらい使うのはまあ良いとして、modelを再定義し最初から学習しても消費した分は戻らず増加する一方です。
Python
1epochs = 10 2batch_size = 32 3result = model.fit(tr_x,tr_y, epochs=epochs, batch_size=batch_size, validation_data=(va_x,va_y))
試したこと
②については不要になった段階でmodelやresultを削除すれば良いのでは?と思い、ネットで検索し使えそうな以下のコードを実行してみましたが、システムRAMは減りませんでした。
Python
1del model, result 2keras.backend.clear_session() 3import gc 4gc.collect()
補足情報(FW/ツールのバージョンなど)
google Colabは無料版で、ハードウェアアクセラレータはT4 GPUを選択しています。
回答1件
あなたの回答
tips
プレビュー