Làm cho máy ảnh chạy trên hệ thống cpu đa lõi đa máy


10

Tôi đang làm việc trên mô hình Seq2Seq bằng LSTM từ Keras (sử dụng nền Theano) và tôi muốn song song hóa các quy trình, vì thậm chí vài MB dữ liệu cần vài giờ để đào tạo.

Rõ ràng là GPU song song tốt hơn nhiều so với CPU. Hiện tại, tôi chỉ có CPU để làm việc. Tôi có thể truy cập 16 CPU (2 luồng trên mỗi lõi X 4 lõi cho mỗi ổ cắm X 2 ổ cắm)

Từ tài liệu hỗ trợ đa lõi trong Theano, tôi đã quản lý để sử dụng tất cả bốn lõi của một ổ cắm. Vì vậy, về cơ bản, CPU sử dụng 400% với 4CPU được sử dụng và 12 CPU còn lại vẫn chưa được sử dụng. Làm thế nào để tôi sử dụng chúng quá. Tensorflow cũng có thể được sử dụng thay cho nền Theano, nếu nó hoạt động.

nhập mô tả hình ảnh ở đây

Câu trả lời:


6

Để đặt số lượng luồng được sử dụng trong Theano (và do đó, số lượng lõi CPU), bạn sẽ cần đặt một vài tham số trong môi trường:

import os
os.environ['MKL_NUM_THREADS'] = '16'
os.environ['GOTO_NUM_THREADS'] = '16'
os.environ['OMP_NUM_THREADS'] = '16'
os.eviron['openmp'] = 'True'

Điều này sẽ cho phép bạn sử dụng tất cả các lõi của tất cả các CPU.

Tất nhiên, điều này cũng có thể được thực hiện trong Tensorflow:

import tensorflow as tf
from keras.backend import tensorflow_backend as K

with tf.Session(config=tf.ConfigProto(
                    intra_op_parallelism_threads=16)) as sess:
    K.set_session(sess)
    <Your Keras code>

Tôi sẽ rất biết ơn mã này vì đã thiết lập số lượng lõi trong R (Tôi đang sử dụng máy ảnh trong R và nó chỉ sử dụng một phần của lõi ...). Đặc biệt đối với dòng chảy căng. Cảm ơn, Milan
gutompf

2
Bạn có thể sử dụng Sys.setenv () để đặt các biến môi trường trong R, tương tự như sử dụng os.envir [var] trong Python.
Thomas Cleberg
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.