GPU和FPGA如何幫助執行數據密集型任務,例如操作,分析和機器學習,以及有哪些選擇?
應用程序和基礎架構在逐步發展。這是人工智能再生的時代,基礎設施既可以使人工智能應用程序理解世界,也可以不斷發展以更好地滿足需求。
通常情況下,我們已經設想了為AI應用程序提供動力的新基礎架構,并且在它完全成熟之前給出了名稱 ------ Infrastructure 3.0。我們也開始探索堆棧中多方面組成部分,包括哪些明顯的、不那么明顯的,以及其他部分。
為了易于闡述,本文將聚焦“具有許多計算核心和高帶寬內存的專用硬件”,簡稱AI芯片。我們來看看這些AI芯片如何在數據庫和分析以及機器學習(ML)方面使以數據為中心的任務受益。
讓我們從GPU和FPGA來開啟這篇文章的介紹。
GPU
圖形處理單元(GPU)已經存在了一段時間。最初設計是用于滿足快速渲染的需求,主要用于游戲行業,GPU的架構已被證明能夠與機器學習良好匹配。
GPU的并行處理,這也是CPU可以做的事情,但與通用CPU相反,GPU的專業性使它們能夠跟上摩爾定律的速度繼續發展。Nvidia是GPU領域的主要參與者,最近宣布了一套基于Turing架構的新GPU。
為避免淘汰,新的Nvidia GPU實際上帶來了圖形渲染的改進。但是,更重要的是,為了契合需求,他們收集了Tensor Cores,這是該公司專門的機器學習架構,并介紹了NGX。NGX是一種技術,正如Nvidia所說,它將人工智能引入圖形管道:“NGX技術帶來了諸如采用標準攝像機輸入和創建超級慢動作等功能,就像你使用一個價值10萬美元以上的專用攝像機那樣。”
人們一般不會對通用機器學習(ML)感興趣,但新Nvidia卡的功能肯定能引起人們的關注。然而,它的價格也反映了產品的高端品質,從2.5K到10K美元不等。
GPU可以極大地加速工作負載,這些工作負載可以分解,并行執行,與CPU協同工作。圖片:SQream。
但是,利用GPU,不僅需要硬件架構 ---- 它還需要軟件。對于Nvidia來說,這是有利的競爭因素,而對于像AMD這樣的競爭者來說卻顯然不利。Nvidia在使用GPU進行機器學習應用方面遙遙領先的原因在于使用GPU所需的庫(CUDA和cuDNN)。
AMD雖然也有一個可以與AMD GPU一起使用的替代軟件層,稱為OpenCL,但它的成熟度和支持程序與Nvidia的庫尚有差距。AMD正在努力迎頭趕上,它也在硬件方面展開布局。
為了從AI芯片中受益,AMD所需的投資超出了硬件。迫切需要一個位于這些芯片之上的軟件層,以優化在其上運行的代碼。沒有它,它們幾乎無法使用。但是,這也需要使用者學習如何使用這一層。
上面,我們已經提到GPU如何成為ML工作負載的首選AI芯片。最受歡迎的ML庫支持GPU - Caffe,CNTK,DeepLearning4j,H2O,MXnet,PyTorch,SciKit和TensorFlow等。除了需要了解每個庫的細節之外,通常還需要構建GPU環境。
至于普通的數據操作和分析 -----GPU數據庫方面,已經開發出一類新的數據庫系統,其目標是利用GPU并行性,將現成硬件的優勢帶入主流應用程序開發。這個領域可以選擇BlazingDB,Brytlyt,Kinetica,MapD,PG-Strom和SQream。
FPGA
現場可編程門陣列(FPGA)并不是新的產品----自80年代起就存在。它們背后的主要思想是,與其他芯片相反,可以按需重新配置。讀者可能更想知道這是如何實現的,如何更專業化,以及有什么用處。
FPGA可以簡單地被認為是包含低級芯片基礎的電路板,例如AND和OR門。通常使用硬件描述語言(HDL)指定FPGA配置。使用此HDL,可以以符合特定任務或應用程序要求的方式配置基礎架構,實質上是模仿特定應用集成電路(ASIC)。
由于必須通過HDL為每個不同的應用程序重新編程,芯片聽起來很復雜。因此,軟件層至關重要。根據Tirias Research首席分析師Jim McGregor的說法,“構建FPGA的工具集有些古老。Nvidia在使用GPU時很好地利用了CUDA語言。利用FPGA,仍然是一種有效構建算法的黑馬。”
英特爾非常重視FPGA,可能是為了彌補其在GPU中落后的局勢。但FPGA軟件層還沒有GPU那樣成熟。圖像:英特爾
但上面這種情況正在悄然發生改變。最初是英特爾對FPGA表示了興趣,收購了Altera(關鍵的FPGA制造商之一)。這可能是英特爾推進AI芯片世界的戰略,這一點在與GPU競爭中處于劣勢之后將變得越來越重要。但是,拋開復雜性,FPGA有競爭力嗎?