Bagaimana Anda bisa memprogram di perpustakaan keras (atau tensorflow) untuk mempartisi pelatihan pada beberapa GPU? Katakanlah Anda menggunakan instance Amazon ec2 yang memiliki 8 GPU dan Anda ingin menggunakan semuanya untuk berlatih lebih cepat, tetapi kode Anda hanya untuk satu CPU atau GPU.
python
deep-learning
tensorflow
keras
gpu
Hector Blandin
sumber
sumber
Jawaban:
Dari FAQ Keras:
https://keras.io/getting-started/faq/#how-can-i-run-a-keras-model-on-multiple-gpus
Di bawah ini adalah kode yang disalin untuk memungkinkan 'paralelisme data'. Yaitu memiliki masing-masing GPU Anda memproses subset berbeda dari data Anda secara mandiri.
Perhatikan bahwa ini tampaknya hanya valid untuk backend Tensorflow pada saat penulisan.
Pembaruan (Feb 2018) :
Keras sekarang menerima pemilihan gpu otomatis menggunakan multi_gpu_model, sehingga Anda tidak perlu lagi melakukan hardcode jumlah GPU. Detail dalam Permintaan Tarik ini . Dengan kata lain, ini memungkinkan kode yang terlihat seperti ini:
Tetapi untuk lebih eksplisit , Anda bisa tetap dengan sesuatu seperti:
Bonus :
Untuk memeriksa apakah Anda benar-benar menggunakan semua GPU Anda, khususnya yang NVIDIA, Anda dapat memantau penggunaan Anda di terminal menggunakan:
Referensi:
sumber
multi_gpu_model(model, gpus=None)
berfungsi dalam kasus di mana hanya ada 1 GPU? Akan keren jika secara otomatis disesuaikan dengan jumlah GPU yang tersedia.TensorFlow Menggunakan GPU
Berikut adalah contoh kode tentang bagaimana digunakan, jadi untuk setiap tugas ditentukan daftar dengan perangkat / perangkat:
tf akan menggunakan GPU secara default untuk perhitungan bahkan jika untuk CPU (jika ada GPU yang didukung). jadi kamu bisa melakukan a for loop: "for d in ['/ gpu: 1', '/ gpu: 2', '/ gpu: 3' ... '/ gpu: 8',]:" dan di "tf.device (d)" harus menyertakan semua sumber daya GPU instan Anda. Jadi tf.device () sebenarnya akan digunakan.
Pelatihan Scaling Keras Model ke Beberapa GPU
Untuk Keras dengan menggunakan Mxnet daripada args.num_gpus , di mana num_gpus adalah daftar GPU yang diperlukan Anda.
Di atas semua itu, Horovod bersumber terbuka dari Uber baru-baru ini dan menurut saya hebat:
Horovod
sumber
Pada dasarnya, Anda dapat mengambil contoh dari contoh berikut ini. Yang Anda butuhkan hanyalah menentukan nilai konsumsi cpu dan gpu setelah mengimpor dengan keras.
Setelah itu, Anda akan cocok dengan modelnya.
Akhirnya, Anda dapat mengurangi nilai konsumsi bukan pekerjaan pada batas atas.
sumber