tensorflow slim 并发训练和评估循环;单个设备
tensorflow slim concurrent train and evaluation loops; single device
我有兴趣使用 tensorflow slim 库 (tf.contrib.slim) 在训练期间定期对 (n)(整个)测试集的模型性能进行评估。文档非常清楚 slim.evaluation.evaluation_loop 是要走的路,而且看起来很有希望。问题是我没有第二个gpu备用,这个模型参数占用了整个gpu的内存,我想做并发评估。
例如,如果我有 2 个 GPU,我可以 运行 一个 python 脚本,在第一个 gpu 上以 "slim.learning.train()" 终止,另一个以 [=17= 终止] 在第二个 gpu 上。
有没有一种方法可以为两个任务管理 1 个 gpu 的资源? tf.train.Supervisor 想到了,但老实说我不知道。
您可以使用以下代码对 GPU 使用进行分区。
您可以设置分别用于训练和评估的 GPU 分数。下面的代码意味着进程被分配了 30% 的内存。
gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=0.3000)
sess = tf.Session(config=tf.ConfigProto(gpu_options=gpu_options))
sess.run(tf.app.run())
我有兴趣使用 tensorflow slim 库 (tf.contrib.slim) 在训练期间定期对 (n)(整个)测试集的模型性能进行评估。文档非常清楚 slim.evaluation.evaluation_loop 是要走的路,而且看起来很有希望。问题是我没有第二个gpu备用,这个模型参数占用了整个gpu的内存,我想做并发评估。
例如,如果我有 2 个 GPU,我可以 运行 一个 python 脚本,在第一个 gpu 上以 "slim.learning.train()" 终止,另一个以 [=17= 终止] 在第二个 gpu 上。
有没有一种方法可以为两个任务管理 1 个 gpu 的资源? tf.train.Supervisor 想到了,但老实说我不知道。
您可以使用以下代码对 GPU 使用进行分区。
您可以设置分别用于训练和评估的 GPU 分数。下面的代码意味着进程被分配了 30% 的内存。
gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=0.3000)
sess = tf.Session(config=tf.ConfigProto(gpu_options=gpu_options))
sess.run(tf.app.run())