tenssor flow-gpuバージョンの使用問題と方法のまとめ
2274 ワード
tenssor flow-gpuバージョンの使用問題と方法のまとめトレーニングメモリオーバーフロー問題 問題説明 解決方法 kersasとtenssorflowが混在して使用されるとメモリオーバーフローが発生します.
batch_size設定により、tenssor flow-gpuの現存が を超えるようになりました. Tensorflow-GPUの現存エラー 解決方法 は、トレーニング中に発生した警告およびデバイス情報を無視する .
訓練メモリオーバーフロー問題
問題の説明
グラフィックカードは1660 ti-6 Gで、システムはUbuntu 16.04で、使用するtenssorflowバージョンは1.14です.ネットワークのトレーニングを行う時、tenssorflowはデフォルトではグラフィックカードの現像がいっぱいになります.その後、トレーニングネットワークには以下のようなエラーが発生することがあります.so try looking to see if a warning logs message was printesd above.
解決方法
この問題に対しては、人工的にプログラムに必要な現存を制限する必要があります.以下は2つの現存制限方式(現存適応成長と現存固定制限)に対して実現されるコードです.
batchsize設定により、tenssor flow-gpuの表示がオーバーしました.
Tensorflow-GPUの現存エラー
Hint:If you want to see a list of allocated tens when OOM happens,add report_tensor_allocations.アップロードoom to RunOptions for current allocation info.
解決方法
ネットワークのbatchを減らすsizeの値
トレーニング中に発生した警告とデバイス情報を無視する
訓練メモリオーバーフロー問題
問題の説明
グラフィックカードは1660 ti-6 Gで、システムはUbuntu 16.04で、使用するtenssorflowバージョンは1.14です.ネットワークのトレーニングを行う時、tenssorflowはデフォルトではグラフィックカードの現像がいっぱいになります.その後、トレーニングネットワークには以下のようなエラーが発生することがあります.so try looking to see if a warning logs message was printesd above.
解決方法
この問題に対しては、人工的にプログラムに必要な現存を制限する必要があります.以下は2つの現存制限方式(現存適応成長と現存固定制限)に対して実現されるコードです.
def gpu_memory_config(mode,ratio=1):
'''
# gpu config function for memory overflow
'''
config = tf.ConfigProto()
if(mode == "adaption"):
config.gpu_options.allow_growth = True
if(mode == "ratio"):
config.gpu_options.peper_process_gpu_memory_fraction = ratio
return config
上記のコードで現存配置方式の選択が完了し、Sessionを起動する時に設定します.config = gpu_memory_config(adaption)
with tf.Session(config = config) as :
......
kersasとtenssorflowを混ぜ合わせて使うとメモリが溢れ出す問題が発生します.import tensorflow as tf
from tensorflow import keras
import keras.backend.tensorflow_backend as KTF
// (adaption) (ratio)
model = *******
config = gpu_memory_config(mode)
session = tf.Session(config=config)
KTF.set_session(session)
tenssor flowのバックエンドによって、kersの現存が問題を超えた設定を行います.batchsize設定により、tenssor flow-gpuの表示がオーバーしました.
Tensorflow-GPUの現存エラー
Hint:If you want to see a list of allocated tens when OOM happens,add report_tensor_allocations.アップロードoom to RunOptions for current allocation info.
解決方法
ネットワークのbatchを減らすsizeの値
トレーニング中に発生した警告とデバイス情報を無視する
import os
import logging
import warnings
# TF_CPP_MIN_LOG_LEVEL = 1 // ,
# TF_CPP_MIN_LOG_LEVEL = 2 // error warining
# TF_CPP_MIN_LOG_LEVEL = 3 // error
os.environ["TF_CPP_MIN_LOG_LEVEL"] = "2"
warnings.filterwarnings("ignore")
logging.getLogger('tensorflow').setLevel(logging.ERROR)