tensorflow+multiprocessing实现并行调参

笔者需要得到 使用100组超参数训练后模型的测试准确率,其中不同的超参数对应于不同的网络结构,故Graph和Session均不能共享。即笔者需要执行100次“构建Graph-新建Session-Train&Test-Close&Quit”的操作。
程序本身占用资源不多,便想要实现并行,加速调参。

需求:

  1. 输入100组超参数,返回相应超参数对应的测试准确率
  2. 每组超参数对应程序跑在单独的GPU上,不占用其他GPU资源(因为已有代码并无实现GPU间并行的部分)
  3. 无显存泄露/爆炸等问题
  4. GPU资源被高效利用

系统环境:

服务器1:Ubuntu 16.04+CUDA8.0+tensorflow 1.0.1+python3.5.2
服务器2:Ubuntu 16.04+CUDA9.0+tensorflow 1.9.0+python3.5.2

单组超参数运行在单GPU上的实现:

已有代码中已经实现了Model类,提供了 创建图-新建Session-Train&Test-Close&Quit 的 全套操作,简要代码如下:

import tensorflow as tf
class Model:
    def __init__(self,param):
        self.param = param

        # create & build graph
        self.graph = tf.Graph()
        self.build_graph()

        # create session
        config = tf.ConfigProto()
        config.gpu_options.allow_growth = True
        gpu_num = random.choice(cuda_gpu_count())
        config.gpu_options.visible_device_list= str(gpu_num)
        self.sess = tf.Session(config=config,graph=self.graph)

    
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 14
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值