Bisakah saya menjalankan model Keras di GPU?

125

Saya menjalankan model Keras, dengan batas waktu pengiriman 36 jam, jika saya melatih model saya di cpu akan memakan waktu kurang lebih 50 jam, apakah ada cara untuk menjalankan Keras di gpu?

Saya menggunakan backend Tensorflow dan menjalankannya di notebook Jupyter, tanpa menginstal anaconda.

Ryan
sumber
Saya menemukan ini: medium.com/@kegui/… Rasanya seperti seseorang dapat membaca dengan teliti pertanyaan berperingkat tinggi di bidang sempit di sini, dan kemudian membuat "jawaban" lengkap di Medium, dan menghasilkan uang yang sebenarnya dari penayangan.
EngrStudent
Untuk AMD GPU. Lihat posting ini. stackoverflow.com/a/60016869/6117565
bikram

Jawaban:

175

Ya, Anda dapat menjalankan model keras pada GPU. Beberapa hal yang harus Anda periksa terlebih dahulu.

  1. sistem Anda memiliki GPU (Nvidia. Karena AMD belum berfungsi)
  2. Anda telah menginstal tensorflow versi GPU
  3. Anda telah menginstal instruksi instalasi CUDA
  4. Verifikasi bahwa tensorflow berjalan dengan GPU, periksa apakah GPU berfungsi

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

ATAU

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

keluarannya akan menjadi seperti ini:

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

Setelah semua ini selesai, model Anda akan berjalan di GPU:

Untuk memeriksa apakah keras (> = 2.1.1) menggunakan GPU:

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

Semua yang terbaik.

Vikash Singh
sumber
saya harus menginstal python 3.5 untuk hak ini? kalau tidak tensorflow tidak akan berfungsi?
Ryan
Tidak perlu. TF bekerja dengan 2,7 dan 3,5 keduanya. Pilih versi TF yang benar itu saja.
Vikash Singh
baiklah, sakit pergi dengan 2.7, masalah navigasi dengan menginstal 3.5
Ryan
Saya mendapatkan Kesalahan ini -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()tidak berfungsi di TensorFlow 2.0.
nbro
21

Tentu. Saya kira Anda telah menginstal TensorFlow untuk GPU.

Anda perlu menambahkan blok berikut setelah mengimpor keras. Saya sedang mengerjakan mesin yang memiliki 56 core cpu, dan sebuah 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)

Tentu saja, penggunaan ini memberlakukan batas maksimum mesin saya. Anda dapat menurunkan nilai konsumsi cpu dan gpu.

johncasey
sumber
1
Kesalahanmodule 'tensorflow' has no attribute 'ConfigProto'
Divyanshu Srivastava
Anda menggunakan tensorflow 2? Saya mengujinya untuk tf 1.X.
johncasey
13

2.0 Jawaban yang Kompatibel : Sementara jawaban yang disebutkan di atas menjelaskan secara rinci tentang cara menggunakan GPU pada Model Keras, saya ingin menjelaskan bagaimana hal itu dapat dilakukan Tensorflow Version 2.0.

Untuk mengetahui berapa banyak GPU yang tersedia, kita dapat menggunakan kode di bawah ini:

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

Untuk mengetahui perangkat mana yang menetapkan operasi dan tensor Anda, letakkan tf.debugging.set_log_device_placement(True)sebagai pernyataan pertama program Anda.

Mengaktifkan pencatatan penempatan perangkat menyebabkan semua alokasi atau operasi Tensor dicetak. Misalnya, menjalankan kode di bawah ini:

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)

memberikan Output yang ditunjukkan di bawah ini:

Menjalankan op MatMul di perangkat / pekerjaan: localhost / replika: 0 / tugas: 0 / perangkat: GPU: 0 tf.Tensor ([[22. 28.] [49. 64.]], bentuk = (2, 2), dtype = float32)

Untuk informasi lebih lanjut, lihat tautan ini

Dukungan Tensorflow
sumber
1

Tentu saja. jika Anda menjalankan di backend Tensorflow atau CNTk, kode Anda akan berjalan di perangkat GPU Anda secara default. Tetapi jika Theano backend, Anda dapat menggunakan

Bendera Theano:

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

Kevin Jarvis
sumber
0

Lihat apakah skrip Anda menjalankan GPU di Manajer tugas. Jika tidak, curiga versi CUDA Anda benar untuk versi tensorflow yang Anda gunakan, seperti yang sudah disarankan oleh jawaban lain.

Selain itu, pustaka DNN CUDA yang tepat untuk versi CUDA diperlukan untuk menjalankan GPU dengan tensorflow. Unduh / ekstrak dari sini dan letakkan DLL (mis., Cudnn64_7.dll) ke dalam folder bin CUDA (mis., C: \ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v10.1 \ bin).

Tae-Sung Shin
sumber