我正在运行16个工作程序和一个参数服务器(通过运行subprocess.Popen
启动),以便执行我自己的A3C算法实现。我的代码使用tf.train.Server
和tf.train.MonitoredTrainingSession
进行通信。
我希望每个进程有1个线程用于从强化学习环境中收集经验,有些进程则用于GRPC,但实际上每个进程在运行算法的集群上都有138或139个线程。我猜这取决于计算机,因为在我的笔记本电脑上,我唯一有47个或48个线程/进程。
我的tf.train.Server
配置如下:
self.server = tf.train.Server(
cluster,
job_name="worker",
task_index=task_id,
config=tf.ConfigProto(intra_op_parallelism_threads=1, inter_op_parallelism_threads=2)
)
在htop
中,我看到命令名称为python
,grpc_executor
和grpc_global_tim
。
这个问题是GRPC或分布式Tensorflow的工作方式固有的,还是我的代码有问题?
我正在使用Tensorflow 1.8.0版。