日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

tensorflow学习:分布式tensorflow使用,代码实现inGraph方式

發布時間:2024/9/15 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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給唯一確定了。

# 172.16.100.2:12222主機:工種為canshu的,第0個task import tensorflow as tf cluster=tf.train.ClusterSpec({"canshu": ["172.16.100.2:12222",# /job:canshu/task:0 運行的主機"172.16.100.3:12222",# /job:canshu/task:1 運行的主機],"gongzuo": ["172.16.100.4:12222", # /job:gongzuo/task:0 運行的主機"172.16.100.5:12222" # /job:gongzuo/task:1 運行的主機]}) server = tf.train.Server(cluster, job_name="canshu", task_index=0) server.join()# 172.16.100.3:12222主機:工種為canshu的,第1個task import tensorflow as tf cluster=tf.train.ClusterSpec({"canshu": ["172.16.100.2:12222",# /job:canshu/task:0 運行的主機"172.16.100.3:12222",# /job:canshu/task:1 運行的主機],"gongzuo": ["172.16.100.4:12222", # /job:gongzuo/task:0 運行的主機"172.16.100.5:12222" # /job:gongzuo/task:1 運行的主機]}) server = tf.train.Server(cluster, job_name="canshu", task_index=1) server.join()# 172.16.100.4:12222主機:工種為gongzuo的,第0個task import tensorflow as tf cluster=tf.train.ClusterSpec({"canshu": ["172.16.100.2:12222",# /job:canshu/task:0 運行的主機"172.16.100.3:12222",# /job:canshu/task:1 運行的主機],"gongzuo": ["172.16.100.4:12222", # /job:gongzuo/task:0 運行的主機"172.16.100.5:12222" # /job:gongzuo/task:1 運行的主機]}) server = tf.train.Server(cluster, job_name="gongzuo", task_index=0) server.join()# 172.16.100.5:12222主機:工種為gongzuo的,第1個task import tensorflow as tf cluster=tf.train.ClusterSpec({"canshu": ["172.16.100.2:12222",# /job:canshu/task:0 運行的主機"172.16.100.3:12222",# /job:canshu/task:1 運行的主機],"gongzuo": ["172.16.100.4:12222", # /job:gongzuo/task:0 運行的主機"172.16.100.5:12222" # /job:gongzuo/task:1 運行的主機]}) server = tf.train.Server(cluster, job_name="gongzuo", task_index=1) server.join()

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方式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。