Tensorflow:使用不适合单个 GPU 内存的图形训练模型
Tensorflow: Training models with graphs that won't fit into memory of a single GPU
MemoryError
在构建图形时引发,并且在任何内容传输到 GPU 之前。 MemoryError
是由于试图分配比机器可用的内存更多的内存造成的。
- 我有:多个 GPU
- 我没有的:没有足够大的内存来适应任何单个 GPU 上的图形
- 我想做的:在单个 GPU 中多次训练模型,或者更好的是,同时使用所有 GPU 来训练模型的不同部分(如果可能的话)。
但是我如何训练一个需要将大量图形加载到内存(它不适合)的模型?分段训练?冷冻层?快速 google 搜索根本没有给出任何提示:/
什么是正确的,也许是最好的方法?
完全有可能!
图表的不同部分可以分配给不同的 GPU(和 CPU)。受到 Using GPUs 的启发,您应该能够执行以下操作:
`with tf.device('/device:GPU:2'):`
a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')
b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')
`with tf.device('/device:GPU:1'):`
c = tf.matmul(a, b)
Ops 和张量可以任意分配给 CPUs 和 GPU(请注意,当然,您的性能可能会因必须在不同硬件之间随机播放大量数据而受到显着影响)。
此外,Distributed Tensorflow 允许您在网络上的多个系统周围分配操作和张量,并为您处理管道。
MemoryError
在构建图形时引发,并且在任何内容传输到 GPU 之前。 MemoryError
是由于试图分配比机器可用的内存更多的内存造成的。
- 我有:多个 GPU
- 我没有的:没有足够大的内存来适应任何单个 GPU 上的图形
- 我想做的:在单个 GPU 中多次训练模型,或者更好的是,同时使用所有 GPU 来训练模型的不同部分(如果可能的话)。
但是我如何训练一个需要将大量图形加载到内存(它不适合)的模型?分段训练?冷冻层?快速 google 搜索根本没有给出任何提示:/
什么是正确的,也许是最好的方法?
完全有可能!
图表的不同部分可以分配给不同的 GPU(和 CPU)。受到 Using GPUs 的启发,您应该能够执行以下操作:
`with tf.device('/device:GPU:2'):`
a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')
b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')
`with tf.device('/device:GPU:1'):`
c = tf.matmul(a, b)
Ops 和张量可以任意分配给 CPUs 和 GPU(请注意,当然,您的性能可能会因必须在不同硬件之间随机播放大量数据而受到显着影响)。
此外,Distributed Tensorflow 允许您在网络上的多个系统周围分配操作和张量,并为您处理管道。