Каков формат фильтров устройств в TensorFlow?


Таким образом, Session config proto имеет опцию device_filters с комментарием:

// 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

Но я все еще получаю ops, выделенные для gpu 0. Я не хочу переопределять устройства на индивидуальной основе.

1 7

1 ответ:

Поле 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.