機(jī)器學(xué)習(xí)的三個(gè)核心的定義:定義模型逮京、定義目標(biāo)函數(shù)和定義優(yōu)化方法
- 構(gòu)建計(jì)算圖
- 分發(fā)計(jì)算任務(wù)
- 執(zhí)行計(jì)算任務(wù)
另外還要準(zhǔn)備數(shù)據(jù)
對(duì)大多數(shù)的任務(wù)來(lái)說(shuō),第2步和第3步操作對(duì)于用戶來(lái)說(shuō)相對(duì)容易,于是我們的主要精力都花在第1步--也就是==構(gòu)建計(jì)算圖==上
在創(chuàng)建變量時(shí)只寫了一句代碼祝旷,背后卻發(fā)生了很多更細(xì)粒度的Op,所以在計(jì)算圖執(zhí)行時(shí),我們要明白這些Op的來(lái)源
https://suhee05.github.io/tensorflow-basics/
定義數(shù)據(jù)流圖 -----計(jì)算圖 ----完成計(jì)算圖定義 ----Graph
運(yùn)行數(shù)據(jù)流圖(在數(shù)據(jù)上) -----會(huì)話 ----構(gòu)建訓(xùn)練迭代 ----Session
TensorFlow多GPU并行的實(shí)現(xiàn)
深度學(xué)習(xí)算法由于其數(shù)據(jù)量大怀跛、算法復(fù)雜度高等特點(diǎn)距贷,常常需要采用某種形式的并行機(jī)制,常用的并行方法有數(shù)據(jù)并行(data parallel)和模型并行(model parallel)兩種吻谋。
數(shù)據(jù)并行的原理很簡(jiǎn)單忠蝗,如下圖,其中CPU主要負(fù)責(zé)梯度平均和參數(shù)更新漓拾,而GPU1和GPU2主要負(fù)責(zé)訓(xùn)練模型副本(model replica)什湘,這里稱作“模型副本”是因?yàn)樗鼈兌际腔谟?xùn)練樣例的子集訓(xùn)練得到的,模型之間具有一定的獨(dú)立性晦攒。具體的訓(xùn)練步驟如下闽撤,
同時(shí)使用多個(gè)硬件資源計(jì)算不同batch的數(shù)據(jù)的梯度,然后匯總梯度進(jìn)行全局的更新脯颜。
(1)在GPU1哟旗、GPU2上分別定義模型參數(shù)變量,網(wǎng)絡(luò)結(jié)構(gòu)栋操;
(2)對(duì)于單獨(dú)的GPU闸餐,分別從數(shù)據(jù)管道讀取不同的數(shù)據(jù)塊,然后進(jìn)行前向傳播(forward propagation)計(jì)算出loss矾芙,再計(jì)算關(guān)于當(dāng)前Variables的gradients舍沙;
(3)把所有GPU輸出的梯度數(shù)據(jù)轉(zhuǎn)移到CPU上,先進(jìn)行梯度取平均操作剔宪,然后進(jìn)行模型參數(shù)的更新拂铡;
(4)重復(fù)步驟(1)-(3),直到模型參數(shù)收斂為止葱绒;
屏幕快照 2019-02-13 下午1.15.47.png