サーチ…


前書き

このトピックでは、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

(この回答から引用、CUDA環境変数の詳細はこちら

ローカルプロセスで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):

ここでの設定オプションの詳細。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow