Keras 모델을 GPU에서 실행할 수 있습니까?


125

제출 기한이 36 시간 인 Keras 모델을 실행 중입니다. CPU에서 모델을 훈련하면 약 50 시간이 걸립니다. GPU에서 Keras를 실행할 수있는 방법이 있습니까?

Tensorflow 백엔드를 사용하고 있으며 아나콘다를 설치하지 않고 Jupyter 노트북에서 실행하고 있습니다.


나는 이것을 발견했다 : medium.com/@kegui/… 여기 좁은 분야에서 높은 평가를받은 질문을 정독 한 다음, Medium에 대해 완전한 "답변"을하고, 조회수를 통해 실제 돈을 벌 수있는 것 같다.
EngrStudent

AMD GPU 용. 이 게시물을 참조하십시오. stackoverflow.com/a/60016869/6117565
bikram

답변:


175

예, GPU에서 keras 모델을 실행할 수 있습니다. 먼저 확인해야 할 사항이 거의 없습니다.

  1. 시스템에 GPU가 있습니다 (Nvidia. AMD는 아직 작동하지 않으므로)
  2. Tensorflow의 GPU 버전을 설치했습니다.
  3. CUDA 설치 지침을 설치했습니다.
  4. GPU가 작동 하는지 확인하여 Tensorflow가 GPU로 실행 중인지 확인

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()

모두 제일 좋다.


이 권리를 위해 Python 3.5를 설치해야합니까? 그렇지 않으면 tensorflow가 작동하지 않습니까?
라이언

필요하지 않습니다. TF는 2.7 및 3.5 모두에서 작동합니다. TF의 올바른 버전을 선택했습니다.
Vikash Singh

괜찮아, 병 3.5 설치 2.7, havig 문제를 이동
라이언

나는이 오류를 얻을 -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
라이언

12
K.tensorflow_backend._get_available_gpus()TensorFlow 2.0에서는 작동하지 않습니다.
nbro

21

확실한. 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 소비 값을 줄일 수 있습니다.


1
오류module 'tensorflow' has no attribute 'ConfigProto'
Divyanshu Srivastava

tensorflow 2를 사용하고 있습니까? tf 1.X에 대해 테스트했습니다.
johncasey

13

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)

자세한 내용은 이 링크를 참조하십시오.


1

물론이야. Tensorflow 또는 CNTk 백엔드에서 실행중인 경우 코드는 기본적으로 GPU 장치에서 실행되지만 Theano 백엔드 인 경우 다음을 사용할 수 있습니다.

Theano 플래그 :

"THEANO_FLAGS = device = gpu, floatX = float32 python my_keras_script.py"


0

스크립트가 작업 관리자에서 GPU를 실행 중인지 확인합니다. 그렇지 않은 경우 CUDA 버전이 이미 제안 된 다른 답변과 같이 사용중인 tensorflow 버전에 맞는 것으로 의심됩니다.

또한 텐서 플로우로 GPU를 실행하려면 CUDA 버전에 적합한 CUDA DNN 라이브러리가 필요합니다. 여기 에서 다운로드 / 추출 하고 DLL (예 : cudnn64_7.dll)을 CUDA bin 폴더 (예 : C : \ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v10.1 \ bin)에 넣습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.