安装伪分布式的TensorFlow

安装伪分布式的TensorFlow

一.安装虚拟机Wmware:

二.在虚拟机上创建ubuntu,我在虚拟机上创建了3个Ubuntu,分别为ps,worker0,worker1

三.安装CPU版的TensorFlow

1.    安装Anaconda2

2.    安装TensorFlow:pip install tensorflow*.whl

四.关闭Ubuntu防火墙,每一个虚拟机的防火墙都要关闭,这步必须做,不然一会通信不了

sudo ufw disable

五.测试(参考https://github.com/thewintersun/distributeTensorflowExample

首先在每一个虚拟机上创建一个python文件,并将一下代码贴入:

  1. #coding=utf-8
  2. import numpy as np
  3. import tensorflow as tf
  4.  
  5. # Define parameters
  6. FLAGS = tf.app.flags.FLAGS
  7. tf.app.flags.DEFINE_float('learning_rate',0.00003, 'Initial learning rate.')
  8. tf.app.flags.DEFINE_integer('steps_to_validate',1000,
  9.                      'Steps to validate andprint loss')
  10.  
  11. # For distributed
  12. tf.app.flags.DEFINE_string("ps_hosts","",
  13.                            "Comma-separatedlist of hostname:port pairs")
  14. tf.app.flags.DEFINE_string("worker_hosts","",
  15.                           "Comma-separated list of hostname:port pairs")
  16. tf.app.flags.DEFINE_string("job_name","", "One of 'ps', 'worker'")
  17. tf.app.flags.DEFINE_integer("task_index",0, "Index of task within the job")
  18. tf.app.flags.DEFINE_integer("issync",0, "是否采用分布式的同步模式,1表示同步模式,0表示异步模式")
  19.  
  20. # Hyperparameters
  21. learning_rate = FLAGS.learning_rate
  22. steps_to_validate =FLAGS.steps_to_validate
  23.  
  24. def main(_):
  25.  ps_hosts = FLAGS.ps_hosts.split(",")
  26.  worker_hosts = FLAGS.worker_hosts.split(",")
  27.  cluster = tf.train.ClusterSpec({"ps": ps_hosts,"worker": worker_hosts})
  28.  server =tf.train.Server(cluster,job_name=FLAGS.job_name,task_index=FLAGS.task_index)
  29.  
  30.  issync = FLAGS.issync
  31.  if FLAGS.job_name == "ps":
  32.    server.join()
  33.  elif FLAGS.job_name == "worker":
  34.    with tf.device(tf.train.replica_device_setter(
  35.                    worker_device="/job:worker/task:%d" % FLAGS.task_index,
  36.                     cluster=cluster)):
  37.      global_step = tf.Variable(0, name='global_step', trainable=False)
  38.  
  39.      input = tf.placeholder("float")
  40.      label = tf.placeholder("float")
  41.  
  42.      weight = tf.get_variable("weight", [1], tf.float32,initializer=tf.random_normal_initializer())
  43.      biase  =tf.get_variable("biase", [1], tf.float32,initializer=tf.random_normal_initializer())
  44.      pred = tf.multiply(input, weight) + biase
  45.  
  46.      loss_value = loss(label, pred)
  47.      optimizer = tf.train.GradientDescentOptimizer(learning_rate)
  48.  
  49.      grads_and_vars = optimizer.compute_gradients(loss_value)
  50.      if issync == 1:
  51.        #同步模式计算更新梯度
  52.        rep_op = tf.train.SyncReplicasOptimizer(optimizer,
  53.                                                replicas_to_aggregate=len(
  54.                                                   worker_hosts),
  55.                                                replica_id=FLAGS.task_index,
  56.                                                total_num_replicas=len(
  57.                                                  worker_hosts),
  58.                                                use_locking=True)
  59.        train_op = rep_op.apply_gradients(grads_and_vars,
  60.                                       global_step=global_step)
  61.        init_token_op = rep_op.get_init_tokens_op()
  62.        chief_queue_runner = rep_op.get_chief_queue_runner()
  63.      else:
  64.        #异步模式计算更新梯度
  65.        train_op = optimizer.apply_gradients(grads_and_vars,
  66.                                       global_step=global_step)
  67.  
  68.  
  69.      init_op = tf.initialize_all_variables()
  70.      
  71.      saver = tf.train.Saver()
  72.      tf.summary.scalar('cost', loss_value)
  73.      summary_op = tf.summary.merge_all()
  74.  
  75.    sv = tf.train.Supervisor(is_chief=(FLAGS.task_index == 0),
  76.                            logdir="./checkpoint/",
  77.                             init_op=init_op,
  78.                             summary_op=None,
  79.                             saver=saver,
  80.                            global_step=global_step,
  81.                             save_model_secs=60)
  82.  
  83.    with sv.prepare_or_wait_for_session(server.target) as sess:
  84.      # 如果是同步模式
  85.      if FLAGS.task_index == 0 and issync == 1:
  86.        sv.start_queue_runners(sess, [chief_queue_runner])
  87.        sess.run(init_token_op)
  88.      step = 0
  89.      while  step < 1000000:
  90.        train_x = np.random.randn(1)
  91.        train_y = 2 * train_x + np.random.randn(1) * 0.33  + 10
  92.        _, loss_v, step = sess.run([train_op, loss_value,global_step],feed_dict={input:train_x, label:train_y})
  93.        if step % steps_to_validate == 0:
  94.          w,b = sess.run([weight,biase])
  95.          print("step: %d, weight: %f, biase: %f, loss: %f" %(step, w,b, loss_v))
  96.  
  97.    sv.stop()
  98.  
  99. def loss(label, pred):
  100.  return tf.square(label - pred)
  101.  
  102.  
  103.  
  104. if __name__ == "__main__":
  105.  tf.app.run()

 

用ifconfig查看的你的ip地址:ps_ip是PS节点上的·IP地址、worker0_ip和worker1_ip是worker节点的ip

在PS节点上用:

  1. CUDA_VISIBLE_DEVICES=''python distribute.py --ps_hosts=ps_ip:2222 --worker_hosts=worker0_ip:2223, worker1_ip:2224--job_name=ps --task_index=0

在worker0上;

  1. CUDA_VISIBLE_DEVICES=''python distribute.py --ps_hosts=ps_ip:2222 --worker_hosts=worker0_ip:2223, worker1_ip:2224--job_name=ps --task_index=0

在worker1上;

  1. CUDA_VISIBLE_DEVICES=''python distribute.py --ps_hosts=ps_ip:2222 --worker_hosts=worker0_ip:2223, worker1_ip:2224--job_name=ps --task_index=1


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值