除了編譯時間外,吸引偏好上層編程語言的研究人員和應用科學家來開發FPGA的問題尤為艱難。雖然能流利使用一種軟件語言常常意味著可以輕松地學習另一種軟件語言,但對于硬件語言翻譯技能來說卻非如此。針對FPGA最常用的語言是Verilog和VHDL,兩者均為硬件描述語言(HDL)。這些語言和傳統的軟件語言之間的主要區別是,HDL只是單純描述硬件,而例如C語言等軟件語言則描述順序指令,并無需了解硬件層面的執行細節。有效地描述硬件需要對數字化設計和電路的專業知識,盡管一些下層的實現決定可以留給自動合成工具去實現,但往往無法達到高效的設計。因此,研究人員和應用科學家傾向于選擇軟件設計,因其已經非常成熟,擁有大量抽象和便利的分類來提高程序員的效率。這些趨勢使得FPGA領域目前更加青睞高度抽象化的設計工具。
3、FPGA深度學習研究里程碑:
1987VHDL成為IEEE標準
1992GANGLION成為首個FPGA神經網絡硬件實現項目(Cox et al.)
1994Synopsys推出第一代FPGA行為綜合方案
1996VIP成為首個FPGA的CNN實現方案(Cloutier et al.)
2005FPGA市場價值接近20億美元
2006首次利用BP算法在FPGA上實現5 GOPS的處理能力
2011Altera推出OpenCL,支持FPGA
出現大規模的基于FPGA的CNN算法研究(Farabet et al.)
2016在微軟Catapult項目的基礎上,出現基于FPGA的數據中心CNN算法加速(Ovtcharov et al.)
4. 未來展望
深度學習的未來不管是就FPGA還是總體而言,主要取決于可擴展性。要讓這些技術成功解決未來的問題,必須要拓展到能夠支持飛速增長的數據規模和架構。FPGA技術正在適應這一趨勢,而硬件正朝著更大內存、更少的特征點數量、更好的互連性發展,來適應FPGA多重配置。英特爾收購了Altera,IBM與Xilinx合作,都昭示著FPGA領域的變革,未來也可能很快看到FPGA與個人應用和數據中心應用的整合。另外,算法設計工具可能朝著進一步抽象化和體驗軟件化的方向發展,從而吸引更廣技術范圍的用戶。
4.1. 常用深度學習軟件工具
在深度學習最常用的軟件工具中,有些工具已經在支持CUDA的同時,認識到支持OpenCL的必要性。這將使得FPGA更容易實現深度學習的目的。雖然據我們所知,目前沒有任何深度學習工具明確表示支持FPGA,不過下面的表格列出了哪些工具正朝支持OpenCL方向發展:
Caffe,由伯克利視覺與學習中心開發,其GreenTea項目對OpenCL提供非正式支持。Caffe另有支持OpenCL的AMD版本。
Torch,基于Lua語言的科學計算框架,使用范圍廣,其項目CLTorch對OpenCL提供非正式支持。
Theano,由蒙特利爾大學開發,其正在研發的gpuarray后端對OpenCL提供非正式支持。
DeepCL,由Hugh Perkins開發的OpenCL庫,用于訓練卷積神經網絡。
對于剛進入此領域、希望選擇工具的人來說,我們的建議是從Caffe開始,因為它十分常用,支持性好,用戶界面簡單。利用Caffe的model zoo庫,也很容易用預先訓練好的模型進行試驗。
4.2. 增加訓練自由度
有人或許以為訓練機器學習算法的過程是完全自動的,實際上有一些超參數需要調整。對于深度學習尤為如此,模型在參數量上的復雜程度經常伴隨著大量可能的超參數組合。可以調整的超參數包括訓練迭代次數、學習速率、批梯度尺寸、隱藏單元數和層數等等。調整這些參數,等于在所有可能的模型中,挑選最適用于某個問題的模型。傳統做法中,超參數的設置要么依照經驗,要么根據系統網格搜索或更有效的隨機搜索來進行。最近研究者轉向了適應性的方法,用超參數調整的嘗試結果為配置依據。其中,貝葉斯優化是最常用的方法。
不管用何種方法調整超參數,目前利用固定架構的訓練流程在某種程度上局限了模型的可能性,也就是說,我們或許只在所有的解決方案中管窺了一部分。固定架構讓模型內的超參數設置探究變得很容易(比如,隱藏單元數、層數等),但去探索不同模型間的參數設置變得很難(比如,模型類別的不同),因為如果要就一個并不簡單符合某個固定架構的模型來進行訓練,就可能要花很長時間。相反,FPGA靈活的架構,可能更適合上述優化類型,因為用FPGA能編寫一個完全不同的硬件架構并在運行時加速。
4.3. Low power compute clusters低耗能計算節點集群
深度學習模型最讓人著迷的就是其拓展能力。不管是為了從數據中發現復雜的高層特征,還是為數據中心應用提升性能,深度學習技術經常在多節點計算基礎架構間進行拓展。目前的解決方案使用具備Infiniband互連技術的GPU集群和MPI,從而實現上層的并行計算能力和節點間數據的快速傳輸。然而,當大規模應用的負載越來越各不相同,使用FPGA可能會是更優的方法。FPGA的可編程行允許系統根據應用和負載進行重新配置,同時FPGA的能耗比高,有助于下一代數據中心降低成本。