tensorflow
TensorFlow GPUセットアップ
サーチ…
前書き
このトピックでは、TensorFlowでのGPUの設定と管理について説明します。
TensorFlowのGPUバージョンがインストールされていることを前提としています (GPUインストールの詳細については、 https: //www.tensorflow.org/install/を参照してください )。
また公式文書を見たいかもしれません: https : //www.tensorflow.org/tutorials/using_gpu
備考
主な情報源:
`CUDA_VISIBLE_DEVICES`環境変数を使用して、CPU上でのみTensorFlowを実行してください。
GPUバージョンTensorFlowプロセスがCPU上でのみ実行されるようにするには:
import os
os.environ["CUDA_VISIBLE_DEVICES"]="-1"
import tensorflow as tf
CUDA_VISIBLE_DEVICES
詳細については、この回答またはCUDAのドキュメントを参照してください 。
CPU上でTensorFlow Graphを実行する - `tf.config`を使用する
import tensorflow as tf
sess = tf.Session(config=tf.ConfigProto(device_count={'GPU': 0}))
このメソッドは、TensorFlowグラフがGPUを使用するのを防ぎますが、TensorFlowは、このメソッドで開かれたこの問題で説明されているように、GPUデバイスをロックします。 CUDA_VISIBLE_DEVICES
を使用することは、TensorFlowがGPUカードから遠ざけられるようにするための最良の方法です(この回答を参照)。
特定のGPUデバイスを使用する
特定のGPUデバイスセットを使用するには、 CUDA_VISIBLE_DEVICES
環境変数を使用できます。
import os
os.environ["CUDA_DEVICE_ORDER"]="PCI_BUS_ID" # see issue #152
os.environ["CUDA_VISIBLE_DEVICES"]="0" # Will use only the first GPU device
os.environ["CUDA_VISIBLE_DEVICES"]="0,3" # Will use only the first and the fourth GPU devices
ローカルプロセスでTensorFlowが利用可能なデバイスを一覧表示します。
from tensorflow.python.client import device_lib
print(device_lib.list_local_devices())
GPUのメモリ割り当てを制御する
デフォルトでは、TensorFlowはGPUカードのメモリ全体を事前に割り当てます( CUDA_OUT_OF_MEMORY
警告が発生する可能性がCUDA_OUT_OF_MEMORY
ます)。
これを変更するには、
per_process_gpu_memory_fraction
設定オプションを使用して、あらかじめ割り当てられているメモリの割合を変更し、0と1の間の値。
利用可能なGPUメモリを各プロセスにあらかじめ割り当てることができます。 1は意味する
すべてのGPUメモリを事前に割り当てるには、0.5はプロセスを意味します
使用可能なGPUメモリの約50%を割り当てます。allow_growth
設定オプションを使用して、事前割り当てを無効にします。メモリ使用量は、使用量が増えるにつれて増加します。trueの場合、アロケータは指定された全体を事前に割り当てません
代わりにGPUメモリ領域を小さくして、必要に応じて成長させてください。
例えば:
config = tf.ConfigProto()
config.gpu_options.per_process_gpu_memory_fraction = 0.4
sess = tf.Session(config=config) as sess:
または
config = tf.ConfigProto()
config.gpu_options.allow_growth = True
sess= tf.Session(config=config):
ここでの設定オプションの詳細。