2015-11-12 2 views
7

Так конфиг Session прото имеет опцию device_filters, с комментарием:Каков формат фильтров устройств в TensorFlow?

// When any filters are present sessions will ignore all devices which do not 
    // match the filters. Each filter can be partially specified, e.g. "/job:ps" 
    // "/job:worker/replica:3", etc. 

Кто-нибудь есть конкретное объяснение формата? Например, я хочу исключить/gpu: 0 в качестве опции, потому что я использую его для запуска других моделей.

Я попытался

config = tf.ConfigProto() 
config.device_filters.append('/gpu:1') 
config.device_filters.append('/cpu:0') 
with tf.Session(config=config): 
    # Do stuff 

Но я все еще получаю опа, выделенные 0. GPU я не хочу, чтобы переопределить устройства на основе каждого цит.

ответ

3

Поле ConfigProto.device_filters в настоящее время игнорируется TensorFlow, хотя оно предназначено для поддержки вашего варианта использования в будущем. Если вы хотите, чтобы достичь той же цели бегущих опс на /gpu:1 и /cpu:0, вы можете сделать это следующим образом, используя «мягкое размещение»:

with tf.device("/gpu:1"): 
    # Build your model in this with context. All nodes will get the 
    # device "/gpu:1". 

with tf.Session(config=tf.ConfigProto(allow_soft_placement=True)): 
    # Execute your mode in this with context. 
    # Soft placement will use /gpu:1 for GPU-compatible ops, and /cpu:0 
    # for CPU-only ops. 
+0

любой график реализации этого механизма? Обычный прецедент будет назначать все на один из графических процессоров в настройке с несколькими GPU (т.е. одно задание «train» и «eval») – MZHm

+1

Он реализован для Distributed TensorFlow, поэтому, если вы создаете 'tf.train .Server', а затем подключите свой 'tf.Session' к этому серверу, вы можете использовать эту опцию. Альтернативно, вы можете использовать параметр ['tf.ConfigProto.gpu_options.visible_device_list'] (https://github.com/tensorflow/tensorflow/blob/4b136d9fc4de0a53c17e336965f8884fd36168a8/tensorflow/core/protobuf/config.proto#L42), чтобы указать, что 'tf.Session' использует только подмножество (локальных) графических процессоров. – mrry

Смежные вопросы