# 十四、TensorFlow 處理單元
Google 服務(例如 Google 搜索(RankBrain),街景,Google 照片和 Google 翻譯)有一個共同點:它們都使用 Google 的 Tensor 處理單元或 **TPU** 進行計算。
您可能在想什么是 TPU,這些服務有什么好處? 所有這些服務都在后臺使用最新的機器學習算法,并且這些算法涉及大量計算。 TPU 有助于加速所涉及的神經網絡計算。 甚至 AlphaGo,一種在 Go 游戲中擊敗 Lee Sedol 的深度學習程序,都由 TPU 推動。 因此,讓我們看看 TPU 到底是什么。
TPU 是 Google 專門為機器學習而定制的定制專用集成電路(**ASIC**),是針對 Tensorflow 量身定制的。 它基于 28 納米工藝構建,運行頻率為 700 MHz,運行時消耗 40 W 的能量。 它包裝為外部加速卡,可以插入現有的 SATA 硬盤插槽中。 TPU 通過 PCIe Gen 3×16 總線連接到主機 CPU,該總線提供 12.5 GB/s 的有效帶寬。
到目前為止,第一代 TPU 的目標是推理,即使用已經訓練好的模型。 DNN 的訓練通常需要更多時間,但仍在 CPU 和 GPU 上進行。 在 [2017 年 5 月的博客文章](https://www.blog.google/topics/google-cloud/google-cloud-offer-tpus-machine-learning/)中宣布的第二代 TPU 都可以訓練和推斷機器學習模型。
# TPU 的組件
在本書涵蓋的所有深度學習模型中,無論學習范例如何,都需要進行三個基本計算:乘法,加法和激活函數的應用。
前兩個成分是矩陣乘法的一部分:權重矩陣`W`需要與輸入矩陣`X`相乘`W^T · X`; 矩陣乘法在 CPU 上的計算量很大,盡管 GPU 使操作并行化,但仍有改進的余地。
TPU 具有 65,536 個 8 位整數矩陣乘法器單元(**MXU**),峰值吞吐量為 92 TOPS。 GPU 和 TPU 乘法之間的主要區別在于 GPU 包含浮點乘法器,而 TPU 包含 8 位整數乘法器。 TPU 還包含一個統一緩沖區(**UB**),用作寄存器的 24 MB SRAM 和一個包含硬接線激活函數的激活單元(**AU**)。
MXU 是使用脈動數組架構實現的。 它包含一個數組算術邏輯單元(ALU),該數組連接到網狀拓撲中的少量最近鄰居。 每個數據值僅讀取一次,但在流過 ALU 數組時會多次用于不同的操作,而無需將其存儲回寄存器。 TPU 中的 ALU 僅以固定模式執行乘法和加法。 MXU 已針對矩陣乘法進行了優化,不適用于通用計算。
每個 TPU 還具有一個片外 8GiB DRAM 池,稱為加權存儲器。 它具有四個階段的流水線,并執行 CISC 指令。 到目前為止,TPU 由六個神經網絡組成:兩個 MLP,兩個 CNN 和兩個 LSTM。
在高級指令的幫助下對 TPU 進行編程; 下面是一些用于對 TPU 進行編程的指令:
* `Read_Weights`:從內存讀取權重
* `Read_Host_Memory`:從內存中讀取數據
* `MatrixMultiply/Convolve`:與數據相乘或卷積并累加結果
* `Activate`:應用激活函數
* `Write_Host_Memory`:將結果寫入存儲器
Google 創建了一個 API 棧,以方便 TPU 編程; 它將來自 Tensorflow 圖的 API 調用轉換為 TPU 指令。
# TPU 的優勢
TPU 提供的優于 GPU 和 CPU 的首要優勢是性能。 Google 將 TPU 的性能與運行基準代碼(代表 95% 的推理工作量)的服務器級 Intel Haswell CPU 和 NVIDIA K80 GPU 進行了比較。 它發現 TPU 的速度比 NVIDIA GPU 和 Intel CPU 快 15-30 倍。
第二個重要參數是功耗。 降低功耗非常重要,因為它具有雙重能源優勢:它不僅減少了功耗,而且還通過降低散熱成本來散熱,從而節省了功耗,從而消除了加工過程中產生的熱量。 TPU / CPU 每瓦性能比其他 CPU 和 GPU 配置提高了 30-80 倍。
TPU 的另一個優點是其最小化和確定性的設計,因為它們一次只能執行一個任務。
與 CPU 和 GPU 相比,單線程 TPU 沒有任何復雜的微架構功能會消耗晶體管和能量來改善平均情況,但不會消耗 99% 的情況:沒有緩存,分支預測,亂序執行, 多處理,推測性預取,地址合并,多線程,上下文切換等。 極簡主義是特定領域處理器的優點。
# 訪問 TPU
Google 已決定不直接將 TPU 出售給他人; 取而代之的是,將通過 Google 云平臺提供 TPU:[Cloud TPU Alpha](https://cloud.google.com/tpu/)。 Cloud TPU Alpha 將提供高達 180 teraflops 的計算性能和 64 GB 的超高帶寬內存。 用戶將能夠從自定義虛擬機連接到這些 Cloud TPU。
Google 還決定向全球的機器學習研究人員免費提供 1000 個云 TPU 集群,以加快開放式機器學習研究的步伐。 在有限的計算時間內,將授予選定的個人訪問權限; [個人可以使用以下鏈接進行注冊](https://services.google.com/fb/forms/tpusignup/)。 根據 Google Blog:
“由于 TensorFlow 研究云的主要目標是使整個開放式機器學習研究社區受益,因此,成功的申請人有望做到以下幾點:
通過同行評審的出版物,開源代碼,博客文章或其他開放媒體與世界分享其 TFRC 支持的研究
與 Google 分享具體的建設性反饋,以幫助我們隨著時間的推移改進 TFRC 計劃和基礎的 Cloud TPU 平臺。
想象一下 ML 加速豐富的未來,并基于這種未來開發新的機器學習模型。”
# TPU 上的資源
* Norman P.Jouppi 等人,張量處理單元的數據中心內性能分析,arXiv:1704.04760(2017)。 在本文中,作者將 TPU 與服務器級的 Intel Haswell CPU 和 NVIDIA k80 GPU 進行了比較。 本文以 TPU 與 CPU 和 K80 GPU 的性能為基準。
* [此 Google 博客通過以下簡單術語說明了 TPU 及其工作原理](https://cloud.google.com/blog/big-data/2017/05/an-in-depth-look-at-googles-first-tensor-processing-unit-tpu)
- TensorFlow 1.x 深度學習秘籍
- 零、前言
- 一、TensorFlow 簡介
- 二、回歸
- 三、神經網絡:感知器
- 四、卷積神經網絡
- 五、高級卷積神經網絡
- 六、循環神經網絡
- 七、無監督學習
- 八、自編碼器
- 九、強化學習
- 十、移動計算
- 十一、生成模型和 CapsNet
- 十二、分布式 TensorFlow 和云深度學習
- 十三、AutoML 和學習如何學習(元學習)
- 十四、TensorFlow 處理單元
- 使用 TensorFlow 構建機器學習項目中文版
- 一、探索和轉換數據
- 二、聚類
- 三、線性回歸
- 四、邏輯回歸
- 五、簡單的前饋神經網絡
- 六、卷積神經網絡
- 七、循環神經網絡和 LSTM
- 八、深度神經網絡
- 九、大規模運行模型 -- GPU 和服務
- 十、庫安裝和其他提示
- TensorFlow 深度學習中文第二版
- 一、人工神經網絡
- 二、TensorFlow v1.6 的新功能是什么?
- 三、實現前饋神經網絡
- 四、CNN 實戰
- 五、使用 TensorFlow 實現自編碼器
- 六、RNN 和梯度消失或爆炸問題
- 七、TensorFlow GPU 配置
- 八、TFLearn
- 九、使用協同過濾的電影推薦
- 十、OpenAI Gym
- TensorFlow 深度學習實戰指南中文版
- 一、入門
- 二、深度神經網絡
- 三、卷積神經網絡
- 四、循環神經網絡介紹
- 五、總結
- 精通 TensorFlow 1.x
- 一、TensorFlow 101
- 二、TensorFlow 的高級庫
- 三、Keras 101
- 四、TensorFlow 中的經典機器學習
- 五、TensorFlow 和 Keras 中的神經網絡和 MLP
- 六、TensorFlow 和 Keras 中的 RNN
- 七、TensorFlow 和 Keras 中的用于時間序列數據的 RNN
- 八、TensorFlow 和 Keras 中的用于文本數據的 RNN
- 九、TensorFlow 和 Keras 中的 CNN
- 十、TensorFlow 和 Keras 中的自編碼器
- 十一、TF 服務:生產中的 TensorFlow 模型
- 十二、遷移學習和預訓練模型
- 十三、深度強化學習
- 十四、生成對抗網絡
- 十五、TensorFlow 集群的分布式模型
- 十六、移動和嵌入式平臺上的 TensorFlow 模型
- 十七、R 中的 TensorFlow 和 Keras
- 十八、調試 TensorFlow 模型
- 十九、張量處理單元
- TensorFlow 機器學習秘籍中文第二版
- 一、TensorFlow 入門
- 二、TensorFlow 的方式
- 三、線性回歸
- 四、支持向量機
- 五、最近鄰方法
- 六、神經網絡
- 七、自然語言處理
- 八、卷積神經網絡
- 九、循環神經網絡
- 十、將 TensorFlow 投入生產
- 十一、更多 TensorFlow
- 與 TensorFlow 的初次接觸
- 前言
- 1.?TensorFlow 基礎知識
- 2. TensorFlow 中的線性回歸
- 3. TensorFlow 中的聚類
- 4. TensorFlow 中的單層神經網絡
- 5. TensorFlow 中的多層神經網絡
- 6. 并行
- 后記
- TensorFlow 學習指南
- 一、基礎
- 二、線性模型
- 三、學習
- 四、分布式
- TensorFlow Rager 教程
- 一、如何使用 TensorFlow Eager 構建簡單的神經網絡
- 二、在 Eager 模式中使用指標
- 三、如何保存和恢復訓練模型
- 四、文本序列到 TFRecords
- 五、如何將原始圖片數據轉換為 TFRecords
- 六、如何使用 TensorFlow Eager 從 TFRecords 批量讀取數據
- 七、使用 TensorFlow Eager 構建用于情感識別的卷積神經網絡(CNN)
- 八、用于 TensorFlow Eager 序列分類的動態循壞神經網絡
- 九、用于 TensorFlow Eager 時間序列回歸的遞歸神經網絡
- TensorFlow 高效編程
- 圖嵌入綜述:問題,技術與應用
- 一、引言
- 三、圖嵌入的問題設定
- 四、圖嵌入技術
- 基于邊重構的優化問題
- 應用
- 基于深度學習的推薦系統:綜述和新視角
- 引言
- 基于深度學習的推薦:最先進的技術
- 基于卷積神經網絡的推薦
- 關于卷積神經網絡我們理解了什么
- 第1章概論
- 第2章多層網絡
- 2.1.4生成對抗網絡
- 2.2.1最近ConvNets演變中的關鍵架構
- 2.2.2走向ConvNet不變性
- 2.3時空卷積網絡
- 第3章了解ConvNets構建塊
- 3.2整改
- 3.3規范化
- 3.4匯集
- 第四章現狀
- 4.2打開問題
- 參考
- 機器學習超級復習筆記
- Python 遷移學習實用指南
- 零、前言
- 一、機器學習基礎
- 二、深度學習基礎
- 三、了解深度學習架構
- 四、遷移學習基礎
- 五、釋放遷移學習的力量
- 六、圖像識別與分類
- 七、文本文件分類
- 八、音頻事件識別與分類
- 九、DeepDream
- 十、自動圖像字幕生成器
- 十一、圖像著色
- 面向計算機視覺的深度學習
- 零、前言
- 一、入門
- 二、圖像分類
- 三、圖像檢索
- 四、對象檢測
- 五、語義分割
- 六、相似性學習
- 七、圖像字幕
- 八、生成模型
- 九、視頻分類
- 十、部署
- 深度學習快速參考
- 零、前言
- 一、深度學習的基礎
- 二、使用深度學習解決回歸問題
- 三、使用 TensorBoard 監控網絡訓練
- 四、使用深度學習解決二分類問題
- 五、使用 Keras 解決多分類問題
- 六、超參數優化
- 七、從頭開始訓練 CNN
- 八、將預訓練的 CNN 用于遷移學習
- 九、從頭開始訓練 RNN
- 十、使用詞嵌入從頭開始訓練 LSTM
- 十一、訓練 Seq2Seq 模型
- 十二、深度強化學習
- 十三、生成對抗網絡
- TensorFlow 2.0 快速入門指南
- 零、前言
- 第 1 部分:TensorFlow 2.00 Alpha 簡介
- 一、TensorFlow 2 簡介
- 二、Keras:TensorFlow 2 的高級 API
- 三、TensorFlow 2 和 ANN 技術
- 第 2 部分:TensorFlow 2.00 Alpha 中的監督和無監督學習
- 四、TensorFlow 2 和監督機器學習
- 五、TensorFlow 2 和無監督學習
- 第 3 部分:TensorFlow 2.00 Alpha 的神經網絡應用
- 六、使用 TensorFlow 2 識別圖像
- 七、TensorFlow 2 和神經風格遷移
- 八、TensorFlow 2 和循環神經網絡
- 九、TensorFlow 估計器和 TensorFlow HUB
- 十、從 tf1.12 轉換為 tf2
- TensorFlow 入門
- 零、前言
- 一、TensorFlow 基本概念
- 二、TensorFlow 數學運算
- 三、機器學習入門
- 四、神經網絡簡介
- 五、深度學習
- 六、TensorFlow GPU 編程和服務
- TensorFlow 卷積神經網絡實用指南
- 零、前言
- 一、TensorFlow 的設置和介紹
- 二、深度學習和卷積神經網絡
- 三、TensorFlow 中的圖像分類
- 四、目標檢測與分割
- 五、VGG,Inception,ResNet 和 MobileNets
- 六、自編碼器,變分自編碼器和生成對抗網絡
- 七、遷移學習
- 八、機器學習最佳實踐和故障排除
- 九、大規模訓練
- 十、參考文獻