色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何創建TensorFlow Server集群,及如何在該集群中發布計算圖

Tensorflowers ? 來源:lq ? 2019-01-25 10:37 ? 次閱讀

今天將介紹如何創建 TensorFlow Server 集群,及如何在該集群中發布計算圖。在這里,我們假設您熟悉編寫低級 TensorFlow 程序的基本概念 basic concepts。

你好,分布式 TensorFlow !

想要查看正在運行的簡單 TensorFlow 集群,請執行以下操作:

# Start a TensorFlow server as a single-process "cluster".$ python>>> import tensorflow as tf>>> c = tf.constant("Hello, distributed TensorFlow!")>>> server = tf.train.Server.create_local_server()>>> sess = tf.Session(server.target) # Create a session on the server.>>> sess.run(c)'Hello, distributed TensorFlow!'

tf.train.Server.create_local_server方法使用進程內 Server 創建單進程集群。

創建一個集群

TensorFlow “集群” 是一組參與 TensorFlow 圖的分布式執行的 “任務”。每個任務都與 TensorFlow“Server” 相關聯,該 server 包含可用于創建會話的 “master 主干”,以及在圖中執行操作的 “worker”。群集還可以劃分為一個或多個 “作業”,其中每個作業包含一個或多個任務。

要創建群集,請在群集中的每個任務中啟動一個 TensorFlow Server。每個任務通常在不同的計算機上運行,但您可以在同一臺計算機上運行多個任務(例如,控制不同的 GPU 設備)。在每項任務中,執行以下操作:

創建一個描述集群中所有任務的 tf.train.ClusterSpec 每項任務都應該相同

創建一個 tf.train.Server,將 tf.train.ClusterSpec 傳遞給構造函數,并使用作業名稱和任務索引標識本地任務

創建一個 tf.train.ClusterSpec 來描述集群

集群規范字典將作業名稱映射到網絡地址列表。將此字典傳遞給tf.train.ClusterSpec 構造函數。例如:

在每個任務中創建一個tf.train.Server 實例

tf.train.Server 對象包含一組本地設備,一組與 tf.train.ClusterSpec 中其他任務的連接,以及一個可以使用它們執行分布式計算的tf.Session。每個 server 都是特定命名作業的成員,并且在該作業中具有任務索引。一個 server 可以與群集中的任何其他服務器通信

例如,要啟動在 localhost:2222 和 localhost:2223 上運行的兩個服務器的集群,請在本地計算機上的兩個不同進程中運行以下代碼段:

# In task 0:cluster = tf.train.ClusterSpec({"local": ["localhost:2222", "localhost:2223"]})server = tf.train.Server(cluster, job_name="local", task_index=0)

# In task 1:cluster = tf.train.ClusterSpec({"local": ["localhost:2222", "localhost:2223"]})server = tf.train.Server(cluster, job_name="local", task_index=1)

注意:手動指定這些群集規范可能會很繁瑣,尤其是對于大型群集。我們正在開發以編程方式啟動任務的工具,例如:使用像 Kubernetes 這樣的集群管理器。如果您希望獲得某些特定集群管理器的技術支持,請在 GitHub issue 提出。

在模型中指定分布式設備

要對特定進程執行操作,可以使用相同的 tf.device函數來指定操作是在 CPU 還是 GPU 上運行。例如:

with tf.device("/job:ps/task:0"): weights_1 = tf.Variable(...) biases_1 = tf.Variable(...)with tf.device("/job:ps/task:1"): weights_2 = tf.Variable(...) biases_2 = tf.Variable(...)with tf.device("/job:worker/task:7"): input, labels = ... layer_1 = tf.nn.relu(tf.matmul(input, weights_1) + biases_1) logits = tf.nn.relu(tf.matmul(layer_1, weights_2) + biases_2) # ... train_op = ...with tf.Session("grpc://worker7.example.com:2222") as sess: for _ in range(10000): sess.run(train_op)

在上面的示例中,變量是在 ps 作業中的兩個任務上創建的,而模型的計算密集型部分是在 worker 作業中創建的。 TensorFlow 將在作業之間插入適當的數據傳輸(從 ps 到 worker 用于正向傳遞,從 worker 到 ps 用于應用漸變)。

復制訓練

一個常見的訓練配置,被稱為 “數據并行”,它涉及在不同的小批量數據上訓練相同的模型額 worker 作業中的多個任務,更新在 ps 作業中的一個或多個任務中托管的共享參數。所有任務通常在不同的機器上運行。在 TensorFlow 中有很多方法可以指定這個結構,我們正在構建庫,這將簡化指定復制模型的工作。可能有效的方法包括:

圖形內復制。在這種方法中,客戶端構建一個包含一組參數的tf.Graph(在tf.Variable 節點固定到 / job:ps);以及模型中計算密集型部分的多個副本,每個副本都固定在 / job:worker 中的不同任務中

圖之間的復制。在這種方法中,每個 / job:worker 任務都有一個單獨的客戶端,通常與 worker 任務在同一個進程中。每個客戶端構建一個包含參數的類似圖形(固定到 / job:psas,然后使用 tf.train.replica_device_setter將它們確定性地映射到相同的任務);以及模型的計算密集型部分的單個副本,固定到 / job:worker 中的本地任務。

異步訓練。在這種方法中,圖的每個副本都有一個獨立的訓練循環,無需協調即可執行。它與上述兩種復制形式兼容。

同步培訓。在此方法中,所有副本都為當前參數讀取相同的值,并行計算梯度,然后一起應用。它與圖形內復制兼容(例如,如在 CIFAR-10 multi-GPU trainer 中使用梯度平均),以及圖之間復制(例如,使用 tf.train.SyncReplicasOptimizer)均兼容。

綜合起來: 示例 trainer 計劃

以下代碼顯示了分布式 trainer 程序的框架,實現了圖形間復制和異步訓練。它包括參數 server 和 worker 任務的代碼。

import argparseimport sysimport tensorflow as tfFLAGS = Nonedef main(_): ps_hosts = FLAGS.ps_hosts.split(",") worker_hosts = FLAGS.worker_hosts.split(",") # Create a cluster from the parameter server and worker hosts. cluster = tf.train.ClusterSpec({"ps": ps_hosts, "worker": worker_hosts}) # Create and start a server for the local task. server = tf.train.Server(cluster, job_name=FLAGS.job_name, task_index=FLAGS.task_index) if FLAGS.job_name == "ps": server.join() elif FLAGS.job_name == "worker": # Assigns ops to the local worker by default. with tf.device(tf.train.replica_device_setter( worker_device="/job:worker/task:%d" % FLAGS.task_index, cluster=cluster)): # Build model... loss = ... global_step = tf.contrib.framework.get_or_create_global_step() train_op = tf.train.AdagradOptimizer(0.01).minimize( loss, global_step=global_step) # The StopAtStepHook handles stopping after running given steps. hooks=[tf.train.StopAtStepHook(last_step=1000000)] # The MonitoredTrainingSession takes care of session initialization, # restoring from a checkpoint, saving to a checkpoint, and closing when done # or an error occurs. with tf.train.MonitoredTrainingSession(master=server.target, is_chief=(FLAGS.task_index == 0), checkpoint_dir="/tmp/train_logs", hooks=hooks) as mon_sess: while not mon_sess.should_stop(): # Run a training step asynchronously. # See tf.train.SyncReplicasOptimizer for additional details on how to # perform *synchronous* training. # mon_sess.run handles AbortedError in case of preempted PS. mon_sess.run(train_op)if __name__ == "__main__": parser = argparse.ArgumentParser() parser.register("type", "bool", lambda v: v.lower() == "true") # Flags for defining the tf.train.ClusterSpec parser.add_argument( "--ps_hosts", type=str, default="", help="Comma-separated list of hostname:port pairs" ) parser.add_argument( "--worker_hosts", type=str, default="", help="Comma-separated list of hostname:port pairs" ) parser.add_argument( "--job_name", type=str, default="", help="One of 'ps', 'worker'" ) # Flags for defining the tf.train.Server parser.add_argument( "--task_index", type=int, default=0, help="Index of task within the job" ) FLAGS, unparsed = parser.parse_known_args() tf.app.run(main=main, argv=[sys.argv[0]] + unparsed)

要使用兩個參數 server 和兩個 worker 程序啟動 trainer,請使用以下命令行(假設該腳本名為 trainer.py):

# On ps0.example.com:$ python trainer.py \ --ps_hosts=ps0.example.com:2222,ps1.example.com:2222 \ --worker_hosts=worker0.example.com:2222,worker1.example.com:2222 \ --job_name=ps --task_index=0# On ps1.example.com:$ python trainer.py \ --ps_hosts=ps0.example.com:2222,ps1.example.com:2222 \ --worker_hosts=worker0.example.com:2222,worker1.example.com:2222 \ --job_name=ps --task_index=1# On worker0.example.com:$ python trainer.py \ --ps_hosts=ps0.example.com:2222,ps1.example.com:2222 \ --worker_hosts=worker0.example.com:2222,worker1.example.com:2222 \ --job_name=worker --task_index=0# On worker1.example.com:$ python trainer.py \ --ps_hosts=ps0.example.com:2222,ps1.example.com:2222 \ --worker_hosts=worker0.example.com:2222,worker1.example.com:2222 \ --job_name=worker --task_index=1

詞匯表

客戶端

客戶端通常是一個程序,用于建立一個 TensorFlow 圖,并構造 tensorflow :: Session 以與集群交互。客戶端主要使用 Python 或 C ++ 編寫。一個單客戶端進程可以直接與多個 TensorFlow Server 交互(請參閱上面的 “復制訓練”),一個單 Server 也可以為多個客戶端提供服務。

集群

一個 TensorFlow 集群包括一個或多個 “作業”,每個 “作業” 被劃分為一個或多個 “任務” 列表。一個集群通常效力于一個特定的高級別的目標,例如多機并行訓練一個神經網絡,并行使用多臺機器。集群由 tf.train.ClusterSpec 目標函數定義。

作業

一個作業由一系列 “任務” 組成,通常用于實現共同目的。 例如,名為 ps 的作業(用于 “參數服務器”)通常承載存儲和更新變量參數的節點;而名為 worker 的作業通常托管執行計算密集型任務的無狀態節點。作業中的任務通常在不同的計算機上運行。作業角色集是靈活的:例如,一個 worker 可以維持某種狀態。

核心服務

RPC 服務為分布式設備之間提供遠程訪問,并充當會話目標的角色。核心設備實現 tensorflow :: Session 接口,負責協調跨一個或多個 “worker services” 之間的工作。所有 TensorFlow Servers 都實現核心服務。

任務

任務對應于特定的 TensorFlow Server,通常對應于單個進程。任務屬于特定的 “作業”,并通過該作業的任務列表中的索引標識來區分。

TensorFlowserver運行 tf.train.Server 實例的進程,該實例是集群的成員,并導出 “master service 主服務” 和 “worker service 工作服務”。

工作服務

RPC 服務,使用其本地設備執行 TensorFlow 圖的部分。 Worker service 工作服務執行 worker_service.proto。所有的 TensorFlow Server 都執行 worker service 工作服務。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • gpu
    gpu
    +關注

    關注

    28

    文章

    4764

    瀏覽量

    129180
  • 函數
    +關注

    關注

    3

    文章

    4344

    瀏覽量

    62847
  • tensorflow
    +關注

    關注

    13

    文章

    329

    瀏覽量

    60578

原文標題:如何創建 TensorFlow Server 集群

文章出處:【微信號:tensorflowers,微信公眾號:Tensorflowers】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    模擬集群和數字集群之間的區別和特點

      模擬集群通信是指它采用模擬話音進行通信,整個系統內沒有數字制技術,后來為了使通信連接更為可靠,不少集群通信系統供應商采用了數字信令,使集群通信系統的用戶連接比較可靠、聯通的速度有所提高,而且系統
    發表于 12-22 15:10

    阿里云上Kubernetes集群聯邦

    ]或者[升級VIP]在彈出的頁面中更改最低TTL值為60s,子域名級別為7級,然后保存。創建多個子集群本示例創建的Federation集群包含兩個子
    發表于 03-12 17:10

    Hadoop的集群環境部署說明

    Hadoop集群環境搭建是很多學習hadoop學習者或者是使用者都必然要面對的一個問題,網上關于hadoop集群環境搭建的博文教程也蠻多的。對于玩hadoop的高手來說肯定沒有什么問題,甚至可以說
    發表于 10-12 15:51

    minikube的安裝與創建集群

    使用minikube安裝k8s單節點集群
    發表于 05-09 16:14

    Linux的集群搭建方法

    集群(cluster)技術是一種較新的技術,通過集群技術,可以在付出較低成本的情況下獲得在性能、可靠性、靈活性方面的相對較高的收益,其任務調度則是集群系統中的核心技術。
    發表于 07-16 07:46

    hadoop集群搭建的準備

    hadoop集群搭建系列(step01:集群搭建準備)
    發表于 03-31 09:47

    Kafka集群環境的搭建

    /kafka-server-stop.sh# 進程查看[root@node02 kafka2.11]# jps注意:這里默認啟動了zookeeper集群服務,并且集群下的kafka分別啟動。6、基礎管理命令
    發表于 01-05 17:55

    什么是集群

    什么是集群????? ??????? 簡單的說,集群(cluster)就是一
    發表于 12-29 09:32 ?2880次閱讀

    SQL Server 2000集群服務器優缺點

    SQL Server 2000集群服務器優缺點 由二臺或更多物理上獨立的服務器共同組成的“虛擬”服務器稱之為集群服務器。一項稱做MicroSoft集群
    發表于 01-11 10:56 ?1236次閱讀

    基于Jini集群網格計算模型及算法

    研究如何使用Jini 來實現集群網格計算環境,給出系統模型JCGE(a Jini-based cluster grid environment),設計一個在此模型上進行并行計算的通用算法,并在
    發表于 05-14 11:05 ?17次下載
    基于Jini<b class='flag-5'>集群</b>網格<b class='flag-5'>計算</b>模型及算法

    集群管理技術

    學習完本課程,您應該能夠:熟悉HGMP集群的協議基礎NDP和NTDP,掌握HGMP集群中的各個角色,熟練創建并管理集群設備。
    發表于 04-12 14:32 ?10次下載

    Kubernetes的集群部署

    Kubeadm是一種Kubernetes集群部署工具,通過kubeadm init命令創建master節點,通過 kubeadm join命令把node節點加入到集群
    的頭像 發表于 02-15 10:35 ?1762次閱讀

    計算集群計算有何區別?

    是虛擬化的資源池。它允許我們在線創建、配置和定制我們的應用程序。用戶可以隨時隨地訪問任何資源,而無需擔心實際資源的管理和維護。云計算通過網絡提供基于硬件和軟件的計算資源的組合。 二、集群
    的頭像 發表于 09-11 17:51 ?1473次閱讀

    高性能計算集群的能耗優化

    高性能計算(HighPerformanceComputing,HPC)是指利用大規模并行計算集群來解決復雜的科學和工程問題的技術。高性能計算集群
    的頭像 發表于 05-25 08:27 ?480次閱讀
    高性能<b class='flag-5'>計算</b><b class='flag-5'>集群</b>的能耗優化

    特斯拉得州超級計算集群命名“Cortex”

    特斯拉在科技創新的征途上再邁重要一步,其得克薩斯州超級計算集群正式命名為“Cortex”。該集群由馬斯克親自命名,并在其最近的參觀中公開亮相。據馬斯克透露,“Cortex”集成了約10萬顆英偉達尖端芯片,包括H100與H200系
    的頭像 發表于 08-06 11:16 ?593次閱讀
    主站蜘蛛池模板: 97色伦图片7778久久| 99视频在线免费| 99视频国产热精品视频| 久久久91精品国产一区二区 | 女人色极品影院| 主播蜜汁丝袜精品自拍| 精品久久伦理中文字幕| 亚洲字幕在线观看| 久草色在线| 中文字幕日本在线mv视频精品| 久久精品久精品99热| 玉娇龙续集春雪瓶txt免费阅读| 狠狠色香婷婷久久亚洲精品| 亚洲欧美中文日韩v在线| 精品日韩欧美一区二区三区| 语文老师扒开胸罩喂我奶| 蜜臀色欲AV无人A片一区| bl 纯肉 高Hbl被强文| 入禽太深在线观看免费高清| 国产99在线视频| 无码人妻精品一区二区蜜桃色欲| 国产精品女主播主要上线| 亚洲国产欧美在线看片| 久久re热线视频精品99| 91av电影在线观看| 日本zljzljzlj精品| 国产精品99久久久久久AV| 亚洲精品久久久久久偷窥| 久久www成人看片| a一级毛片视频免费看| 色呦呦人人视频| 精品九九视频| jizz黑丝| 亚洲福利电影一区二区?| 久久香蕉国产线看观看首页| 999视频精品全部免费观看| 色99蜜臀AV无码| 狠狠色狠狠色综合日日2019| 中字幕视频在线永久在线| 欧美高跟镣铐bdsm视频| 高清欧美videos sexo|