假设我们生成自己的训练数据(例如从某个扩散过程中采样并计算一些感兴趣的数量),并且我们有自己的CUDA程序,名为generate_data,用于为给定的输入在GPU内存中生成标签。
因此,我们处于一个特殊的设置中,在这个设置中,我们可以以“在线”方式生成任意多的训练数据批次(在每个批次迭代中,我们调用generate_data例程来生成一个新批次并舍弃旧批次)。
由于数据是在GPU上生成的,有没有办法让TensorFlow(Python API)在训练过程中直接使用它?(例如填充占位符)这样,这样的管道将高效。
我的理解是,在目前的设置中,您需要将数据从GPU复制到CPU,然后再让TensorFlow将其从CPU再次复制到GPU,这样做是很浪费的,因为会执行不必要的复制。
编辑:如果有帮助,我们可以假设CUDA例程是使用Numba的CUDA JIT编译器实现的。
因此,我们处于一个特殊的设置中,在这个设置中,我们可以以“在线”方式生成任意多的训练数据批次(在每个批次迭代中,我们调用generate_data例程来生成一个新批次并舍弃旧批次)。
由于数据是在GPU上生成的,有没有办法让TensorFlow(Python API)在训练过程中直接使用它?(例如填充占位符)这样,这样的管道将高效。
我的理解是,在目前的设置中,您需要将数据从GPU复制到CPU,然后再让TensorFlow将其从CPU再次复制到GPU,这样做是很浪费的,因为会执行不必要的复制。
编辑:如果有帮助,我们可以假设CUDA例程是使用Numba的CUDA JIT编译器实现的。