Research
本實驗室目前主要的研究方向為深度學習系統優化 (Deep Learning System Optimization), 移動設備 CPU/GPU 合作深度學習, 巨量資料庫 (Database for Bigdata), 雲端計算 (Cloud Computing), 及演算法 (Computer Algorithms). 以下項目均為與中研院資訊所的合作計畫. 所有的計畫均為研究導向, 成果均可發表為碩博士生畢業論文.目前進行中計畫如下.
[Deep Learning System Optimization]
深度學習往往須要耗費大量計算資源及時間,並且應用平行分散式計算。這個計畫的重點在於將平行分散式深度學習加以優化,減少耗費資源。具體的工作項目包括計算結點之間的工作平均分配,使用參數伺服器將深度學習額網路中的權重存取加一優化,例如減少不必要的權重同步,權重的篩選,以及權重的選擇性更新。另外深度學習往往利用大量GPU運算,但是GPU上的計算資源 (例如記憶體) 有限,往往會對大數量的深度學習權重計算產生瓶頸。這個計畫也針對GPU上計算資源有限的現象,提出深度學習各相位計算的排程,使得權重不需額外存副本,藉以減輕GPU記憶體的需求。總的來說,這個計畫使用平行分散式計算的優化,提升深度學習的效能。
[AI Compiler for Servers/Embedded Systems with Heterogeneous Architectures]
近年來,許多深度學習模型 (例如CNN, RNN, LSTM, GAN) 已被廣泛應用於各個領域。除此之外,計算機架構也朝向多元發展 (例如CPU, GPU, GPGPU, DSP, FPGA, AI加速器等),無論是高階伺服器或是嵌入式系統,我們也觀察到這些平台上通常配備了異質或非對稱性 (heterogeneous/asymmetric) 的運算裝置,如CPUs + GPUs, and/or FPGAs。在這樣多個深度學習模型與多個運算架構的組合下,我們需要一個方法,能夠有效地將各種深度學習模型對應到各種計算機架構。為完成此目標,我們將設計一個優化深度學習的編譯器 (AI Compiler)。針對異質性或非對稱性平台,深度學習編譯器將根據平台上運算裝置的特性或限制,以及分析深度學習模型圖像,編譯出最佳的協同運算方式。此編譯流程涉及異質運算,排程,以及編譯器優化技術。效能的可移植性 (performance portability) 和運算裝置的可擴展性 (extensibility) 將是設計此編譯器的重要研究目標。另外,我們也將研究如何利用機器學習理論來輔助我們找到最佳的編譯優化方案。
[Dynamic Parallelization and Optimization] 現今的處理器設計趨勢,主要以提高處理器的平行計算能力,以提高其運算的效能。不同的處理器架構常採用不同的平行化計算模型,例如:CPU使用多核心與單指令多資料流 (SIMD),GPU使用巨量執行緒,而特定領域加速器則使用了特別的平行計算模型。然而,這樣的平行模型多樣性卻帶來軟體開發與維護的負擔,並增加軟體開發所需的時程。為了解決這個問題,我們提出了一個編譯器技術的解決方案,稱為動態二元碼翻譯 (Dynamic Binary Translation)。軟體開發者只需編寫一種平行模型的程式,透過二元碼翻譯,自動將程式執行碼轉換成其他的平行模型。我們首創的二元碼動態「迴圈改寫」方法,成功地將程式執行碼的迴圈做最佳向量化 (vectorization),大幅提升了程式的平行度。本計劃目標為設計一個跨處理器架構的二元碼優化系統,我們將研究不同平行模型的特性,研究更多平行模型間的轉換方法,以及利用處理器指令集的新功能帶來更多可能的效能提升。
[CPU/GPU Collaboration Deep Learning on Mobile Device]
隨著移動設備變得越來越普及,客製化移動服務的需求變得越來越重要。如今,移動設備傳感器能夠全天候收集用戶的資料,從而了解他們的使用需求。同時,現代SoC的出現使得移動裝置能夠處理機器學習,所以深度學習就成為計算移動裝置上用戶行為的首選方法。不幸的是,訓練深度神經網絡通常被認為計算量過大,不適合移動設備。為了解決這個問題,我們考慮轉移學習,這種技術旨在利用先前學習過的深度學習功能來提高另一個神經網絡的學習性能。我們提出了一個深度學習框架TransferCL,支持移動設備上的轉移學習。我們的方法依靠多核CPU和集成GPU的協作來加速移動設備上的深度學習計算。我們的方法同時解決了性能/可移植性權衡,電源效率,和記憶體管理。本計畫同時建議開發一個深度學習框架,以實現深度學習移動設備上的訓練和推理任務。當前最先進的無人監督深度,例如學習技術依賴於生成敵對網絡 (Generative Adversarial Network)。我們的深度學習應用將會實施這樣的架構。
[Resource Allocation and Job Scheduling in Enterprise Data Center]
許多企業基於由於方便管理及安全性等理由,會建構自己的私有雲來供公司內部產品及服務使用。但與一般公有雲不同,私有雲的實體資源在大部分情況下是固定的。因此,如何將具有不同性質及要求的工作,分配到合適的伺服器上運行,以減少違反服務協定(Service-Level Agreement,SLA)的數量,便是很重要的問題。本計畫目標為利用資料分析以及機器學習技術,建立應用服務實體資源以及效能模型,依此來幫助企業級資料中心內部資源分配及工作排程。
[資料密集型應用程式之平行化技術]
隨著大資料時代的來臨,如何改善資料密集型(data-intensive)應用程式的執行效率,已經成為科學界與工業界所共同關心的研究議題。在此類的應用程式中,資料存取的時間占去大部分程式執行的時間,因此,如何有效率的讀寫資料便是最佳化. 此類應用程式要考慮的首要問題。同時,因為單一伺服器的架構已經無法處理如此巨量的資料,如何利用平行與分散式的架構來處理,也是我們要研究的課題。在此研究計畫中,我們以中華電信的批價系統為主要研究的資料密集型應用。我們有三個主要的方向來改善目前系統的效能:(一) 利用平行處理與分散式架構來避免單一伺服器的效能瓶頸 (二)最佳化資料存取的效率 (三) 以串流處理的方法來即時化使用者的批價資訊。