programing

GPU에서 케라스 모델을 실행할 수 있습니까?

padding 2023. 7. 17. 20:42
반응형

GPU에서 케라스 모델을 실행할 수 있습니까?

Keras 모델을 실행하고 있는데, 제출 기한이 36시간인데, CPU에서 모델을 교육하면 50시간 정도 소요되는데, Keras를 GPU에서 실행할 수 있는 방법이 있나요?

저는 텐서플로 백엔드를 사용하고 있으며, 아콘다가 설치되지 않은 상태에서 주피터 노트북에서 실행하고 있습니다.

네, GPU에서 케라스 모델을 실행할 수 있습니다.먼저 확인해야 할 몇 가지 사항이 있습니다.

  1. 시스템에 GPU(Nvidia)가 있습니다.AMD가 아직 작동하지 않기 때문에)
  2. 텐서플로의 GPU 버전을 설치했습니다.
  3. CUDA 설치 지침을 설치했습니다.
  4. GPU에서 텐서 흐름이 실행 중인지 확인하여 GPU가 작동 인지 확인

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

TF > v2.0의 경우

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

(댓글에서 이 점을 지적해주신 @nbro와 @Ferro에게 감사드립니다)

OR

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

행운을 빌어요.

2.0 호환되는 답변:위에서 언급한 답변은 Keras 모델에서 GPU를 사용하는 방법에 대해 자세히 설명하지만, 저는 그것이 어떻게 수행될 수 있는지 설명하고 싶습니다.Tensorflow Version 2.0.

사용 가능한 GPU 수를 파악하려면 다음 코드를 사용할 수 있습니다.

print("Num GPUs Available: ", len(tf.config.experimental.list_physical_devices('GPU')))

작업 및 텐서가 할당된 장치를 확인하려면 다음을 수행합니다.tf.debugging.set_log_device_placement(True)프로그램의 첫 번째 설명으로 사용할 수 있습니다.

장치 배치 로깅을 활성화하면 텐서 할당 또는 작업이 인쇄됩니다.예를 들어, 다음 코드를 실행합니다.

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:0tf에서 opMatMul을 실행하고 있습니다.텐서([22.28.] [49.64.]), 모양=(2,2), dtype=tx32)

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

물론입니다. 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 소비 값을 줄일 수 있습니다.

물론이야.Tensorflow 또는 CNTk 백엔드에서 실행 중인 경우 코드는 기본적으로 GPU 장치에서 실행됩니다.하지만 테아노가 뒤로 물러서면 다음을 사용할 수 있습니다.

테오 플래그:

"THEANO_FLAGS=device=device=floatXfloatflo32 python my_keras_script.py"

저는 GTX 1660 슈퍼를 탑재한 윈도우 10의 아나콘다를 사용하고 있습니다.저는 이 단계를 따라 CUDA 환경을 먼저 설치했습니다.하지만 지금은 있습니다.keras-gpu사전에 CUDA 및 cuDNN 라이브러리를 설치할 필요가 없는 것처럼 보이는 아나콘다에서 사용할 수 있는 메타 패키지(어쨌든 내 것은 이미 설치되어 있음).

가 이이바제사가용수환전다니라는 이름의 데 .keras_gpu:

# need to downgrade from tensorflow 2.1 for my particular setup
conda create --name keras_gpu keras-gpu=2.3.1 tensorflow-gpu=2.0

@johncasey의 답변을 추가하지만 TensorFlow 2.0의 경우에는 이 블록을 추가하는 것이 나에게 효과적입니다.

import tensorflow as tf
from tensorflow.python.keras import backend as K

# adjust values to your needs
config = tf.compat.v1.ConfigProto( device_count = {'GPU': 1 , 'CPU': 8} )
sess = tf.compat.v1.Session(config=config) 
K.set_session(sess)

게시물은 다음을 해결했습니다.set_session오류가 발생했습니다. 텐서 흐름 경로에서 케라스 자체 대신 케라스 백엔드를 사용해야 합니다.

Tensorflow 2.5를 사용하여 @MonkeyBack의 답변을 기반으로 합니다.

conda create --name keras_gpu keras-gpu tensorflow-gpu

# should show GPU is available
python -c "import tensorflow as tf;print('GPUs Available:', tf.config.list_physical_devices('GPU'))"

작업 관리자에서 스크립트가 GPU를 실행하고 있는지 확인합니다.그렇지 않은 경우 다른 답변에서 이미 제시한 것처럼 CUDA 버전이 사용 중인 텐서플로 버전에 맞는 버전인지 의심하십시오.

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

언급URL : https://stackoverflow.com/questions/45662253/can-i-run-keras-model-on-gpu

반응형