DForum0606
DForum0607

五個層次拆解深度學習生態系

  • 廖家宜
研華將深度學習生態系拆解成五層金字塔。廖家宜

當Alpha Go點燃人類對深度學習的好奇心後,近年深度學習在市場上的討論度達到一個高峰。我們很容易從網路資源上取得關於深度學習的開發步驟,若歸結到最根本的問題,究竟深度學習需要先準備哪些東西?

淺談深度學習的架構,主要可分為訓練(Training)與推論(Inference)兩個階段。簡單來說,就是訓練機器學習,以及讓機器展現學習成果。再進一步談深度學習的運算架構,NVIDIA解決方案架構經理康勝閔簡單統整,定義出幾個步驟:

例如,必須收集學習所需的大數據,包含大量的圖片、影片、文字或語言;接著建置運算環境,例如設計類神經網路演算法、選擇合適的運算平台軟體、運算環境中軟硬體資源的配置等;經過反覆學習、驗證與調整後得出最佳化模型,也就是學習成果,最後將模型導入產業環境中使用。

因此,深度學習的第一件事,必須先建立訓練的環境。而建立訓練環境的過程,單單幾個步驟看似簡單,實則複雜,主要是因為整個訓練環境橫跨多個領域,包括半導體晶片設計、IT領域的技術、電腦科學、資料科學、數學等,若涵蓋應用端則又更廣。

由於深度學習所涉及的領域相當廣泛,對非具備相關知識的人來說,看著深度學習就像一個魔法,就算是涉獵其中一項技術的人,也不一定能融會貫通。但事實上,要實現深度學習並不難,尤其現今的開發環境中,在市場上都具備許多相當完整且成熟的產品可提供開發者使用,甚至簡化訓練過程。

像是晶片大廠NVIDIA、英特爾(Intel)紛紛在市場上推出整合軟硬體的深度學習解決方案,或是各種軟體開發工具加速深度學習。台廠方面,掌握眾多產業Know-how的IPC大廠研華也投入市場開發,以產業需求為核心提出深度學習解決方案。

隨著深度學習的前景與商機爆發,投入市場的人勢必越來越多,但這些人在深度學習領域中所扮演的角色與功能不盡相同。雖然深度學習在媒體上的討論度非常高,網路上針對每個層面的技術都有相關文章為讀者抽絲剝繭,不過,礙於龐大的生態系,碎片化的資訊仍舊難以將整個生態系串聯起來。

  

換一個角度來看,從產業鏈來定義深度學習的開發環境,暫且把它稱之為深度學習的生態系。為簡化深度學習的生態系,研華智能系統事業群協理鮑志偉提出一個五層金字塔的概念,將深度學習的開發環境與過程透過五個層級,分別定義出每一層在深度學習系統中所扮演的角色,以及對應的產業結構。

要想明白深度學習需要怎樣的軟硬體,必須了解深度學習的工作原理。試想像一個五層金字塔,從最底層往上堆疊,第一層是深度學習在訓練過程中的「引擎」,也就是硬體基礎。深度學習之所以能夠加速發展,主要的原因是因為市場發現GPU所提供的強大平行運算架構能大舉提升比CPU更快的運算速度,這也讓GPU成為深度學習的代名詞。

  

雖然GPU在深度學習運算中佔有絕對重要的地位,但市場上仍有部份業者投入開發不同於GPU架構的晶片。相較於GPU本來專為遊戲開發卻無心插柳到AI領域,ASIC是一種專為特定目的而設計的積體電路,在效能與功耗上都要優於GPU,但因其技術門檻高,目前大多由具備AI演算法又擅長晶片研發的大廠參與,包括英特爾與Google都相繼投入開發。

而在金字塔的第二層中,則為專門提供開發者建立一個讓深度學習在運算時,可供擴展且易於部署的基礎設施環境,當中包括一些基於硬體優化的開源軟體工具,讓開發者能夠彈性調配伺服器裡的GPU資源。

若是以傳統實體機建構的運算環境,一方面因成本太高,另一方面也因為專機專用導致使用率偏低。所幸隨著虛擬化技術的進步,現在連GPU也可以透過虛擬化達到運算資源分享,開發者可以透過雲端服務商所提供的基礎設施建立起深度學習運算環境。

不過,即便部署虛擬化的運算環境,在系統建置上仍會遇到開發環境不相容等的問題。對此,具有隔離性和可攜性的容器技術正因此而變得盛行。容器可將軟體與其周圍的環境隔離開來,此有助於減少在同一基礎架構上,運行不同軟體之間的衝突。而像Docker這樣的容器格式,以及由Google所設計的容器管理平台Kubernete也正受到市場廣泛地支持。

當底層的運算環境建置起來後,在第三層的架構中則是建立訓練模型。在建立模型的過程中,開發者需要一個提供訓練空間的運算平台軟體,也就是市場上耳熟能詳的深度學習框架。現在有許多框架都能為開發者提供各種工具去設計、建構和訓練自己的模型,並在訓練過程中不斷進行測試與調整演算法的參數以得出最佳化的模型。

  

自2016年開始,不少科技巨頭便紛紛投入開發高效快速的架構,市場上比較知名的三巨頭有Google的TensorFlow、Facebook的Caffe以及微軟的CNTK。大廠釋出開源框架,也大大降低開發者訓練模型的入門門檻,開發者可自己選擇從複雜的神經網路中編寫程式,或是調整框架中的模型來訓練與設計演算法。

另一方面,數據的準備工作則是訓練模型前的必要工作,對於大數據的蒐集、整理和分析歸納是一門學問,在第四層架構中,資料科學是其核心,透過分析資料的關聯性,可以額外獲得新的資訊。

但分析數據非常耗時耗力,所幸在入門階段的開發者可以使用現有的開源圖像資料庫快速完成前期工作。許多現有的開源圖像資料庫大多由大學或實驗室研究開發,像是常見的人臉資料庫VGG-Face Dataset由牛津大學(University of Oxford)研究與整理,而全世界最大的圖像識別資料庫ImageNet也是由史丹佛大學(Stanford University)所建立。

從金字塔的一到四層建構起一個深度學習訓練系統後,最終開發者將訓練出最佳化的深度學習模型,而此模型便可實際導入應用端,讓機器在未來新的環境裡吸收新的資料加以消化,實現各種智慧化的應用,這便是深度學習的最終目的。

市場在討論深度學習時,從應用層切入是最易於引起廣泛的討論,但事實上,從訓練到推論的過程中卻牽涉很多領域的技術,且所涵蓋的知識背景也大有不同。

就像一開始所提,並非每個投入深度學習開發的人在各個領域都能專精,甚至為了加速深度學習的開發,因此,盡可能向市場獲取簡便、快速的開發工具與資源,便成為現今投入深度學習市場中重要的課題。