Saya bekerja di lingkungan di mana sumber daya komputasi dibagi, yaitu, kami memiliki beberapa mesin server yang masing-masing dilengkapi dengan beberapa GPU Nvidia Titan X.
Untuk model ukuran kecil hingga sedang, 12 GB Titan X biasanya cukup untuk 2-3 orang untuk menjalankan pelatihan secara bersamaan pada GPU yang sama. Jika model cukup kecil sehingga satu model tidak mengambil keuntungan penuh dari semua unit komputasi GPU, ini sebenarnya dapat menghasilkan percepatan dibandingkan dengan menjalankan satu proses pelatihan setelah yang lainnya. Bahkan dalam kasus-kasus di mana akses konkuren ke GPU memperlambat waktu pelatihan individu, tetap menyenangkan memiliki fleksibilitas memiliki banyak pengguna yang secara bersamaan berlatih menggunakan GPU.
Masalah dengan TensorFlow adalah bahwa, secara default, ini mengalokasikan jumlah penuh memori GPU yang tersedia saat diluncurkan. Bahkan untuk jaringan saraf dua lapis yang kecil, saya melihat bahwa semua 12 GB memori GPU habis.
Apakah ada cara untuk membuat TensorFlow hanya mengalokasikan, katakanlah, 4 GB memori GPU, jika ada yang tahu bahwa ini cukup untuk model yang diberikan?
sumber
MonitoredTrainingSession
https://github.com/tensorflow/tensorflow/issues/1578
sumber
from keras import backend as K
danK.set_session(sess)
untuk menghindari keterbatasan memoriIni adalah kutipan dari Buku
Deep Learning with TensorFlow
1) Biarkan pertumbuhan: (lebih fleksibel)
Metode kedua adalah
per_process_gpu_memory_fraction
opsi, yang menentukan sebagian kecil dari jumlah keseluruhan memori yangeach
harus dialokasikan GPU yang terlihat. Catatan: Tidak diperlukan pelepasan memori, bahkan dapat memperburuk fragmentasi memori saat dilakukan.2) Alokasikan memori tetap :
Untuk hanya mengalokasikan
40%
total memori masing-masing GPU dengan:Catatan: Itu hanya berguna jika Anda benar-benar ingin mengikat jumlah memori GPU yang tersedia pada proses TensorFlow.
sumber
Diperbarui untuk TensorFlow 2.0 Alpha dan seterusnya
Dari 2.0 Alpha docs, jawabannya sekarang hanya satu baris sebelum Anda melakukan sesuatu dengan TensorFlow:
sumber
Semua jawaban di atas menganggap eksekusi dengan
sess.run()
panggilan, yang menjadi pengecualian daripada aturan di versi terbaru dari TensorFlow.Saat menggunakan
tf.Estimator
framework (TensorFlow 1.4 dan di atas) cara untuk melewatkan pecahan bersama dengan yang dibuat secara implisitMonitoredTrainingSession
adalah,Demikian pula dalam mode Eager (TensorFlow 1.5 dan di atas),
Sunting: 11-04-2018 Sebagai contoh, jika Anda ingin menggunakan
tf.contrib.gan.train
, maka Anda dapat menggunakan sesuatu yang mirip dengan di bawah ini:sumber
Untuk Tensorflow versi 2.0 dan 2.1 gunakan cuplikan berikut :
Untuk versi sebelumnya , cuplikan berikut digunakan untuk saya:
sumber
Tensorflow 2.0 Beta dan (mungkin) di luar
API berubah lagi. Sekarang dapat ditemukan di:
Alias:
Referensi:
Lihat juga: Tensorflow - Gunakan GPU : https://www.tensorflow.org/guide/gpu
untuk Tensorflow 2.0 Alpha lihat: jawaban ini
sumber
Kamu bisa memakai
dalam variabel lingkungan Anda.
Dalam kode tensorflow :
sumber
Plug Shameless: Jika Anda menginstal Tensorflow yang didukung GPU, sesi pertama akan mengalokasikan semua GPU apakah Anda mengaturnya untuk hanya menggunakan CPU atau GPU. Saya dapat menambahkan tip saya bahwa bahkan Anda mengatur grafik untuk menggunakan CPU saja Anda harus mengatur konfigurasi yang sama (seperti yang dijawab di atas :)) untuk mencegah pendudukan GPU yang tidak diinginkan.
Dan dalam antarmuka interaktif seperti IPython Anda juga harus mengatur konfigurasi itu, jika tidak maka akan mengalokasikan semua memori dan hampir tidak meninggalkan yang lain. Ini terkadang sulit untuk diperhatikan.
sumber
Untuk Tensorflow 2.0 ini solusi ini bekerja untuk saya. (TF-GPU 2.0, Windows 10, GeForce RTX 2070)
sumber
Jika Anda menggunakan Tensorflow 2 coba yang berikut ini:
sumber
Saya mencoba untuk melatih unet pada set data voc tetapi karena ukuran gambar yang besar, memori selesai. saya mencoba semua tips di atas, bahkan mencoba dengan ukuran batch == 1, namun tidak ada peningkatan. terkadang versi TensorFlow juga menyebabkan masalah memori. coba dengan menggunakan
sumber
Yah saya baru di tensorflow, saya punya Geforce 740m atau sesuatu GPU dengan ram 2GB, saya menjalankan jenis tulisan tangan mnist contoh untuk bahasa asli dengan data pelatihan yang berisi 38700 gambar dan 4300 gambar pengujian dan berusaha untuk mendapatkan presisi, ingat, F1 menggunakan kode berikut sebagai sklearn tidak memberi saya hasil yang tepat. setelah saya menambahkan ini ke kode saya yang ada saya mulai mendapatkan kesalahan GPU.
ditambah model saya berat saya kira, saya mendapatkan kesalahan memori setelah 147, 148 zaman, dan kemudian saya pikir mengapa tidak membuat fungsi untuk tugas jadi saya tidak tahu apakah itu bekerja dengan cara ini di tensrorflow, tapi saya pikir jika variabel lokal adalah digunakan dan ketika di luar ruang lingkup mungkin melepaskan memori dan saya mendefinisikan elemen-elemen di atas untuk pelatihan dan pengujian dalam modul, saya dapat mencapai 10.000 zaman tanpa masalah, saya harap ini akan membantu ..
sumber
sumber