tensorflow学习:分布式tensorflow使用,代码实现inGraph方式
文章目錄
- 什么叫distributed tensorflow training,它到底干什么?
- Cluster
- master和workers
- client
- 最簡單的模型Client---Master(worker)代碼實現:
- Master(worker):即當老板又當員工,屬于個體戶,local就不用接受任務了,來什么任務就執行什么任務
- Client:build graph,把執行圖的任務發給Master:
- build graph
- 把執行圖的任務發給Master
- 通用的的模型Client---Master(worker)--Workers代碼實現:
- Master/workers:因為安排任務已經在graph里面了,Master和workers沒有區別(master隱含執行了sess.run):
- Client:build graph,把執行圖的任務發給Master:
- build graph
- 把執行圖的任務發給Master:
什么叫distributed tensorflow training,它到底干什么?
就是把一個graph分成N部分分給N個server去計算(inGraph),或者把N張graph分給N個server去計算(betweenGraph),混合的方式也可以。
Cluster
這個N個server就是Cluster,就是我們中文的“集群”。
master和workers
這N個server里面有一臺server叫master(當然也可以兼職worker的工作),其他的N-1個server叫worker,master的本職工作就是:執行Graph,按照Graph分配任務給workers,并負責協調workers之間的交流,整理結果。
client
master是這N個servers對外的負責人,master會和client對接。
啥是client?就是服務器的客戶,就是買服務的人,說人話就是寫代碼,運行主程序的地方,它的工作是:創建Graph(這個圖里包含了任務分配),并把創建好的Graph發送給master,master完成任務后把結果發給client。
最簡單的模型Client—Master(worker)代碼實現:
Master(worker):即當老板又當員工,屬于個體戶,local就不用接受任務了,來什么任務就執行什么任務
import tensorflow as tf server=tf.train.Server.create_local_server() server.join()執行完畢會有一個該server的IP標識:grpc://172.16.100.2:12222
Client:build graph,把執行圖的任務發給Master:
build graph
import tensorflow as tf import numpy as np# create data x_data = np.random.rand(100).astype(np.float32) y_data = x_data*0.1 + 0.3### create tensorflow structure start ### Weights = tf.Variable(tf.random_uniform([1], -1.0, 1.0)) biases = tf.Variable(tf.zeros([1])) y = Weights*x_data + biases loss = tf.reduce_mean(tf.square(y-y_data)) optimizer = tf.train.GradientDescentOptimizer(0.5) train = optimizer.minimize(loss) init = tf.global_variables_initializer() ### create tensorflow structure end ###把執行圖的任務發給Master
server_target="grpc://172.16.100.2:12222" #master # create datax_data = np.random.rand(100).astype(np.float32) y_data = x_data*0.1 + 0.3with tf.Session(server_target) as sess:sess.run(init)for step in range(1000):sess.run(train)if step % 20 == 0:print(step, sess.run(Weights), sess.run(biases))通用的的模型Client—Master(worker)–Workers代碼實現:
Master/workers:因為安排任務已經在graph里面了,Master和workers沒有區別(master隱含執行了sess.run):
tf.train.Server(cluster, job_name=“canshu”, task_index=0)描述了當前主機需要執行的任務,就是當前主機接受的任務:
每一個workers都被/job:job_id/task:task_id給唯一確定了。
Client:build graph,把執行圖的任務發給Master:
build graph
import tensorflow as tf import numpy as np# create data x_data = np.random.rand(100).astype(np.float32) y_data = x_data*0.1 + 0.3### create tensorflow structure start ### starttime=datetime.now() with tf.device("/job:canshu/task:0"):Weights = tf.Variable(tf.random_uniform([1], -1.0, 1.0))with tf.device("/job:canshu/task:1"):biases = tf.Variable(tf.zeros([1]))with tf.device("/job:gongzuo/task:0"):y = Weights*x_data + biasesloss = tf.reduce_mean(tf.square(y-y_data))with tf.device("/job:gongzuo/task:1"):optimizer = tf.train.GradientDescentOptimizer(0.5)train = optimizer.minimize(loss)init = tf.global_variables_initializer()把執行圖的任務發給Master:
server_target="grpc://172.16.100.2:12222" #master with tf.Session(server_target) as sess:sess.run(init)for step in range(1000):sess.run(train)if step % 20 == 0:print(step, sess.run(Weights), sess.run(biases))總結
以上是生活随笔為你收集整理的tensorflow学习:分布式tensorflow使用,代码实现inGraph方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深度学习总结:tensorflow和py
- 下一篇: 深度学总结:weight_initial