ฉันสามารถรัน Keras model บน gpu ได้หรือไม่?


125

ฉันใช้โมเดล Keras โดยมีกำหนดส่ง 36 ชั่วโมงถ้าฉันฝึกโมเดลของฉันบน cpu จะใช้เวลาประมาณ 50 ชั่วโมงมีวิธีเรียกใช้ Keras บน gpu หรือไม่

ฉันใช้แบ็กเอนด์ Tensorflow และใช้งานบนสมุดบันทึก Jupyter โดยไม่ได้ติดตั้งอนาคอนดา


ฉันพบสิ่งนี้: medium.com/@kegui/… รู้สึกเหมือนมีคนอ่านคำถามที่ได้คะแนนสูงในช่องแคบ ๆ ที่นี่จากนั้นจึงสร้าง "คำตอบ" แบบเต็มในสื่อและสร้างรายได้จริงจากการดู
EngrStudent

สำหรับ AMD GPU ดูโพสต์นี้ stackoverflow.com/a/60016869/6117565
bikram

คำตอบ:


175

ใช่คุณสามารถเรียกใช้โมเดล Keras บน GPU ได้ บางสิ่งที่คุณจะต้องตรวจสอบก่อน

  1. ระบบของคุณมี GPU (Nvidia เนื่องจาก AMD ยังไม่ทำงาน)
  2. คุณได้ติดตั้งเทนเซอร์โฟลว์เวอร์ชัน GPU แล้ว
  3. คุณได้ติดตั้งคำแนะนำในการติดตั้ง CUDA
  4. ตรวจสอบว่าเทนเซอร์โฟลว์ทำงานด้วย GPU ตรวจสอบว่า 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 จะไม่ทำงาน?
Ryan

ไม่จำเป็น. TF ทำงานร่วมกับ 2.7 และ 3.5 ทั้งคู่ เลือกเวอร์ชันที่ถูกต้องของ TF นั่นแหล่ะ
Vikash Singh

ไม่เป็นไรไปกับ 2.7 ปัญหาที่ไม่พึงประสงค์ในการติดตั้ง 3.5
Ryan

ฉันได้รับข้อผิดพลาดนี้ -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
nbro

21

แน่ใจ ฉันคิดว่าคุณได้ติดตั้ง TensorFlow สำหรับ GPU แล้ว

คุณต้องเพิ่มบล็อกต่อไปนี้หลังจากนำเข้า keras ฉันกำลังทำงานกับเครื่องที่มี CPU 56 core และ 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 คำตอบที่เข้ากันได้ : ในขณะที่คำตอบที่กล่าวถึงข้างต้นอธิบายรายละเอียดเกี่ยวกับวิธีการใช้ GPU บน Keras Model ฉันต้องการอธิบายว่าสามารถทำได้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)

ให้ผลลัพธ์ที่แสดงด้านล่าง:

การดำเนินการ op MatMul ในอุปกรณ์ / งาน: 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 = อุปกรณ์ = gpu, floatX = float32 python my_keras_script.py"


0

ดูว่าสคริปต์ของคุณกำลังเรียกใช้ GPU ในตัวจัดการงานหรือไม่ หากไม่เป็นเช่นนั้นให้สงสัยว่าเวอร์ชัน CUDA ของคุณเป็นเวอร์ชันที่ถูกต้องสำหรับเวอร์ชันเทนเซอร์โฟลว์ที่คุณใช้เนื่องจากคำตอบอื่น ๆ ที่แนะนำไปแล้ว

นอกจากนี้จำเป็นต้องมีไลบรารี CUDA DNN ที่เหมาะสมสำหรับเวอร์ชัน CUDA เพื่อเรียกใช้ GPU ด้วยเทนเซอร์โฟลว์ ดาวน์โหลด / แตกไฟล์จากที่นี่และใส่ 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.