제출 기한이 36 시간 인 Keras 모델을 실행 중입니다. CPU에서 모델을 훈련하면 약 50 시간이 걸립니다. GPU에서 Keras를 실행할 수있는 방법이 있습니까?
Tensorflow 백엔드를 사용하고 있으며 아나콘다를 설치하지 않고 Jupyter 노트북에서 실행하고 있습니다.
제출 기한이 36 시간 인 Keras 모델을 실행 중입니다. CPU에서 모델을 훈련하면 약 50 시간이 걸립니다. GPU에서 Keras를 실행할 수있는 방법이 있습니까?
Tensorflow 백엔드를 사용하고 있으며 아나콘다를 설치하지 않고 Jupyter 노트북에서 실행하고 있습니다.
답변:
예, GPU에서 keras 모델을 실행할 수 있습니다. 먼저 확인해야 할 사항이 거의 없습니다.
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
또는
from tensorflow.python.client import device_lib
print(device_lib.list_local_devices())
출력은 다음과 같습니다.
[
name: "/cpu:0"device_type: "CPU",
name: "/gpu:0"device_type: "GPU"
]
이 모든 작업이 완료되면 모델이 GPU에서 실행됩니다.
keras (> = 2.1.1)이 GPU를 사용하고 있는지 확인하려면 :
from keras import backend as K
K.tensorflow_backend._get_available_gpus()
모두 제일 좋다.
Could not find any downloads that satisfy the requirement tensorflow in /usr/local/lib/python2.7/dist-packages Downloading/unpacking tensorflow Cleaning up... No distributions at all found for tensorflow in /usr/local/lib/python2.7/dist-packages Storing debug log for failure in /home/hyperworks/.pip/pip.log
K.tensorflow_backend._get_available_gpus()
TensorFlow 2.0에서는 작동하지 않습니다.
확실한. GPU 용 TensorFlow를 이미 설치했다고 가정합니다.
케라를 가져온 후 다음 블록을 추가해야합니다. 56 코어 CPU와 GPU가있는 컴퓨터에서 작업 중입니다.
import keras
import tensorflow as tf
config = tf.ConfigProto( device_count = {'GPU': 1 , 'CPU': 56} )
sess = tf.Session(config=config)
keras.backend.set_session(sess)
물론이 사용은 내 컴퓨터의 최대 제한을 적용합니다. CPU 및 GPU 소비 값을 줄일 수 있습니다.
module 'tensorflow' has no attribute 'ConfigProto'
2.0 호환 답변 : 위에서 언급 한 답변은 Keras Model에서 GPU를 사용하는 방법에 대해 자세히 설명하지만 .NET에서 어떻게 할 수 있는지 설명하고 싶습니다 Tensorflow Version 2.0
.
사용 가능한 GPU 수를 확인하려면 아래 코드를 사용할 수 있습니다.
print("Num GPUs Available: ", len(tf.config.experimental.list_physical_devices('GPU')))
작업 및 텐서가 할당 된 장치를 찾으 tf.debugging.set_log_device_placement(True)
려면 프로그램의 첫 번째 문을 입력하십시오.
장치 배치 로깅을 활성화하면 Tensor 할당 또는 작업이 인쇄됩니다. 예를 들어 아래 코드를 실행합니다.
tf.debugging.set_log_device_placement(True)
# Create some tensors
a = tf.constant([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]])
b = tf.constant([[1.0, 2.0], [3.0, 4.0], [5.0, 6.0]])
c = tf.matmul(a, b)
print(c)
아래에 표시된 출력을 제공합니다.
장치 / job : localhost / replica : 0 / task : 0 / device : GPU : 0 tf.Tensor ([[22. 28.] [49. 64.]], shape = (2, 2), dtype = float32)
자세한 내용은 이 링크를 참조하십시오.
스크립트가 작업 관리자에서 GPU를 실행 중인지 확인합니다. 그렇지 않은 경우 CUDA 버전이 이미 제안 된 다른 답변과 같이 사용중인 tensorflow 버전에 맞는 것으로 의심됩니다.
또한 텐서 플로우로 GPU를 실행하려면 CUDA 버전에 적합한 CUDA DNN 라이브러리가 필요합니다. 여기 에서 다운로드 / 추출 하고 DLL (예 : cudnn64_7.dll)을 CUDA bin 폴더 (예 : C : \ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v10.1 \ bin)에 넣습니다.