在分布式 Tensorflow 中,我们可以在 Parameter-Server 架构中运行多个客户端与工作人员一起工作,这被称为“Between-Graph Replication”。根据文件,
图间复制。在这种方法中,每个 /job:worker 任务都有一个单独的客户端,通常与工作任务在同一进程中。
它说客户和工人通常在同一个过程中。但是,如果他们不在同一个进程中,客户端的数量可以不等于工人的数量吗?另外,多个客户端可以共享并在同一个 CPU 内核上运行吗?
在分布式 Tensorflow 中,我们可以在 Parameter-Server 架构中运行多个客户端与工作人员一起工作,这被称为“Between-Graph Replication”。根据文件,
图间复制。在这种方法中,每个 /job:worker 任务都有一个单独的客户端,通常与工作任务在同一进程中。
它说客户和工人通常在同一个过程中。但是,如果他们不在同一个进程中,客户端的数量可以不等于工人的数量吗?另外,多个客户端可以共享并在同一个 CPU 内核上运行吗?
客户端是定义图形并初始化会话以运行计算的 python 程序。如果启动这些程序,则创建的进程代表分布式体系结构中的服务器。
现在可以编写不创建图形也不运行会话的程序,而只需调用带有适当作业名称和任务索引的 server.join() 方法。这样,理论上您可以让一个客户端定义整个图形并与其相应的 server.target 开始会话;然后在这个会话中,图形的一部分将自动发送到其他进程/服务器,它们将进行计算(只要您设置了哪个服务器/任务将执行什么操作)。此设置描述了图内复制架构。
因此,基本上可以在只有一个 CPU 的同一台机器上启动多个服务器/进程,但您不会获得太多并行性,因为多个正在运行的进程之间的上下文切换会减慢您的速度。因此,除非服务器正在做一些不相关的工作,否则您应该避免这种设置。
间图只是意味着每个工作人员都将拥有自己的客户端并分别运行自己的会话。