Tensorflow分布式并行技术实践


本文实践了tensorflow的分布式并行技术


Tensor的分布式有几种模式,In-graph replication模型并行,将模型的计算图的不同部分放在不同机器执行;

                                               between-graph replication数据并行,每台机器使用完全相同的计算图,但是计算不同的batch数据。

此外,还有异步并行和同步并行,异步并行指每台机器独立计算梯度,一旦计算完就更新到paramter server中,不等其他机器

同步并行是等所有机器都完成对梯度的计算后,将多个梯度合成并统一更新模型参数。

同步并行训练loss下降速度更快,可以达到的更大精度最高

但是同步并行的木桶效应导致集群速度取决于最慢的机器,当设备速度一致时效率比较高



下面用tensorflow实现1个parameter server和1个worker的分布式并行训练程序



# -*- coding: utf-8 -*-
import math
import tempfile
import time
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data

flags = tf.app.flags
flags.DEFINE_string("data_dir","/tmp/mnist_data","storing data")
flags.DEFINE_integer("hidden_units",100,"hidden layer")
flags.DEFINE_integer("train_steps",1000,"step")
flags.DEFINE_integer("batch_size",100,"batch size")
flags.DEFINE_float("learning_rate",0.01,"learning rate")
flags.DEFINE_boolean("sync_replicas",False,"Use the sync_replicas mode")
flags.DEFINE_integer("replicas_to_aggregate",None,"Number of replicas to aggregate before parameter "
                                                  "update is applied ,defalut:num_workers")
# None代表worker的数量,即所有worker都完成一个batch的训练后再更新模型参数
flags.DEFINE_string("ps_hosts","192.168.0.107:2222","comma-separated lst of hostname:port pairs")
flags.DEFINE_string("worker_hosts","10.211.55.14:2222","comma-separated lst of hostname:port pairs")
flags.DEFINE_string("job_name",None,"job name:worker or ps")
flags.DEFINE_integer("task_index",None,"Worker task index,should be >=0, task=0 is "
                                       "the master worker task the performs the variable initial
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值