Saya telah menginstal Keras dengan backend Tensorflow dan CUDA. Saya terkadang ingin memaksa Keras untuk menggunakan CPU. Bisakah ini dilakukan tanpa mengatakan menginstal Tensorflow khusus CPU yang terpisah di lingkungan virtual? Jika ya, bagaimana caranya? Jika backend adalah Theano, benderanya dapat disetel, tetapi saya belum pernah mendengar tentang bendera Tensorflow yang dapat diakses melalui Keras.
python
machine-learning
tensorflow
keras
mikal94305
sumber
sumber
os.environ['CUDA_VISIBLE_DEVICES'] = '-1'
seperti pada jawaban di bawah iniCUDA_DEVICE_ORDER=PCI_BUS_ID
dalam edisi # 152import os os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID" # see issue #152 os.environ["CUDA_VISIBLE_DEVICES"] = ""
, sekarang bagaimana cara "membatalkan" ini? Saya ingin Keras menggunakan GPU lagi.Cara yang agak terpisah untuk melakukan ini adalah dengan menggunakan
Di sini, dengan
booleans
GPU
danCPU
, kami menunjukkan apakah kami ingin menjalankan kode kami dengan GPU atau CPU dengan mendefinisikan secara kaku jumlah GPU dan CPU yang diizinkan untuk diakses sesi Tensorflow. Variabelnum_GPU
dannum_CPU
tentukan nilai ini.num_cores
lalu setel jumlah inti CPU yang tersedia untuk digunakan melaluiintra_op_parallelism_threads
daninter_op_parallelism_threads
.The
intra_op_parallelism_threads
mendikte variabel jumlah benang operasi paralel dalam satu simpul pada grafik perhitungan diperbolehkan untuk digunakan (intra). Sedangkaninter_ops_parallelism_threads
variabel menentukan jumlah utas yang dapat diakses untuk operasi paralel di seluruh node grafik komputasi (antar).allow_soft_placement
memungkinkan operasi dijalankan pada CPU jika salah satu kriteria berikut terpenuhi:tidak ada implementasi GPU untuk operasi tersebut
tidak ada perangkat GPU yang dikenal atau terdaftar
ada kebutuhan untuk bekerja sama dengan input lain dari CPU
Semua ini dijalankan di konstruktor kelas saya sebelum operasi lain, dan sepenuhnya terpisah dari model atau kode lain yang saya gunakan.
Catatan: Ini membutuhkan
tensorflow-gpu
dancuda
/cudnn
harus diinstal karena opsi diberikan untuk menggunakan GPU.Referensi:
Apa arti opsi di ConfigProto seperti allow_soft_placement dan log_device_placement?
Arti inter_op_parallelism_threads dan intra_op_parallelism_threads
sumber
allow_soft_placement
,intra_op_parallelism_threads
,inter_op_parallelism_threads
inter
/intra_op_parallelism_threads
mengacu pada operasi CPU atau GPU?Ini bekerja untuk saya (win10), tempat sebelum Anda mengimpor keras:
sumber
Impor saja tensortflow dan gunakan keras, semudah itu.
sumber
tf.device('/cpu:0')
, saya masih bisa melihat memori dialokasikan ke python nanti dengannvidia-smi
.with
?Sesuai tutorial keras , Anda cukup menggunakan
tf.device
cakupan yang sama seperti di tensorflow biasa:sumber
with
bisa berupa kode Keras.Saya hanya menghabiskan waktu untuk mencari tahu. Jawaban Thoma tidak lengkap. Misalkan program Anda adalah
test.py
, Anda ingin menggunakan gpu0 untuk menjalankan program ini, dan membiarkan gpus lain tetap gratis.Anda harus menulis
CUDA_VISIBLE_DEVICES=0 python test.py
Perhatikan itu
DEVICES
tidakDEVICE
sumber
Untuk orang yang bekerja di PyCharm, dan untuk memaksa CPU, Anda dapat menambahkan baris berikut di konfigurasi Run / Debug, di bawah variabel lingkungan:
sumber