Python 修改Tensorflow代码,将预处理放在CPU上,将培训放在GPU上
我正在阅读这篇关于优化GPU TensorFlow代码的最佳实践的文章。他们的一个建议是将预处理操作放在CPU上,以便GPU专用于培训。试图了解在实验中如何实际实现这一点(即,learn_runner.run())。为了进一步讨论,我想考虑将这一策略应用到自定义估计普查样本提供的最佳方式。 本文建议在预处理操作周围放置Python 修改Tensorflow代码,将预处理放在CPU上,将培训放在GPU上,python,tensorflow,google-cloud-platform,tensorflow-gpu,google-cloud-ml-engine,Python,Tensorflow,Google Cloud Platform,Tensorflow Gpu,Google Cloud Ml Engine,我正在阅读这篇关于优化GPU TensorFlow代码的最佳实践的文章。他们的一个建议是将预处理操作放在CPU上,以便GPU专用于培训。试图了解在实验中如何实际实现这一点(即,learn_runner.run())。为了进一步讨论,我想考虑将这一策略应用到自定义估计普查样本提供的最佳方式。 本文建议在预处理操作周围放置和tf.device('/cpu:0')。然而,当我查看自定义估计器时,“预处理”似乎是分多个步骤完成的: inputs=tf.feature\u column.input\u l
和tf.device('/cpu:0')
。然而,当我查看自定义估计器时,“预处理”似乎是分多个步骤完成的:
inputs=tf.feature\u column.input\u layer(features,transformed\u columns)&label\u values=tf.constant(LABELS)
——如果我用tf.device('/cpu:0')在这两行周围包装,是否足以覆盖本例中的“预处理”
generate_input_fn
和parse_csv
功能,用于设置输入数据队列。是否有必要将带有tf.device('/cpu:0')的也放在这些函数中,或者基本上是通过包装输入和标签值来实现的
前面的答案准确地描述了设备的位置。请允许我回答有关分布式TF的问题 首先要注意的是,只要有可能,我们都会选择一台具有大量GPU的机器,而不是多台具有单个GPU的机器。在同一台机器上(甚至更好,在GPU上),RAM中参数的带宽比通过网络传输快几个数量级
也就是说,有时您需要分布式培训,包括远程参数服务器。在这种情况下,您不一定需要从单机设置更改代码中的任何内容 前面的答案准确地描述了设备的位置。请允许我回答有关分布式TF的问题 首先要注意的是,只要有可能,我们都会选择一台具有大量GPU的机器,而不是多台具有单个GPU的机器。在同一台机器上(甚至更好,在GPU上),RAM中参数的带宽比通过网络传输快几个数量级
也就是说,有时您需要分布式培训,包括远程参数服务器。在这种情况下,您不一定需要从单机设置更改代码中的任何内容 澄清一下#2:如果GPU内核存在,它将放在GPU上。还请注意,如果您使用的计算机具有多个GPU,则需要使用显式设备语句,否则它们将全部放在/GPU:0 hanks!这些评论有助于解决我的一些澄清问题,但我希望得到对主要问题的确认,即“tf.device('cpu:0')需要包装在哪里?仅将其包装在模型中的输入层(建议在1行152/153中)是否足够,或者是否也需要将其放置在其他位置(如第282/294行输入的一部分)?我已更新了我的问题,以使此“主要问题”更清晰,以确保“安全”,您应将所有