分布式tensorflow 设备分配 学习笔记

 

 

replica_device_setter_TF官网文档

由于看到这个函数很是激动。。。感觉这个东西也是蛮重要的。。之前完全手动分配累死辣。。。

所以单独写一篇,主要是翻译replica_device_setter的文档,之后和分布式 tensorflow 设备分配相关的内容也会放在这里

tf.train.replica_device_setter

函数原型

用法

device functions是用在tf.device(device_function) 中来自动向op objects 分配设备的。

设备的作用域优先级从内向外(类似变量的作用域

目前可以设置的域的关键字有(job, task, cpu/gpu)

如果cluster没有被定义,并且ps_tasks为0,那么该函数返回一个no-op(no-op应该就是operation界的null类型)

默认情况下,只有变量的op会被放在ps上,放置策略是在 所有ps tasks上用 Round-robin

该策略也可以自定义,参考GreedyLoadBalancingStrategy

例子

参数

  • ps_tasks: Number of tasks in the  ps job. Ignored if  cluster is provided.
  • ps_device: String. Device of the  ps job. If empty no  ps job is used. Defaults to  ps.
  • worker_device: String. Device of the  worker job. If empty no  worker job is used.
  • merge_devicesBoolean. If  True, merges or only sets a device if the device constraint is completely unset. merges device specification rather than overriding them.
  • clusterClusterDef proto or  ClusterSpec.
  • ps_ops: List of strings representing  Operation types that need to be placed on  ps devices. If  None, defaults to  ["Variable"].
  • ps_strategy: A callable invoked for every ps  Operation (i.e. matched by  ps_ops), that takes the  Operation and returns the ps task index to use. If  None, defaults to a round-robin strategy across all  ps devices.

 

 

 

其他

allow_soft_placement:session的一个属性,可以用来防止指定的设备不存在而导致无法运行的情况。设置为true会自动选择存在的设备。

 

 

作者: CrazyKK

ex-ACMer@hust,stackoverflow-engineer@sensetime

说点什么

3 评论 在 "分布式tensorflow 设备分配 学习笔记"

提醒
排序:   最新 | 最旧 | 得票最多

有段时间没逛kk的博客了,变化好大。以及,新主题不错;)
果然有实习项目推动学的好快啊 羡慕ing
话说你to do list里面的cousera和slides都看完了吗orz

wpDiscuz