tensorflow设计用于支持大规模分布式训练和预测,同时也足够灵活支持新模型和系统级优化。
tensorflow是一种跨平台库,不同级别的用户级别代码(python c++ client)通过C API和核心的运行代码隔离。
说明:
- client
- 实现用户定义数据流图(dataflow graph),并通过tf.session来执行;
- Distributed Master
- 通过Session.run()裁剪子图(sub graph);
- 把子图分成多片(piece),运行在不同process/device上;
- 把分片分布到不同worker service上运行;
- 通过worker service启动不同片的执行;
- Worker Services (每个task一个)
- 通过适配可用的硬件(CPUs, GPUs)的kernel implementations安排graph ops的执行
- 和其他worker ops交互结果(发送or接收)
上图展示了分布式环境中不同组件之间的交互,PS表示参数服务(parameter server):用来存储更新模型参数的,其他task用来优化这些参数并将更新发送给PS,这种划分在分布式训练上比较有用。
client
用户可以用多种语言,低级别高级别等API来开发client计算图。
客户端创建tf.session,然后把graph的定义发给Distributed Master,是通过