TensorFlow技术内幕(九):模型优化之分布式执行

随着模型和数据规模的不断增大,单机的计算资源已经无法满足算法的需求,本章分析一下TensorFlow内核中的对分布式执行支持。

GrpcSession

第五章中,分析Graph的执行过程的时候,提到Graph的执行可以选择本地执行,对应的Session实现类是DirectSession,还可以选择服务端执行,对应的Session实现类就是GrpcSession.

这里写图片描述

图1:GrpcSession

第五章中我们只分析了这种分布式执行的客户端代码(见图1),但是并没有分析服务端的代码,本章来补上服务端的代码分析。

Master vs Worker

这里写图片描述

图2:TensorFlow的分布式执行流程

流程图见图2:

  • MasterService 和 WorkerSevice可以在同一个进程,也可以在不同的进程。所以图中的调用,部分是本地的直接调用,部分是RPC调用(例如User到GrpcMasterService的调用,GrpcRemoteWorker到GrpcWorkerService的调用,都是RPC调用)。

  • tensorflow.Master 与 tensorflow.GrpcMasterService 驻留在同一进程,后者会将来自RPC的调用全部交给前者处理。

  • tensorflow.GrpcWorker 与 tensorflow.GrpcWorkerService驻留在同一进程,类似地,后者也会将来自RPC的调用全部交给前者处理。

  • 函数tensorflow.Master.CreateSession 根据配置选项创建一个MasterSession和一个或多个WorkerSession。

  • MasterSession负责调度和任务分配,WorkerSession绑定特定的设备,负责真正的执行。分别驻留在Master和Worker进程内。

  • GrpcWoker与WorkerSession驻留在同一进程。并通过SessionMgr管理所有的WorkerSession.

  • 执行阶段MasterSession会负责将计算图分区(这部分逻辑在第五章中分析过),然后分别注册到不同的WorkerSession中去执行。

  • WorkerSession最终通过创建Executor来驱动注册过的计算图的执行。

猜你喜欢

转载自blog.csdn.net/gaofeipaopaotang/article/details/80736452