03.07 英特爾AI專用加速器NNP-T簡介

英特爾(Inte)在2019年發佈了兩款人工智能(AI)芯片,它們分別是Nervana NNP-T(代號為Spring Crest)和Nervana NNP-I(代號為Spring Hill),分別用於訓練和推理。英特爾AI專用加速器歷史可以追溯到2016年。2016年8月,英特爾收購美國創業公司Nervana Systems,隨後將其與自身業務整合,並追加35億美元,用於研發和自身產品匹配。近兩年,英特爾還投資了以色列人工智能公司Habana Labs和NeuroBlade。Habana Labs的解決方案Goya性能優於目前數據中心常用方案的1-3個數量級,而NeuroBlade的優勢在於降低成本和功耗。最終,英特爾推出了集合多家所長的AI加速器。與專為谷歌機器學習框架TensorFlow設計的張量處理器(Tensor Processing Units,TPU)不同,英特爾的產品支持百度、Facebook以及谷歌等提出的主流機器學習框架。2019年7月,英特爾公司全球副總裁Naveen Rao曾在百度人工智能開發者大會上宣佈,為了提升訓練模型速度,雙方將合作開發處理器產品。此次英特爾發佈產品時還宣佈,Facebook正在使用這些產品。顯然,英特爾的AI加速器將與谷歌的TPU、英偉達以及亞馬遜AWS自研芯片競爭。

AI加速器的通用性和性能是不可兼得的,英特爾也不例外。為了提高性能,英特爾也犧牲了一些通用性,也就是英特爾這款加速器的最佳工作數值是Bfloa16,在此之前,只有谷歌的TPU原生支持Bfloa16。Bfloa16就是截斷浮點數(truncated 16 bit floating point),它是由一個float32截斷前16位而成。它和IEEE定義的float16不同,主要用於取代float32來加速訓練網絡,同時降低梯度消失(vanishing gradient)的風險,也可以防止出現NaN這樣的異常值。深層神經網絡每次梯度相乘的係數如果小於1,就是浮點數;如果層數越來越多,係數會越來越大,傳播到最底層可以學習到的參數就很小了,所以需要截斷來防止(或降低)梯度消失。在float32和Bfloat16之間進行轉換時非常容易,事實上,TF也只提供了Bfloat16和float32之間的轉換,但畢竟還是需要轉換的。英特爾的內嵌彙編格式GNU Gas添加了對Bfloat16支持。英特爾在2019年4月發佈了補丁,支持GNU編譯器集合(GCC)中的Bfloat16支持。和IEEE float16相比,其動態範圍變得更大(和float32一樣大),但是尾數位更少(精度更低)更大的動態範圍意味著不容易下溢(上溢在實踐中幾乎不會發生,這裡不考慮)另一個優勢是Bfloat16既可以用於訓練又可以用於推斷。亞馬遜也證明Deep Speech模型使用Bfloat16的訓練和推斷的效果都足夠好。Uin8在大部分情況下不能用於訓練,只能用於推斷,大多數的Uint8模型都從FP32轉換而來。所以,Bfloat16可能是未來包括移動端的主流格式,尤其是需要語言相關的模型的時候。當然英偉達認為, Bfloat16犧牲了部分精度,對於某些場合如高性能計算(High Performance Computing,HPC),精度比運算效率和成本更重要,英偉達的主要目標市場正是HPC和訓練端,所以短期內恐怕看不到英偉達支持Bfloat16。


英特爾AI專用加速器NNP-T簡介


Nervana NNP-T採用了臺積電16納米CLN16FF+工藝。為何不用更先進的10納米或7納米工藝?因為這是顆2.5D封裝的芯片,集合了臺積電的CoWes(Chip-on-Wafer-on-Substrate)和英特爾的嵌入式多芯片互連橋接(Embedded Multi-die Interconnect Bridge,EMIB)封裝技術。在更先進的製造工藝上,這兩項技術的共同應用還不夠成熟,芯片包含了4顆8GB的HBM2-2400內存,即第二代高帶寬存儲器。原始數據帶寬達1.22Tbps。32GB的HBM2需要64行SerDes的HSIO(高速輸入輸出).總計帶寬達到驚人的3.58Tbps。此芯片核心裸晶(Die)面積680平方毫米,內聯後顆粒面積1200平方毫米,共計270億個晶體管,包括24個張量處理器內核(Tensor Processors Clusters,TPC)。除了TPC外,裸晶中還有60MB的靜態隨機存取存儲器(Static Random-Access Memory,SRAM)。芯片核心頻率1.1GHz,16個PCIe4代接口,風冷情況下的典型功耗為150-250瓦,典型算力為119TOPS(每秒萬億次運算)由於採用了可擴展架構集OCP及PCI-E規格,所以可以方便地對數據中心等場景進行擴展。架構支持擴展到1024個節點,每個節點擁有8個NNP-T計算核心。與英偉達外置存儲器相比,英特爾的內置存儲器性能發揮得更徹底,更接近理論值,整體成本也更低。

在張量處理部分,英特爾最大的特色是存儲器。英特爾認為數據移動(即寫入和讀出)對功率和時司的消耗遠高於計算部分,因此要儘量少地搬運數據,這就是英特爾的Nervana架構,最大限度減少數據搬運,特別是連續的數據搬運。英特爾採用獨特的雙端口存儲器,可以同時讀出和寫入,卷積引擎讀取存儲器外部的數據轉換成矩陣MAC(乘和累加)所對應的數據。引擎還有兩個同時進行的操作,即計算前(PreOp)和計算後(PostOps),計算管線內沒有任何連續的數據搬運,計算性能得以發揮到巔峰。


分享到:


相關文章: