国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Python > 正文

TensorFlow學(xué)習(xí)之分布式的TensorFlow運(yùn)行環(huán)境

2020-02-15 21:23:19
字體:
供稿:網(wǎng)友

當(dāng)我們?cè)诖笮偷臄?shù)據(jù)集上面進(jìn)行深度學(xué)習(xí)的訓(xùn)練時(shí),往往需要大量的運(yùn)行資源,而且還要花費(fèi)大量時(shí)間才能完成訓(xùn)練。

1.分布式TensorFlow的角色與原理

在分布式的TensorFlow中的角色分配如下:

PS:作為分布式訓(xùn)練的服務(wù)端,等待各個(gè)終端(supervisors)來連接。

worker:在TensorFlow的代碼注釋中被稱為終端(supervisors),作為分布式訓(xùn)練的計(jì)算資源終端。

chief supervisors:在眾多的運(yùn)算終端中必須選擇一個(gè)作為主要的運(yùn)算終端。該終端在運(yùn)算終端中最先啟動(dòng),它的功能是合并各個(gè)終端運(yùn)算后的學(xué)習(xí)參數(shù),將其保存或者載入。

每個(gè)具體的網(wǎng)絡(luò)標(biāo)識(shí)都是唯一的,即分布在不同IP的機(jī)器上(或者同一個(gè)機(jī)器的不同端口)。在實(shí)際的運(yùn)行中,各個(gè)角色的網(wǎng)絡(luò)構(gòu)建部分代碼必須100%的相同。三者的分工如下:

服務(wù)端作為一個(gè)多方協(xié)調(diào)者,等待各個(gè)運(yùn)算終端來連接。

chief supervisors會(huì)在啟動(dòng)時(shí)同一管理全局的學(xué)習(xí)參數(shù),進(jìn)行初始化或者從模型載入。

其他的運(yùn)算終端只是負(fù)責(zé)得到其對(duì)應(yīng)的任務(wù)并進(jìn)行計(jì)算,并不會(huì)保存檢查點(diǎn),用于TensorBoard可視化中的summary日志等任何參數(shù)信息。

在整個(gè)過程都是通過RPC協(xié)議來進(jìn)行通信的。

2.分布部署TensorFlow的具體方法

配置過程中,首先建立一個(gè)server,在server中會(huì)將ps及所有worker的IP端口準(zhǔn)備好。接著,使用tf.train.Supervisor中的managed_ssion來管理一個(gè)打開的session。session中只是負(fù)責(zé)運(yùn)算,而通信協(xié)調(diào)的事情就都交給supervisor來管理了。

3.部署訓(xùn)練實(shí)例

下面開始實(shí)現(xiàn)一個(gè)分布式訓(xùn)練的網(wǎng)絡(luò)模型,以線性回歸為例,通過3個(gè)端口來建立3個(gè)終端,分別是一個(gè)ps,兩個(gè)worker,實(shí)現(xiàn)TensorFlow的分布式運(yùn)算。

1. 為每個(gè)角色添加IP地址和端口,創(chuàng)建sever,在一臺(tái)機(jī)器上開3個(gè)不同的端口,分別代表PS,chief supervisor和worker。角色的名稱用strjob_name表示,以ps為例,代碼如下:

# 定義IP和端口strps_hosts = 'localhost:1681'strworker_hosts = 'localhost:1682,localhost:1683'# 定義角色名稱strjob_name = 'ps'task_index = 0# 將字符串轉(zhuǎn)數(shù)組ps_hosts = strps_hosts.split(',')worker_hosts = strps_hosts.split(',')cluster_spec = tf.train.ClusterSpec({'ps': ps_hosts, 'worker': worker_hosts})# 創(chuàng)建serverserver = tf.train.Server({'ps':ps_hosts, 'worker':worker_hosts}, job_name=strjob_name, task_index=task_index)

2為ps角色添加等待函數(shù)

ps角色使用server.join函數(shù)進(jìn)行線程掛起,開始接受連續(xù)消息。

# ps角色使用join進(jìn)行等待if strjob_name == 'ps':  print("wait")  server.join()

3.創(chuàng)建網(wǎng)絡(luò)的結(jié)構(gòu)

與正常的程序不同,在創(chuàng)建網(wǎng)絡(luò)結(jié)構(gòu)時(shí),使用tf.device函數(shù)將全部的節(jié)點(diǎn)都放在當(dāng)前任務(wù)下。在tf.device函數(shù)中的任務(wù)是通過tf.train.replica_device_setter來指定的。在tf.train.replica_device_setter中使用worker_device來定義具體任務(wù)名稱;使用cluster的配置來指定角色及對(duì)應(yīng)的IP地址,從而實(shí)現(xiàn)管理整個(gè)任務(wù)下的圖節(jié)點(diǎn)。代碼如下:

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 扶绥县| 正定县| 嘉禾县| 迭部县| 南丰县| 荥经县| 阳谷县| 南京市| 宝兴县| 定兴县| 睢宁县| 潮州市| 务川| 静宁县| 鄱阳县| 浦北县| 建昌县| 庆元县| 南昌县| 隆林| 涞水县| 崇仁县| 洮南市| 阿拉善右旗| 伽师县| 武城县| 桑日县| 崇阳县| 鞍山市| 绥滨县| 三明市| 雅安市| 滕州市| 罗山县| 五莲县| 常州市| 鹤壁市| 从江县| 桓仁| 海门市| 长宁区|