Ubuntu 14.04にGPUバージョンのtensorflowをインストールしました。
tensorflowが使用可能なGPUにアクセスできるGPUサーバーを使用しています。
CPUでテンソルフローを実行したい。
通常、私はenv CUDA_VISIBLE_DEVICES=0
GPU noで実行するために使用できます。0。
代わりにどのようにCPUを選択できますか?
私は自分のコードを書き換えることに興味がありません with tf.device("/cpu:0"):
Ubuntu 14.04にGPUバージョンのtensorflowをインストールしました。
tensorflowが使用可能なGPUにアクセスできるGPUサーバーを使用しています。
CPUでテンソルフローを実行したい。
通常、私はenv CUDA_VISIBLE_DEVICES=0
GPU noで実行するために使用できます。0。
代わりにどのようにCPUを選択できますか?
私は自分のコードを書き換えることに興味がありません with tf.device("/cpu:0"):
回答:
次のようにdevice_count
パラメータを適用できますtf.Session
。
config = tf.ConfigProto(
device_count = {'GPU': 0}
)
sess = tf.Session(config=config)
protobuf構成ファイルも参照してください。
CUDA_VISIBLE_DEVICES
コード内の構成を変更するよりも、環境変数を使用する方が良いのではないですか?
環境変数を次のように設定することもできます
CUDA_VISIBLE_DEVICES=""
ソースコードを変更する必要はありません。
上記の回答が機能しない場合は、以下を試してください。
os.environ['CUDA_VISIBLE_DEVICES'] = '-1'
tf.keras.Sequential
モデルを使用する場合、tf 2.Xでも機能します。
私にとっては、CUDA_VISIBLE_DEVICES
正確に-1
機能するように設定するだけです:
作品:
import os
import tensorflow as tf
os.environ['CUDA_VISIBLE_DEVICES'] = '-1'
if tf.test.gpu_device_name():
print('GPU found')
else:
print("No GPU found")
# No GPU found
動作しません:
import os
import tensorflow as tf
os.environ['CUDA_VISIBLE_DEVICES'] = ''
if tf.test.gpu_device_name():
print('GPU found')
else:
print("No GPU found")
# GPU found
使用できますtf.config.set_visible_devices
。使用するGPUを設定できる1つの機能は次のとおりです。
import tensorflow as tf
def set_gpu(gpu_ids_list):
gpus = tf.config.list_physical_devices('GPU')
if gpus:
try:
gpus_used = [gpus[i] for i in gpu_ids_list]
tf.config.set_visible_devices(gpus_used, 'GPU')
logical_gpus = tf.config.experimental.list_logical_devices('GPU')
print(len(gpus), "Physical GPUs,", len(logical_gpus), "Logical GPU")
except RuntimeError as e:
# Visible devices must be set before GPUs have been initialized
print(e)
あなたが4 GPUを搭載したシステム上にあると仮定して、2つだけのGPU、とのいずれかを使用したいid = 0
として1 id = 2
、あなたのコードの最初のコマンドを、すぐにライブラリをインポートした後、次のようになります。
set_gpu([0, 2])
あなたの場合、CPUのみを使用するには、空のリストで関数を呼び出すことができます。
set_gpu([])
完全を期すために、ランタイム初期化によってデバイス上のすべてのメモリが割り当てられるのを避けたい場合は、を使用できますtf.config.experimental.set_memory_growth
。最後に、GPUメモリを動的に使用する、使用するデバイスを管理する関数は、次のようになります。
import tensorflow as tf
def set_gpu(gpu_ids_list):
gpus = tf.config.list_physical_devices('GPU')
if gpus:
try:
gpus_used = [gpus[i] for i in gpu_ids_list]
tf.config.set_visible_devices(gpus_used, 'GPU')
for gpu in gpus_used:
tf.config.experimental.set_memory_growth(gpu, True)
logical_gpus = tf.config.experimental.list_logical_devices('GPU')
print(len(gpus), "Physical GPUs,", len(logical_gpus), "Logical GPU")
except RuntimeError as e:
# Visible devices must be set before GPUs have been initialized
print(e)
インストールレベルで考えられる別の解決策は、CPUのみのバリアントを探すことです。 https //www.tensorflow.org/install/pip#package-location
私の場合、これは今与えます:
pip3 install https://storage.googleapis.com/tensorflow/windows/cpu/tensorflow_cpu-2.2.0-cp38-cp38-win_amd64.whl
正しいバージョンを選択してください。たとえばこの回答で説明されているようなvenvを使用することのボーナスポイント。