Keras modelini gpu üzerinde çalıştırabilir miyim?


125

Son teslim tarihi 36 saat olan bir Keras modeli çalıştırıyorum, modelimi cpu üzerinde eğitirsem yaklaşık 50 saat sürecek, Keras'ı gpu'da çalıştırmanın bir yolu var mı?

Tensorflow arka ucunu kullanıyorum ve Jupyter dizüstü bilgisayarımda anaconda kurulu olmadan çalıştırıyorum.


Bunu buldum: medium.com/@kegui/… Buradaki dar bir alanda yüksek puan alan soruları inceleyip, ardından Medium'da tam bir "yanıt" alabilir ve görüntülemelerden gerçek para kazanabilirmişsiniz gibi geliyor.
EngrStudent

AMD GPU için. Bu gönderiye bakın. stackoverflow.com/a/60016869/6117565
bikram

Yanıtlar:


175

Evet, GPU'da keras modellerini çalıştırabilirsiniz. Önce kontrol etmeniz gereken birkaç şey var.

  1. sisteminizde GPU var (Nvidia. AMD henüz çalışmadığı için)
  2. Tensorflow'un GPU sürümünü kurdunuz
  3. CUDA kurulum talimatlarını kurdunuz
  4. Tensorflow'un GPU'nun çalışıp çalışmadığını kontrol ederek çalıştığını doğrulayın

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

VEYA

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

çıktı şöyle bir şey olacaktır:

[
  name: "/cpu:0"device_type: "CPU",
  name: "/gpu:0"device_type: "GPU"
]

Tüm bunlar yapıldıktan sonra modeliniz GPU üzerinde çalışacaktır:

Keras'ın (> = 2.1.1) GPU kullanıp kullanmadığını kontrol etmek için:

from keras import backend as K
K.tensorflow_backend._get_available_gpus()

Herşey gönlünce olsun.


Bunun için python 3.5 yüklemem gerekecek mi? yoksa tensorflow çalışmayacak mı?
Ryan

Gerekli değil. TF hem 2.7 hem de 3.5 ile çalışır. TF'nin doğru sürümünü seçin işte bu.
Vikash Singh

peki, 2.7 ile iyi git, 3.5'i yüklemeyle ilgili sorunlar var
Ryan

Bu Hatayı alıyorum -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
Ryan

12
K.tensorflow_backend._get_available_gpus()TensorFlow 2.0'da çalışmaz.
nbro

21

Elbette. Sanırım GPU için TensorFlow'u zaten yüklediniz.

Keras'ı içe aktardıktan sonra aşağıdaki bloğu eklemeniz gerekir. 56 çekirdekli işlemci ve bir gpu olan bir makine üzerinde çalışıyorum.

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)

Elbette, bu kullanım makinelerimin maksimum limitlerini zorluyor. Cpu ve gpu tüketim değerlerini düşürebilirsiniz.


1
Hatamodule 'tensorflow' has no attribute 'ConfigProto'
Divyanshu Srivastava

Tensorflow 2 kullanıyor musunuz? Tf 1.X için test ettim.
johncasey

13

2.0 Uyumlu Cevap : Yukarıda belirtilen cevap, Keras Modelinde GPU'nun nasıl kullanılacağını ayrıntılı olarak açıklarken, bunun için nasıl yapılabileceğini açıklamak istiyorum.Tensorflow Version 2.0 .

Kaç tane GPU'nun mevcut olduğunu öğrenmek için aşağıdaki kodu kullanabiliriz:

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

İşlemlerinizin ve tensörlerin hangi cihazlara atandığını tf.debugging.set_log_device_placement(True)öğrenmek için programınızın ilk ifadesi olarak koyun .

Aygıt yerleştirme günlüğünün etkinleştirilmesi, tüm Tensor tahsislerinin veya işlemlerinin yazdırılmasına neden olur. Örneğin, aşağıdaki kodu çalıştırmak:

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)

aşağıda gösterilen Çıkışı verir:

Aygıtta / işte MatMul çalıştırma: localhost / replica: 0 / task: 0 / device: GPU: 0 tf.Tensor ([[22. 28.] [49. 64.]], şekil = (2, 2), d_type = float32)

Daha fazla bilgi için bu bağlantıya bakın


1

Elbette. Tensorflow veya CNTk arka uçlarında çalıştırıyorsanız, kodunuz varsayılan olarak GPU cihazlarınızda çalışacaktır ancak Theano arka uçları ise aşağıdakileri kullanabilirsiniz

Theano bayrakları:

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


0

Komut dosyanızın Görev yöneticisinde GPU çalıştırıp çalıştırmadığına bakın. Değilse, CUDA sürümünüzün kullandığınız tensorflow sürümü için doğru olduğundan şüphelenin, çünkü diğer yanıtlar zaten önerilmektedir.

Ek olarak, GPU'yu tensorflow ile çalıştırmak için CUDA sürümü için uygun bir CUDA DNN kitaplığı gerekir. Buradan indirin / çıkarın ve DLL'yi (örneğin, cudnn64_7.dll) CUDA bin klasörüne koyun (örneğin, C: \ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v10.1 \ bin).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.