【发布时间】:2016-11-07 11:35:52
【问题描述】:
为我的 ML 模型处理批处理需要太多时间,因此我正在考虑将它们并行化。
现在预处理例程从 SSD 中获取数据,进行预处理并形成用于学习的数据结构。 ML 训练过程一直在等待。然后 ML 过程获取这些数据并使用它来训练模型。现在预处理等待。然后他们转了一圈。这种等待时间很快就会累积起来,并且会延迟模型训练。
计划如下:单个数据结构将存储一堆数据点。训练算法的每一步都将采用其中的随机子集来训练模型(SGD 与 GPU 上的 TensorFlow)。
与此同时,我希望另一个线程对下一组数据点进行预处理。当预处理准备好时,它将用新的数据结构对象替换旧的数据结构对象。以此类推。
由于这是我在 Python 中进行并行化的第一种方法,我想知道这是否可行。全局解释器锁会阻止系统以真正并行的方式执行这些任务吗?
【问题讨论】:
-
您是否找到了在 Python、Keras/Tensorflow 中执行此操作的方法?这可以通过多处理库来完成吗?
-
从那时起,我转向了 PyTorch,发现它更方便。他们说,新版本的 TF 和 Keras 也不错,但我已经三年没有使用它们了。
-
所以您找到的解决方案不是使用 Python 中的多处理库,而是 PyTorch 固有的东西?
-
是的,PyTorch 提供了 Dataset 类,它与 DataLoader 类结合使用,完全符合我的需要。
标签: python multithreading concurrency parallel-processing tensorflow