Python:并行化GPU和CPU工作

时间:2016-07-05 14:58:10

标签: python multithreading concurrency parallel-processing tensorflow

为我的ML模型处理批次需要花费太多时间,所以我正在考虑将它们并行化。

现在,预处理程序从SSD中获取数据,进行预处理并形成用于学习的数据结构。所有这些ML训练过程都在等待。然后ML过程获取此数据并使用它来训练模型。现在预处理等待。然后他们四处走动。这个等待时间很快就会总结并推迟模型培训。

计划如下:单个数据结构将存储一堆数据点。训练算法的每一步都会采用它们的随机子集来训练模型(在GPU上使用TensorFlow进行SGD)。

与此同时,我希望另一个线程对下一组数据点进行预处理。当预处理准备就绪时,它将用新的数据结构对象替换旧的数据结构对象。等等。

由于这是我在Python中进行并行化的第一种方法,我想知道这是否会起作用。全局解释器锁是否会阻止系统以真正的并行方式执行这些任务?

1 个答案:

答案 0 :(得分:2)

TensorFlow的Python绑定非常努力地尽快释放全局解释器锁。例如,当控件转移到tf.Session run方法中的C ++库时,它不会保持锁定。你描述的是TensorFlow中一个非常常见的模式。使用预处理数据对ML模型进行预处理和训练的输入数据在TensorFlow中使用queues进行解耦。有一个说明性示例,说明如何在初始model中并行化输入预处理和训练。