tensorflow 多GPU操作有两种方法: 一种是常用的数据并行,另一种是模型并行。 一 模型并行 指的是将一个完整的网络切分成不同块放在不同gpu上执行,每个gpu可能只处理某一张图的四分之一。采用模型并行很大程度上是因为显存不够放不下整个网络的数据。 二 数据并行 数据并行的原理很简单,如下图,其中CPU主要负责梯度平均和参数更新,而GPU1和GPU2主要负责训练模型副本(model replica),这里称作“模型副本”是因为它们都是基于训练样例的子集训练得到的,模型之间具有一定的独立性。具体的训练步骤如下,
值得说明的是,在第(1)步中定义模型参数时,要考虑到不同model replica之间要能够share Variables,因此要采用tf.get_variable()函数而不是直接tf.Variables()(关于tf.get_variable()和tf.Variable的区别,请读者参见其帮助手册)。另外,因为tensorflow和theano类似,都是先定义好tensor Graph,再基于已经定义好的Graph进行模型迭代式训练的。因此在每次迭代过程中,只会对当前的模型参数进行更新,而不会调用tf.get_variable()函数重新定义模型变量,因此变量共享只是存在于模型定义阶段的一个概念。 |
|
来自: 雪柳花明 > 《TensorFLow练习汇总》