65、多设备并行执行与模型训练策略

多设备并行执行与模型训练策略

1. 多设备并行执行原理

使用 TF 函数的好处之一是并行性。当 TensorFlow 运行 TF 函数时,它会先分析图以确定需要评估的操作列表,并统计每个操作的依赖数量。然后,将无依赖的操作(即源操作)添加到其所在设备的评估队列中。操作评估完成后,依赖该操作的其他操作的依赖计数器会减 1。当某个操作的依赖计数器变为 0 时,它会被推送到其设备的评估队列。所有所需节点评估完成后,TensorFlow 会返回其输出。

CPU 评估队列中的操作会被分发到一个名为“操作间线程池”的线程池。若 CPU 有多个核心,这些操作就能并行评估。部分操作有支持多线程的 CPU 内核,这些内核会将任务拆分为多个子操作,子操作会被放入另一个评估队列,并分发到名为“操作内线程池”的第二个线程池(所有支持多线程的 CPU 内核共享该线程池)。简而言之,多个操作和子操作可在不同 CPU 核心上并行评估。

GPU 的情况相对简单。GPU 评估队列中的操作会按顺序评估。不过,大多数操作都有支持多线程的 GPU 内核,通常由 TensorFlow 依赖的库(如 CUDA 和 cuDNN)实现。这些实现有自己的线程池,通常会尽可能利用更多的 GPU 线程(这就是 GPU 不需要操作间线程池的原因,因为每个操作已经占用了大部分 GPU 线程)。

例如,在图中操作 A、B 和 C 是源操作,可立即评估。操作 A 和 B 位于 CPU 上,会被发送到 CPU 评估队列,然后分发到操作间线程池并立即并行评估。操作 A 有支持多线程的内核,其计算会被拆分为三部分,由操作内线程池并行执行。操作 C 进入 GPU 0 的评估队列,在本例中其 GPU 内核使用了 cuDNN,cuD

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值