[python] 파이썬 셸 내부에서 tensorflow가 GPU 가속을 사용하고 있는지 확인하는 방법은 무엇입니까?

나는 두 번째 대답을 사용하여 내 우분투 16.04에 tensorflow 설치 여기 우분투 APT CUDA 설치 내장의와 함께.

이제 내 질문은 tensorflow가 실제로 GPU를 사용하는지 어떻게 테스트 할 수 있습니까? 나는 gtx 960m GPU를 가지고 있습니다. 내가 import tensorflow이것이 출력

I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcublas.so locally
I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcudnn.so locally
I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcufft.so locally
I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcuda.so.1 locally
I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcurand.so locally

이 출력이 tensorflow가 gpu를 사용하고 있는지 확인하기에 충분합니까?



답변

아니요, 그래프의 다른 노드가 다른 장치에있을 수 있기 때문에 “open CUDA 라이브러리”만으로는 충분하지 않다고 생각합니다.

어떤 장치가 사용되는지 확인하려면 다음과 같이 로그 장치 배치를 활성화하십시오.

sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))

이 유형의 출력에 대해서는 콘솔을 확인하십시오.


답변

sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))공식 TensorFlow 문서 뿐만 아니라 다른 답변에 요약 된 것을 사용 하는 것 외에도 GPU에 계산을 할당하고 오류가 있는지 확인할 수 있습니다.

import tensorflow as tf
with tf.device('/gpu:0'):
    a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')
    b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')
    c = tf.matmul(a, b)

with tf.Session() as sess:
    print (sess.run(c))

여기

  • “/ cpu : 0”: 컴퓨터의 CPU.
  • “/ gpu : 0”: 컴퓨터의 GPU (있는 경우).

GPU를 가지고 있고 사용할 수 있다면 결과가 나타납니다. 그렇지 않으면 긴 스택 추적에 오류가 표시됩니다. 결국 당신은 다음과 같은 것을 가질 것입니다 :

‘MatMul’노드에 장치를 할당 할 수 없음 :이 프로세스에 해당 사양과 일치하는 장치가 등록되어 있지 않으므로 명시 적 장치 사양 ‘/ device : GPU : 0’을 충족 할 수 없습니다


최근 몇 가지 유용한 기능이 TF에 나타났습니다.

세션에서 사용 가능한 장치를 확인할 수도 있습니다.

with tf.Session() as sess:
  devices = sess.list_devices()

devices 당신에게 뭔가를 반환합니다

[_DeviceAttributes(/job:tpu_worker/replica:0/task:0/device:CPU:0, CPU, -1, 4670268618893924978),
 _DeviceAttributes(/job:tpu_worker/replica:0/task:0/device:XLA_CPU:0, XLA_CPU, 17179869184, 6127825144471676437),
 _DeviceAttributes(/job:tpu_worker/replica:0/task:0/device:XLA_GPU:0, XLA_GPU, 17179869184, 16148453971365832732),
 _DeviceAttributes(/job:tpu_worker/replica:0/task:0/device:TPU:0, TPU, 17179869184, 10003582050679337480),
 _DeviceAttributes(/job:tpu_worker/replica:0/task:0/device:TPU:1, TPU, 17179869184, 5678397037036584928)


답변

다음 코드는 tensorflow에 사용 가능한 모든 장치를 제공해야합니다.

from tensorflow.python.client import device_lib
print(device_lib.list_local_devices())

샘플 출력

[name : “/ cpu : 0″device_type : “CPU”memory_limit : 268435456 locality {} 화신 : 4402277519343584096,

이름 : “/ gpu : 0″device_type : “GPU”memory_limit : 6772842168 locality {bus_id : 1} 화신 : 7471795903849088328 physical_device_desc : “장치 : 0, 이름 : GeForce GTX 1070, pci 버스 ID : 0000 : 05 : 00.0”]


답변

나는 이것을 달성하는 더 쉬운 방법이 있다고 생각합니다.

import tensorflow as tf
if tf.test.gpu_device_name():
    print('Default GPU Device: {}'.format(tf.test.gpu_device_name()))
else:
    print("Please install GPU version of TF")

일반적으로 다음과 같이 인쇄됩니다.

Default GPU Device: /device:GPU:0

자세한 로그보다 나에게 더 쉬운 것처럼 보입니다.


답변

텐서 플로우 2.0

세션은 더 이상 2.0에서 사용되지 않습니다. 대신 다음을 사용할 수 있습니다 tf.test.is_gpu_available.

import tensorflow as tf

assert tf.test.is_gpu_available()
assert tf.test.is_built_with_cuda()

오류가 발생하면 설치를 확인해야합니다.


답변

이것은 훈련하면서 GPU를 사용하는 tensorflow를 확인합니다.

암호

sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))

산출

I tensorflow/core/common_runtime/gpu/gpu_device.cc:885] Found device 0 with properties:
name: GeForce GT 730
major: 3 minor: 5 memoryClockRate (GHz) 0.9015
pciBusID 0000:01:00.0
Total memory: 1.98GiB
Free memory: 1.72GiB
I tensorflow/core/common_runtime/gpu/gpu_device.cc:906] DMA: 0
I tensorflow/core/common_runtime/gpu/gpu_device.cc:916] 0:   Y
I tensorflow/core/common_runtime/gpu/gpu_device.cc:975] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GT 730, pci bus id: 0000:01:00.0)
Device mapping:
/job:localhost/replica:0/task:0/gpu:0 -> device: 0, name: GeForce GT 730, pci bus id: 0000:01:00.0
I tensorflow/core/common_runtime/direct_session.cc:255] Device mapping:
/job:localhost/replica:0/task:0/gpu:0 -> device: 0, name: GeForce GT 730, pci bus id: 0000:01:00.0


답변

다른 답변 외에도 다음은 텐서 플로우 버전에 GPU 지원이 포함되어 있는지 확인하는 데 도움이됩니다.

import tensorflow as tf
print(tf.test.is_built_with_cuda())