TensorFlow多设备并行训练全解析
1. 设备操作执行机制
当放置请求失败时,TensorFlow会回退到其默认放置规则。即如果存在GPU且有对应的GPU内核,默认使用GPU 0;否则使用CPU 0。那么,TensorFlow究竟如何在多个设备上执行所有这些操作呢?
1.1 多设备并行执行原理
当TensorFlow运行一个TF函数时,它首先会分析其图结构,找出需要评估的操作列表,并统计每个操作的依赖数量。然后,将没有依赖的操作(即源操作)添加到该操作所在设备的评估队列中。一旦某个操作被评估,依赖该操作的其他操作的依赖计数器就会减1。当某个操作的依赖计数器变为0时,它就会被推送到其所在设备的评估队列中。当TensorFlow所需的所有节点都被评估后,它会返回这些节点的输出。
graph LR A[分析图结构] --> B[找出需评估操作列表] B --> C[统计操作依赖数量] C --> D[添加无依赖操作到评估队列] D --> E[评估操作] E --> F{依赖计数器减1} F -- 计数器为0 --> G[推送到设备评估队列] F -- 计数器不为0 --> E G --> H{所有节点评估完成?} H -- 是 --> I[返回输出] H -- 否 --> E1.2 CPU和GPU操作执行差异
- CPU操作执行:CPU评估队