ฉันใช้โมเดล Keras โดยมีกำหนดส่ง 36 ชั่วโมงถ้าฉันฝึกโมเดลของฉันบน cpu จะใช้เวลาประมาณ 50 ชั่วโมงมีวิธีเรียกใช้ Keras บน gpu หรือไม่
ฉันใช้แบ็กเอนด์ Tensorflow และใช้งานบนสมุดบันทึก Jupyter โดยไม่ได้ติดตั้งอนาคอนดา
ฉันใช้โมเดล Keras โดยมีกำหนดส่ง 36 ชั่วโมงถ้าฉันฝึกโมเดลของฉันบน cpu จะใช้เวลาประมาณ 50 ชั่วโมงมีวิธีเรียกใช้ Keras บน gpu หรือไม่
ฉันใช้แบ็กเอนด์ Tensorflow และใช้งานบนสมุดบันทึก Jupyter โดยไม่ได้ติดตั้งอนาคอนดา
คำตอบ:
ใช่คุณสามารถเรียกใช้โมเดล Keras บน 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()
สิ่งที่ดีที่สุด
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
แน่ใจ ฉันคิดว่าคุณได้ติดตั้ง 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
module 'tensorflow' has no attribute 'ConfigProto'
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)
สำหรับข้อมูลเพิ่มเติมโปรดดูที่ลิงค์นี้
แน่นอน. หากคุณใช้งาน Tensorflow หรือ CNTk แบ็กเอนด์โค้ดของคุณจะทำงานบนอุปกรณ์ GPU ของคุณเป็นค่าเริ่มต้น แต่ถ้า Theano แบ็กเอนด์คุณสามารถใช้สิ่งต่อไปนี้
ธง Theano:
"THEANO_FLAGS = อุปกรณ์ = gpu, floatX = float32 python my_keras_script.py"
ดูว่าสคริปต์ของคุณกำลังเรียกใช้ GPU ในตัวจัดการงานหรือไม่ หากไม่เป็นเช่นนั้นให้สงสัยว่าเวอร์ชัน CUDA ของคุณเป็นเวอร์ชันที่ถูกต้องสำหรับเวอร์ชันเทนเซอร์โฟลว์ที่คุณใช้เนื่องจากคำตอบอื่น ๆ ที่แนะนำไปแล้ว
นอกจากนี้จำเป็นต้องมีไลบรารี CUDA DNN ที่เหมาะสมสำหรับเวอร์ชัน CUDA เพื่อเรียกใช้ GPU ด้วยเทนเซอร์โฟลว์ ดาวน์โหลด / แตกไฟล์จากที่นี่และใส่ DLL (เช่น cudnn64_7.dll) ลงในโฟลเดอร์ CUDA bin (เช่น C: \ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v10.1 \ bin)