深入理解 TensorFlow 架構設計與實現原理 深入理解TensorFlow:架构设计与实现原理

彭靖田 林健 白小龍

立即出貨

買這商品的人也買了...

商品描述

本書以TensorFlow 1.2為基礎,從基本概念、內部實現和實踐等方面深入剖析了TensorFlow。書中首先介紹了TensorFlow設計目標、基本架構、環境準備和基礎概念,接著重點介紹了以數據流圖為核心的機器學習編程框架的設計原則與核心實現,緊接著還將TensorFlow與深度學習相結合,從理論基礎和程序實現這兩個方面系統介紹了CNN、GAN和RNN等經典模型,然後深入剖析了TensorFlow運行時核心、通信原理和數據流圖計算的原理與實現,最後全面介紹了TensorFlow生態系統的發展。

作者簡介

彭靖田,才雲科技技術總監,谷歌機器學習開發專家(ML GDE),Kubeflow Core Maintainer,TensorFlow Contributor,曾一度成為TensorFlow社區全球前40的貢獻者。加州大學圣迭戈分校訪問學者,畢業於浙江大學竺可楨學院求是科學班。曾為華為深度學習團隊核心成員,主要參與華為深度學習平台的設計和研發工作。

林健,華為深度學習團隊系統工程師。在中科院計算所取得博士學位,並在美國俄亥俄州立大學做過博士後研究。長期從事系統軟件研發,工作涉及高性能計算與分佈式系統,愛好開源軟件與人工智能。曾參與開發CNGrid GOS、MVAPICH等工業級軟件,並協作創建LingCloud、DataMPI等開源項目。

白小龍,華為公司深度學習雲服務的技術負責人,主要負責深度學習平台、模型和算法的研發。長期從事信號、圖像處理和機器學習研究,於2015年6月畢業於浙江大學並取得工學博士學位,曾獲教育部博士生學術新人獎。

目錄大綱

第一部分基礎篇
第1章TensorFlow系統概述2 
1.1簡介2 
1.1.1產生背景2 
1.1.2獨特價值3 
1.1.3版本變遷4 
1.1.4與其他主流深度學習框架的對比6 
1.2設計目標7 
1.2. 1靈活通用的深度學習庫8 
1.2.2端雲結合的人工智能引擎9 
1.2.3高性能的基礎平台軟件10 
1.3基本架構12 
1.3.1工作形態12 
1.3.2組件結構13 
1.4小結14  

第2章TensorFlow環境準備15 
2.1安裝15 
2.1.1 TensorFlow安裝概述15 
2.1.2使用Anaconda安裝17 
2.1.3使用原生pip安裝17 
2.1.4使用virtualenv安裝18 
2.1.5使用Docker安裝19 
2.1.6使用源代碼編譯安裝20 
2.1.7 Hello TensorFlow 22 
2.2依賴項23 
2.2.1 Bazel軟件構建工具24 
2.2.2 Protocol Buffers數據結構序列化工具25
2.2.3 Eigen線性代數計算庫27 
2.2.4 CUDA統一計算設備架構28 
2.3源代碼結構29 
2.3.1根目錄29 
2.3.2 tensorflow目錄30 
2.3.3 tensorflow/core目錄31 
2.3.4 tensorflow/python目錄32 
2.3.5安裝目錄33 
2.4小結33 

第3章TensorFlow基礎概念34 
3.1編程範式:數據流圖34 
3.1.1聲明式編程與命令式編程34 
3.1.2聲明式編程在深度學習應用上的優勢35 
3.1.3 TensorFlow數據流圖的基本概念38 
3.2數據載體:張量40 
3.2.1張量:Tensor 40 
3.2.2稀疏張量:SparseTensor 44 
3.3模型載體:操作46 
3.3.1計算節點:Operation 46 
3.3 .2存儲節點:Variable 49 
3.3.3數據節點:Placeholder 53 
3.4運行環境:會話55 
3.4.1普通會話:Session 55 
3.4.2交互式會話:InteractiveSession 59 
3.4.3擴展閱讀:會話實現原理59 
3.5訓練工具:優化器61
3.5.1損失函數與優化算法61 
3.5.2優化器概述64 
3.5.3使用minimize方法訓練模型66 
3.5.4擴展閱讀:模型訓練方法進階68 
3.6一元線性回歸模型的最佳實踐72 
3.7小結76 

第二部分關鍵模塊篇
第4章TensorFlow數據處理方法78 
4.1輸入數據集78 
4.1.1使用輸入流水線並行讀取數據78 
4.1.2創建批樣例數據的方法86 
4.1.3填充數據節點的方法87 
4.1.4處理CIFAR-10數據集的最佳實踐88 
4.1.5擴展閱讀:MNIST數據集91 
4.2模型參數92 
4.2.1模型參數的典型使用流程92 
4.2.2使用tf.Variable創建、初始化和更新模型參數92 
4.2.3使用tf.train.Saver保存和恢復模型參數98 
4.2.4使用變量作用域處理複雜模型100 
4.3命令行參數103 
4.3.1使用argparse解析命令行參數103 
4.3.2使用tf. app.flags解析命令行參數108 
4.4小結111
 
第5章TensorFlow編程框架112 
5.1單機程序編程框架112 
5.1.1概述112
5.1.2創建單機數據流圖114 
5.1.3創建並運行單機會話116 
5.2分佈式程序編程框架118 
5.2.1 PS-worker架構概述118 
5.2.2分佈式程序編程框架概述120 
5.2.3創建TensorFlow集群121 
5.2.4將操作放置到目標設備124 
5.2.5數據並行模式124 
5.2.6同步訓練機制125 
5.2.7異步訓練機制130 
5.2.8使用Supervisor管理模型訓練131 
5.2.9分佈式同步訓練的最佳實踐133 
5.3小結137 

第6章TensorBoard可視化工具138 
6.1概述138 
6.2可視化數據流圖142 
6.2.1名字作用域與抽象節點142 
6.2.2可視化數據流圖的最佳實踐144 
6.2.3擴展閱讀:匯總數據和事件數據145 
6.2.4擴展閱讀:揭秘tf.summary.FileWriter工作原理147 
6.3可視化學習過程149 
6.3.1匯總操作概述149 
6.3.2使用tf.summary.scalar生成折線圖150 
6.3.3使用tf.summary.histogram生成數據分佈圖152
6.3.4使用tf.summary.image生成圖像154 
6.3.5使用tf.summary.audio生成音頻155 
6.3.6可視化MNIST softmax模型學習過程的最佳實踐156 
6.4可視化高維數據158 
6.4.1使用TensorBoard可視化高維數據158 
6.4.2可視化MNIST數據集的最佳實踐160 
6.5小結163 

第7章模型託管工具:TensorFlow Serving 164 
7.1概述164 
7.2系統架構165 
7.3安裝167 
7.3.1使用APT安裝ModelServer 168 
7.3.2使用源碼編譯安裝ModelServer 169 
7.4最佳實踐170 
7.4.1導出模型170 
7.4.2發布模型服務173 
7.4.3更新線上模型服務174 
7.5小結175 

第三部分算法模型篇
第8章深度學習概述178 
8.1深度學習的歷史178 
8.1.1感知機模型與神經網絡178 
8.1.2神經網絡的寒冬與復蘇179 
8.1.3神經網絡的發展與第二次寒冬181 
8.1.4深度學習時代的到來183 
8.2深度學習的主要應用184
8.2.1計算機視覺185 
8.2.2自然語言處理186 
8.2.3強化學習188 
8.3深度學習與TensorFlow 190 
8.4小結191 

第9章CNN模型192 
9.1 CNN 192 
9.1.1 CNN簡介192 
9.1.2卷積層193 
9.1.3激活層195 
9.1.4池化層195 
9.1.5全連接層196 
9.1.6 Dropout層196 
9.1.7 BN層197 
9.1.8常用的CNN圖像分類模型197 
9.2 TensorFlow-Slim 204 
9.2.1 TensorFlow-Slim總體結構204 
9.2.2 datasets包和data包205 
9.2.3 preprocessing包207 
9.2.4 deployment包207 
9.2.5 nets包209 
9.2.6 TensorFlow-Slim最佳實踐212 
9.3應用216 
9.3.1物體檢測216 
9.3.2圖像分割221 
9.4小結222 

第10章GAN模型223 
10.1原理、特點及應用223 
10.1.1原理224
10.1.2特點225 
10.1.3應用226 
10.2 GAN模型的改進228 
10.2.1 CGAN模型228 
10.2.2 LAPGAN模型229 
10.2.3 DCGAN模型230 
10.2.4 InfoGAN模型230 
10.2.5 LSGAN模型231 
10.2.6 WGAN模型232 
10.3最佳實踐233 
10.4小結238 

第11章RNN模型239 
11.1基本RNN單元及其變種239 
11.1.1 RNN模型簡介239 
11.1.2基本RNN單元240 
11.1.3 LSTM單元242 
11.1.4 GRU單元243 
11.1.5雙向RNN單元244 
11.1.6帶有其他特性的RNN單元245 
11.2 RNN模型247 
11.2.1 PTB-LSTM語言模型247 
11.2.2 Seq2Seq模型251 
11.3小結254 

第四部分核心揭秘篇
第12章TensorFlow運行時核心設計與實現256 
12.1運行時框架概述256 
12.2關鍵數據結構257 
12.2.1張量相關數據結構258
12.2.2設備相關數據結構260 
12.2.3數據流圖相關的數據結構263 
12.3公共基礎機制266 
12.3.1內存分配266 
12.3.2線程管理268 
12.3.3多語言接口269 
12.3.4 XLA編譯技術270 
12.3.5單元測試框架271 
12.4外部環境接口272 
12.4.1加速器硬件接口272 
12.4.2系統軟件接口275 
12.5小結276 

第13章通信原理與實現277 
13.1概述277 
13.2進程內通信278 
13.2.1通信接口278 
13.2.2會合點機制280 
13.2.3異構設備內存訪問282 
13.3進程間通信283 
13.3.1 gRPC通信機制284 
13.3.2控制通信286 
13.3.3數據通信290 
13.4 RDMA通信模塊294 
13.4.1模塊結構295 
13.4.2消息語義296 
13.4.3通信流程297 
13.5小結300 

第14章數據流圖計算原理與實現301 
14.1概述301
14.2數據流圖創建302 
14.2.1流程與抽象303 
14.2.2全圖構造305 
14.2.3子圖提取306 
14.2.4圖切分307 
14.2.5圖優化308 
14.3單機會話運行308 
14.3.1流程與抽象309 
14.3.2執行器獲取311 
14.3.3輸入數據填充312 
14.3.4圖運行313 
14.3.5輸出數據獲取315 
14.3.6張量保存315 
14.4分佈式會話運行315 
14.4.1主-從模型316 
14.4.2主要抽象317 
14.4.3 client創建會話319 
14.4.4 client請求圖運行320 
14.4.5 master驅動圖運行321 
14.4.6 worker實施圖運行323 
14.5操作節點執行325 
14.5.1核函數抽象325 
14.5 .2 CPU上的執行流程326 
14.5.3 CUDA GPU上的執行流程326 
14.6小結327 

第五部分生態發展篇
第15章TensorFlow生態環境330 
15.1生態環境概況330
15.1.1社區託管組件330 
15.1.2第三方項目333 
15.2深度神經網絡庫Keras 334 
15.2.1概述334 
15.2.2模型概述335 
15.2.3順序模型336 
15.2.4函數式模型338 
15.3 TensorFlow與Kubernetes生態的結合340 
15.4 TensorFlow與Spark生態的結合344 
15.5 TensorFlow通信優化技術345 
15.6 TPU及神經網絡處理器348 
15.7 NNVM模塊化深度學習組件349 
15.8 TensorFlow未來展望——TFX 351 
15.9小結353 
附錄A 354