電腦效能應用與安全研究室 Performance, Applications and Security Lab


我們的研究範圍很廣,從嵌入式系統、手機應用、一直到雲端計算、商務應用、資訊安全都有做。
我們的合作研究夥伴很多,包括聯發科、IBM、中研院、資策會,還有和台大、清大、交大的教授合組研發團隊
,包括高階應用處理器架構研究、虛擬化技術、異質計算、系統軟體等重要技術的研究與創新,我們很關切台灣人才與產業的未來。

顯示具有 big data 標籤的文章。 顯示所有文章
顯示具有 big data 標籤的文章。 顯示所有文章

2018年3月29日 星期四

NVIDIA的高效能AI旗艦機DGX-2的賣點

高效能AI受到重視,NVIDIA剛發表專為AI打造的DGX-2,正好做為明天到臺大醫院演講以及下次上課的教案。

DGX-2幾乎是以暴力法解決我們從HGX-1上面看到的一些問題,沒有太大的意外。姑且假裝我是NVIDIA的銷售人員,來述說DGX-2的厲害之處:

- 一台機器8張GPU不夠嗎? 沒問題,一台放進16張。

- 每張GPU只有16GB記憶體太少? 那就加倍給你32GB。

- 這麼多張GPU在交換資料時不會大塞車嗎? 啊,您真是內行人,沒關係,我們用12個NVSwitches打造一秒可讓這些GPU互傳4TB的超高速網路,看您有多少資料要傳都行!

- 嫌一台16張GPU還是不夠力嗎? 太好了,請多買幾台! 每台DGX-2上有8條高速網路通道,比DGX-1還多一倍,而且是Infiniband/Ethernet兩用的喔,不用擔心多台機器之間會塞車了!

- 您說即使GPU很強,CPU不夠力也是枉然? 不好意思,我們特別選了Intel最快的Xeon Platinum 系列,夠誠意了吧? (吐槽技術人員: GPU都加倍了,為什麼只放兩顆CPU,不給四顆呢? 機器都這麼貴了,省這幹嘛? 是做不出來嗎?)

- 不費話,給您兩倍的主記憶體... 雖然現在記憶體很貴,不過貴公司應該負擔得起1.5TB的成本,不過只是60萬台幣上下而已。

- 機器這麼強,硬碟存取的速度跟得上嗎? 哎呀,我們早就不用硬碟,直接給您超快的NVMe SSD陣列,讓你放常用的30TB資料,不夠的話,可以增加到60TB喔。

- 當然,做大數據的您,應該會嫌這60TB太小,不過剛剛才跟您說過每台機器上有8條高速網路通道,請以此連接您資料中心的高速儲存系統,相信做大數據的貴公司,應該有無比強大的儲存系統,對嗎?

- 關於價錢嘛,不貴啦,這台如此強大,比前代賣台幣450萬元的DGX-1快十倍,但是定價不到台幣1200萬元,真的是佛心來著... 提醒您,我們的GPU都賣到缺貨,趕快下訂,買到賺到喔!

- 喔,對了,不要小看這台機器,體積有點大,而且很會吃電,請準備好10000瓦的電力來供養它,最好預先提撥未來幾年的電費...

但是NVIDIA黃總裁和旗下的銷售人員不會告訴你,Google的TPU還有其他公司針對深度學習所研發的晶片,可能比GPU的效率高出十倍以上,Intel也正在急起直追。

不過我想,NVIDIA在市場上,還會領先一陣子。

對了,非NVIDIA經銷商的我,必須提醒大家,比DGX-1快十倍的說法,指的是某個測試程式。以極速(peak performance)來論,DGX-2約略是DGX-1的兩倍,怎麼會高十倍呢? 這就給大家自己想了...

參考資料:

[1] https://www.anandtech.com/show/12581/nvidia-develops-nvlink-switch-nvswitch-18-ports-for-dgx2-more
[2] https://www.inside.com.tw/2018/03/28/jensen-huang-unveils-nvidia-dgx-2-gpu-supercomputer-and-cards
[3] https://news.xfastest.com/nvidia/47580/nvidia-has-announced-dgx-2-and-quadro-gv100/

2016年2月17日 星期三

非絕招的絕招 - 淺談RDMA的小知識與大效用

有些高階網路介面卡支援RDMA (Remote Direct Memory Access),但仍然很多人不知道RDMA是什麼,以及它能用來做哪些好事情呢?

RDMA主要是可以讓某台機器可以透過網路介面卡所提供的API,直接存取在另一台機器上的記憶體,免去透過傳統作業系統與網路協定所增加的負擔。(註1)

這項功能純粹是為了效能而存在的,對於現代已支援各種網路協定的系統而言,RDMA並沒有增加系統的功能性。換言之,RDMA是一項可有可無的、需要硬體特殊支援的系統功能,有了它,可以節省電腦系統在做資料交換時,作業系統所耗損的運算資源和降低延遲(latency)。

因此,RDMA不是人人都需要懂得,也不是到處可見的,近年來RDMA被率先用於高效能計算(HPC)上10Gbps乃至於100Gbps的高速網路,目前它逐漸被利用資料中心和大數據運算時,作為提高資料傳輸效率、降低系統能耗的手段,例如用RDMA加速Hadoop、Spark,以後可能會被用在某些強調效率的物聯網的裝置上。

實際在網卡上使用RDMA的範例,可參考(註2)。如果看懂這份200多頁的文件,應該就很清楚知道RDMA能做哪些事情。

但光是學會RDMA是不夠的,要發揮出RDMA的作用,必須要懂得將RDMA實際用於應用面上,必須要懂得軟體和效能分析的技術,分析效能的瓶頸和資料交換的模式(pattern),才能善用RDMA,否則可能不光是達不到預期的效果,還會減損系統效能,甚至危及系統的安全和穩定度。

首先在效能上,必須考量資料的傳輸模式,包括每次資料傳送的大小、資料的連續性、傳送的時間間隔、傳送的對象等等,來決定如何使用RDMA。我們可以讓傳送端主動把資料放進接收端,或是接收端主動到傳送端提取資料,究竟該用哪種模式?何時該進行傳輸?是否要用高階的gather/scatter功能? 這些都是要根據實際狀況才能回答的問題。

為什麼說RDMA使用不當,可能會危及系統的安全和穩定度? 因為「讓某台機器直接存取在另一台機器上的記憶體」這樣的功能,好比「讓某人直接進入你家存取東西」,如果某台機器被入侵,有可能危及其他機器的安全;也好比「共享記憶體」會造成搶資料的問題,如果兩台機器沒有同步好,可能會造成race condition,系統就會不穩定。

因此RDMA也不是隨隨便便能夠使出來的絕招,必須先精通軟硬體的實務才行。所以,絕招其實並非絕招,招數本身說穿了並不難,只是說使用者沒有足夠的軟硬體功力,練了絕招也沒有用。如果笑傲江湖裡的令狐沖沒有好好練個十多年的武功,突然接收了獨孤九劍的心法也沒有什麼用的。當然,並不是每個花很多時間練功的人,都能領悟獨孤九劍的要旨,學了也不見得會用。

話說RDMA也不是那麼罕見的概念,基本上RDMA是由DMA (Direct Memory Access)轉化而來的技術。說到DMA這個幾十年前就廣泛被使用在各種電腦系統的東西,很多做硬體設計和I/O驅動程式的人都很熟悉, 可以在單一機器中讓CPU節省傳送資料的時間,例如把大量資料送到磁碟機、網卡、顯示卡,甚至軟體想做大規模記憶體複製(memory copy)的時候也可以使用,普遍得不得了。

我原本以為,既然DMA是如此普遍的概念,那麼多加利用DMA和RDMA來改善系統效能的這件工作應該不難,但其實並非如此。看懂別人怎麼利用這些招數,和真正學會如何利用這些招數,並不是同一件事。很多做底層作業系統和驅動程式的人都看過DMA,有些會拿現有的範例照抄,但有多少人會調整DMA的使用方式或是用於解決新問題?

舉例來說,我們十年前玩過當年最紅的多核心處理機之一,IBM Cell (註3),用在超級電腦和Sony PlayStation 3上,所以我們實驗室買了十幾台PS3,用來做教學研究。這個系統晶片有個特點,晶片上多個處理機核心之間資料的傳送,是靠DMA來進行的。雖然DMA很有效率,但是很多程式師不大會用DMA。當年開發Cell的chef architect,Peter Hofstee,後來跟我們一起合作,聊起這件事,他覺得這些程式師暴殄天物。

我讓學生學習如何在Cell上運用DMA,發展效能分析工具,甚至有位學生設計出一個輕薄(lightweight)的message-passing library,使用DMA來加速CPU之間資料的傳送。不只支援Cell,也支援工研院所研發的異質多核心處理機PAC Duo,拿到ACM RACS會議的最佳論文獎 (註4)。事實上,實驗室還有其他幾個作品,也用了DMA來提升效能。

從眾人熟知的DMA延伸到RDMA,只是把單一機器改為多台機器,概念極為類似,所以要理解並不難,但如果要會運用,還是要實際運用才行。因此,我們建置了一套以100Gbps網路連接的小型叢集(cluster),打算來訓練學生使用RDMA,研究如何解決big data系統中資料傳輸的問題。很多開源碼系統軟體還沒有被好好優化,而且優化的方式就像以上所講的,必須根據實際應用的狀況而定,因此這裡有很大的發展空間。

RDMA 只是眾多非絕招的絕招之一例,還有很多這類的招數。我自己對於效能分析與優化特別感興趣,所以一路走來,到處學習、運用、發掘這類招數。但就像以上所描述的,這類招數說穿了一點都不稀奇,所以旁觀者看了覺得好像沒什麼了不起。國外的公司懂這類技術的人多,比較能夠賞識這樣的技能和成果;但某些台灣公司主事者的心態很奇怪,你化繁為簡,講到他能聽懂,他就以為你沒什麼了不起,以為他自己可以找到價美物廉的人在做同樣的工作。關於這點,可參考我兩周前寫的故事(註5)。

的確,這沒什麼偉大,但一般人懂了不見得會用,會用不見得會解決問題,所以「專業」不是一天造成的。以為自己官大學問大,不尊重專業,夜郎自大,自我設限是常見的通病。這篇文章的目的,在分享如何在系統開發上「同中求異」的心得,如果不想老是做跟人家一樣的東西,要如何創新? 基本功夠扎實,加上一些特異功能,例如本文的RDMA或是異質計算,那麼很有機會做出比別人好的系統,這其實不難,也不容易,需要務實培養專業能力。往好處看,台灣現在越來越需要,也比較能賞識這類人才。

(註1) https://en.wikipedia.org/wiki/Remot⋯⋯

(註2) Mellanox, RDMA Aware Networks Programming User Manual, http://www.mellanox.com/related-doc⋯⋯

(註3) https://zh.wikipedia.org/wiki/Cell_⋯⋯

(註4) Building a scalable and portable message-passing library for embedded multicore systems, http://dl.acm.org/citation.cfm?id=2⋯⋯

(註5) https://www.facebook.com/notes/洪�⋯⋯

2015年1月24日 星期六

巨量資料處理的新的組合:Google Cloud Dataflow + Apache Spark

這篇說到巨量資料處理的新的組合:Google Cloud Dataflow + Apache Spark

【大資料雙強聯手,世界排序冠軍Spark擁抱Google新PB級資料分析技術Dataflow】
http://www.ithome.com.tw/news/93669



圖片來源: GitHub



概念上還是不離data flow和memory cache的概念,只是說,granularity隨著資料量放大,系統有越多的機會去監看執行狀況和最佳化效能。

用Apache Spark來做sorting,算是牛刀小試。對效能有興趣者(國內這種人大概很少吧?)可以看看這篇報告(http://sortbenchmark.org/ApacheSpark2014.pdf),關鍵根本不在memory,而在於硬碟和網路。

2014年3月1日 星期六

承載知識的Wolfram語言

週四中午跟同學們分享關於Wolfram Language的影片,很有趣,值得深思。正好下午朋友來信,希望我提供心得... 我雖然不是職業的reviewer,但對於新鮮有趣的東西,我是很樂意review的。 下次有好玩的東西,可以主動送過來給我玩,能打動我的話就寫review,不收費的。

我想從Watson談起。很多人都知道IBM Watson -- 那個打敗Jeopardy!高手的電腦。可以想像Watson是個專家系統,你把整理好的資料和規則放進去,他可以在特定的領域表現優異。

如何把資料和規則整理好、放進去、快速執行,是Watson的know-how。這個很不容易,IBM花了很多人力、物力才做出一個能在Jeopardy!節目上獲勝的Watson,但成功之後,可以複製出千千萬萬個Watson!

如何把人類的知識轉變成電腦語言,自從有電腦開始,一直就是個大問題 -- 人類被迫去學電腦語言,才有辦法設計電腦程式。程式設計師,往往扮演人類與電腦的溝通的橋樑。所以說,懂得寫程式,只是程式設計的一半,另外一半是與人類溝通。

這個號稱是用於Knowledge-based programming的Wolfram Language,對我來說並不陌生。二十多年前,我就研究過Wolfram的Mathematica,所以我根本覺得做那些高難度的微積分考題簡直是在整人。你再會解積分題目、化簡三角函式,這些機械化的事情,Mathematica做得比你還好! 

Mathmematica擅長的是符號計算(symbolic computing),而非數值計算(numerical computing),這是他跟MATLAB大不同的地方,也是它特別有趣和特別有用的地方。

符號(symbol),是人類表達知識的載具。有意義的符號,稱之為文字;利用文字來溝通,稱之為語言。

如果有一套語言和工具,能夠讓我們輕易地、很結構化地裝載(encapsulate)知識,甚至是操作(manipulate)知識的話,那麼將對於整理、組織、運用人類知識,有極大的助益。


這裡談的不是「自然語言處理」(natural language processing, NLP),傳統的NLP希望夠做到分析、辨認人類語句,但頂多只是作為人類與電腦溝通的前端,距離知識的整理和運用還頗遙遠。

Walfram採用的方式,其實是不斷地去增加Mathematica的能力,蒐集各類型重要領域常用的語言和工具,讓人類可以
整理和運用知識


以數學為例,Mathematica提供的語法,讓我們很方便可以寫出代數的式子,他更提供了許多能用以操作這些式子的工具。記得因式分解、三角函式、微積分、複變分析、傅立葉分析、統計嗎?這些都是人類發展出來處理知識的工具。

至於目前 Wolfram Language能做些什麼,看看這影片中Steve Wolfram本人現身說法:
https://www.youtube.com/watch?v=_P9HqHVPeik&noredirect=1

“In general, what we’re trying to do is so that as long as a person can describe what they want, our goal is to get that done. A human defines what the goal should be, and a computer does its best to figure out what that means, and does its best to do it,” Wolfram says.

我不得不讚美Steve Walfram對他懷抱的理念的執著與企圖心,他花了30年持續常這個方向而不捨前進。幸好,近年的雲端運算和Big Data技術,應該大幅加速這個理想的實現。各位可以在這裡看到這個Wolfram Language目前的能力,以及思考我們能夠用他做的工作,再進一步想像他在幾年後能夠做的事情。

然而我們該深思的是,有這類的工具在手,人類該做什麼,學校該教些什麼?

- 知識就是力量,擁有處理知識的工具,將大幅強化人類的力量。
- 學校訓練學生的目標,不應是知識的記憶,而是如何活用知識的技藝。
- 教一些、學一些電腦不會的東西吧!

舉例來說,我這學期教平行程式設計,我將讓學生看看Wolfram Language在平行計算上能做什麼?根據http://reference.wolfram.com/language/guide/ParallelComputing.html,他還不會幫人類自動平行化程式,但他提供了不少基本的平行計算的支援。

需要進階的平行計算,Wolfram訴諸於CUDA和OpenCL,例如:
http://reference.wolfram.com/language/OpenCLLink/guide/OpenCLLink.html

所以想讓事情做得快,人類還是得用告訴電腦如何平行做事情。如何平行做事情?這個就是電腦不會的學問了,來上我的課就知道了。

Wolfram的如意算盤是:一些常用的運算,逐漸會被平行化,成為Wolfram Language的一部分。

想持續追蹤Wolfram Language的動態,可以鎖定:http://blog.stephenwolfram.com/


2014年1月25日 星期六

Big Data Appliance

週六中午計算機中心尾牙,沒來得及抽獎,就趕忙到科技大樓開會。這次氣氛比上次好多了,看來長官也頗識實務  會後我們這團的領隊劃了押,這下子至少得幫國科會做一年big data appliance的先導型研究。

這個計畫是去研究要如何建構最適合big data應用的系統,內容包括:Hadoop/Spark相關軟體層的優化,效能分析、模型、模擬工具,軟硬體整合設計,異質系統,FPGA加速器。

我想做big data有一段時間了,我覺得要做就得做真的,起碼系統必須夠大夠快,不然做出來的東西根本沒用。過去幾年一大堆人跟著做雲端,沒有務實的話,根本做不出什麼有用的東西。我們研究virtual phone雲端服務,沒有隨波逐流,走在時代前端,還有商業化的可能性。

所幸我們去年底在台大找到機會設計與建構一套稍具規模、適合big data應用的cluster,在即將落成之際,我們終於可以比較踏實地去研究big data系統。我們的專長是big data系統,沒時間去蒐集資料和研究應用領域,這部份最好是用合作的模式跟領域專家一起來做。

徵求想做big data appliance研究的專任助理、碩博士班學生。也歡迎手上有big data以及想開發big data應用的朋友來洽談合作事宜。

2013年10月15日 星期二

UC Berkeley怎麼做big data研究?

看看UC Berkeley怎麼做big data... 以系統研究(計算機架構、作業系統、資料庫系統)的教授為主體,加上幾位做演算法、理論、Machine Learning研究的教授對各種重要的巨量資料應用做最佳化。

巨量資料應用包括:
BLB: Bootstrapping Big Data
Cancer Tumor Genomics: Fighting the Big C with the Big D
Carat - Collaborative Detection of Energy Bugs
CrowdDB - Answering Queries with Crowdsourcing
DNA Processing Pipeline
DNA Sequence Alignment with SNAP

發展出來用以支持巨量應用的系統研究包括:
Akaros - An operating system for many-core architectures and large-scale SMP systems
DFC -- Divide-and-Conquer Matrix Factorization
MDCC: Multi-Data Center Consistency
Mesos - Dynamic Resource Sharing for Clusters
MLbase: Distributed Machine Learning Made Easy
PIQL - Scale Independent Query Processing
Real Life Datacenter Workloads
Shark: SQL and Rich Analytics at Scale
Spark - Lightning-Fast Cluster Computing
Sparrow: Low Latency Scheduling for Interactive Cluster Services

應用很值錢,人家的source code不會給你;另一方面,系統軟體很多都是open source,很大方的提供給識貨的人來用。

現在是application-system co-design的時代,也是打群架的時代。人家組一個團隊來創造擴大價值,我們有些研究團隊還停留在組隊去跟政府要錢分錢的山頭主義。即便能力不足以創新,會善用人家的技術和軟體,也能夠創造很高的價值。

Big data研究的風景很美,比霧濛濛的雲端好多了,躬逢其盛的學術中人,不妨多多走出象牙塔看看。

2013年7月23日 星期二

台灣在資訊產業的發展空間 (補註簡立峰的專訪)

這篇台灣Google簡立峰博士談到台灣在資訊產業的發展空間,有興趣的朋友可以看一下: http://www.ithome.com.tw/itadm/article.php?c=81487&s=1

我的摘要、註解、心得:

- 【終端裝置的單價越來越低,導致所有終端裝置的產業都受到影響,對只擅長個人電腦產業的臺灣影響更大】【新的機會,將會是在新的硬體,新的終端裝置陸續出現,可能是手錶、也可能是汽車,但都將帶來新的經濟時代,這又會是一次典範轉移。】

新的終端裝置究竟會是甚麼? 硬體只是載具,重點在於應用。我玩過幾隻智慧型手錶,但是找不到真正好的應用。汽車呢? 我把平板裝在車上,還是找不到真正好的應用,我們會想要手錶和車子提供甚麼樣聰明的功能呢? 大家必須跳脫【泛用】(general-purposed)的思維,就應用面多想想,也就是所謂的Application-driven System Design,規劃所需的硬軟體架構和實做。複雜的系統硬軟體整合在實務上有好幾個層次,需要一個具備幾種菁英人才的團隊,Architect最好要通曉硬軟體實務,但未必要懂每個細節;負責實作的人員固然要精通本業,也最好要懂得在硬軟體介面上與夥伴合作接軌的部分,才能有效溝通。

- 【當這些智慧型裝置的功能還是軟體時,臺灣沒有機會和國外競爭,「但是當這些軟體功能都IC化了以後,臺灣就有機會。」因為在大量生產的晶片市場中,臺灣廠商的競爭力很高... 只要發展高C/P值的IC設計,用硬體來提供這些軟體功能,臺灣的產業就有機會。 】

台灣的硬軟體統合設計的層次,還停留在一些C/P值低的IC設計上,一般廠商不敢技術層次高的系統設計,都覺得沒甚麼機會。

- 【為何我們常會覺得自己的機會很少,那是因為我們只從美國市場的角度來看,就會覺得臺灣的機會很少。例如現在很多人提到的Big Data趨勢或是資料科學家的職務,這些都是美國的新趨勢和新職位,但臺灣的時候還沒到。因為臺灣和美國的產業結構不一樣,我們得回頭從臺灣自己的產業特性來看臺灣的機會,以及未來的人才需求。】

我一直在找適合台灣做的Big Data系統。我跟孔祥重院士提過一個計畫,他覺得有機會,但是台灣的系統廠不懂、不願參與。上個月Google的VP來台大演講,我和他有段對話,他說: 對,你們不要學Google做Google正在做的研究。我們和IBM合作,了解IBM怎麼看Big Data,基本上是以應用為導向的系統設計,這點很符合台灣的調性。

- 【一定會大量需要的是軟硬體整合人才,而且是「硬體人才要具備軟體能力,而不是軟體人才具備硬體能力。」 美國軟體公司想要回頭做硬體,門檻很高。軟體知識現在很容易取得,只是學會以後,實務經驗還不足。但是硬體知識是沒有進入工廠學習就沒辦法學會的。】

這段講的有點滿,讓我補充一下。我本身從電機出身的背景和做計算機結構起家的背景,可算是【硬體人具備軟體能力】,而且我的業界經驗,基本上可以佐證簡立峰的說法,因此我也常勸告電機系的同學去充實軟體能力,在未來多些成為領導人物的機會。但是我不認為資訊系的同學不能做硬體,在在系統軟體的層次,門檻也是很高,一般電機系學生除非機緣巧合,否則不容易進去。

當然,肯用功就有機會,我在SUN工作的時候,長官給我很多學習的機會,除了去上好幾周的kernel課程之外,座位旁邊一堆專家可以問問題,硬著頭皮做幾個系統軟體的計畫之後,就入門了。所以在選工作時,不妨找一些有挑戰性,可以學新東西的位置。懂硬體的,找軟體研發的工作,反之亦然,是個好方法,不過機會難得就是了。

- 【台灣更要重視的是網路產業而不是美國人提到的雲端。網路時代真正的商業機會在各種商業服務... 傳統產業要重視線上和線下的合作,機會才會大,不管是併購或合資,合作,就有機會。】

有幾段關於網路產業的,我在此不欲置評。這裡牽扯到產業合作、政府補助、商業模式、行銷策略、資源分配等等,錯綜複雜,除非有人付費要我給意見,我才要講

- 【製作任何軟體,都要像拍電影,軟體是文創產業,抓準人性就能在網路擴散,是一種文創型的推廣概念。軟體人才要把自己當成導演,要告訴別人,你想要創作什麼,解釋為何這是別人需要的功能,軟體人要非常熱情,感動人也影響別人】

道理很簡單,但很多資訊系的同學不懂。當個究極的宅男女,何必管甚麼人性,講甚麼感動人、影響別人? 搞懂這些,就算是做底層的系統軟體也會很有熱情。上課或是做研究時,多分享自己的心得,多練習與人溝通;下課或是玩耍時,多交些志同道合的朋友,多理解朋友們的心情。

2013年5月31日 星期五

新的工作模式 (Kaggle)

工作能力、學位經歷、商業模式 -- 這三位一體的考量,是否在未來會有根本的改變?事實上,從open source到crowdsourcing,在資訊的世界,做事和學習的方法不斷在推陳出新,Google和facebook的商業模式也給了大家很大的啟示。只是這些新東西似乎還沒有辦法撼動主流的個人職業生涯規劃和公司運作模式。

近來Kaggle的崛起,引來一番與以上相關的討論。這篇How Kaggle Is Changing How We Work (
http://www.theatlantic.com/technology/archive/2013/04/how-kaggle-is-changing-how-we-work/274908/ ),提到一些有趣的觀點:

- 多數聰明人是否得遵循Joy's Law,只能受僱於人、幫人家作事呢?

- Kaggle這個把許多資料和問題公開放在網路上,以競賽懸賞的方式,讓許多「資料科學」專家來提出解答,跟之前的crowdsourcing有和不同?

- 許多大公司都提出了問題,成立了競賽,懸賞的金額從US$3,000到$250,000,甚至還有一個很特別的$3 million prize...

- 有超過85,000位登錄在Kaggle的data scientists,當然數字有可能灌水,不過這些專家來自四面八方,不受國界的限制,不必實際加入公司,每個人都有機會!

- 贏得任何一項競賽,你就得到肯定:你的積分和排名就會上升,大家可以此來判斷你的能力。

- Kaggle也做人力仲介生意,你想僱data scientists到公司裡面工作,可以到這裡來找。

- 跟crowdsourcing最大的不同點:Kaggle是營利模式,是競賽模式,影響專家的工作市場機制;crowdsourcing往往是公益模式,是合作模式,是業餘者的舞台。

- 是否常春藤名校的學位和IBM工作的經歷比不上我的Kaggle比序?"It's flipping the resume, where your work is measurable and metricized and your value in the marketplace is more valuable than the place you work."

- 是否只有在資料科學這個新興領域才有Kaggle這樣的特例?還是說在其他領域也有可能實現Kaggle這樣的商業模式?文中列舉了 99Designs、HealthTap、ClubMD。

我想,資訊平台和網路科技的成熟,是這類商業模式成功的基本要素,而一個好的評估制度(計分比序方式),則是實現公平和有效競爭以提高生產力的關鍵。球場蓋好了,自然會吸引球員和贊助廠商的出現。

台灣有機會做這個嗎?Why not?

2013年5月8日 星期三

開放資料如何改善台灣社會?


這篇TED的演講【開放資料如何改善社會】主要談的是處於貧窮和貪污腐敗的第三世界國家,與台灣的問題有些不同,但值得參考。Open data的使用與分析,當然是一件很重要的事,但如果媒體和輿論亂七八糟,官員和政客擅長推托、說謊和掩蓋事實,加上眾多利益團體在其間攪和,即便有Open data,問題還是不小:

1. Data的正確性有多高?
2. 如何分析和解釋Data?
3. 如何運用分析Data的結論?
4. 如何利用Data要求政府負責?

關於這些,我想很多是需要專門領域的專家一起來想辦法的。所謂的Open Knowledge, Open Aid, Open Government,都是需要跨領域的知識、社會和政治工程。這些東西,想要做的話,有太多可以做的東西。

我們在學校,可以先針對知識開放(open knowledge)這個項目,從e-Learning的角度去發展一些相關技術,讓社會人士也可以對於一些重要的社會議題和政府決策,能夠有系統地觀察、學習和發表意見,不是光在討論板上當酸民和憤青,或是發廢文就算了。例如核四,如何有效記錄人事時地物,以及追蹤各部會乃至於重量級人士的意見,並且攤開在陽光下供大眾檢視。

另一個很重要的是讓政府開放(Open Government),需要設法突破現在的政治壟斷,否則縱然抓到像林益世這樣的明確的貪腐收賄案,但是政府輕判、法官升官,民眾不滿又能如何?談政府開放,不只是要政府公開資料,還要讓人民能過穿透代議士和媒體的壟斷,直接的影響政府和決策。

影響決策和民意的有些看不見的「關鍵」,是真正的評論家和深入報導要負責的部份。目前,沒有多少真正夠格的評論家和堪稱深入報導的東西,一大部分是因為媒體被壟斷和操弄,所以必須想辦法跳過這些壟斷,終究要讓陰影曝光,需要長期追蹤資料和評論的可信度。

今天中午特別去聽了@clkao (高嘉良) 來大學部導生會的演講,對於演講中提到的這個零時政府(http://g0v.tw/)很感興趣。我覺得搞資訊科技的人有很多好的點子和技術,光是靠寫程式改造社會,就能夠有所貢獻,不過我想應該可以更進一步跟非政府組織(NGO)的想法和資源結合,看看能不能做些更偉大的事...

2013年4月17日 星期三

Big Data技術是台灣的未來?是有機會的,但是不要編神話好嗎?

「XXX技術產業是台灣的未來」,這種話在這些年講了很多次了,可是怎麼跟馬政府的施政很一致,話講得頭頭是道,但就是做不出什麼成績?

看到有篇標題定為『代工廠的轉型機會就在這把』的文章,講發展Big Data的重要性,我對內容沒多大意見,但這神來一筆的標題,會不會太誇張了一點?發展 Big Data 技術,距離代工廠所會的東西,實在太遙遠了,請問要怎麼轉型啊?不要這樣唬弄人吧。

老實說,我們在台大,雖然對於Big Data 技術非常有興趣,也很積極在學習,但是我們知道我們和先進一流團隊差很遠,還有很長的路要走,而且不能關起門來自己搞,必須有跨領域的結合才行。所以我現在幫IBM、聯發科、台大醫院做點事情,看看自己能不能多學一些東西,看看學生能不能朝Big Data這方向做點東西。

如果業界以代工廠短線投資的心態去搞Big Data,我想門都沒有。趨勢科技張董,幾個月前有來台大談教學合作,他知道不找學術界一起搞Big Data,是搞不出什麼名堂的;但同時他也知道,如果以學術界只顧論文發表的心態,也做不出什麼可以賣錢的好東西。上週五台積電IT部門來演講,跟我聊了一會,和我們有志一同,對於Big Data Security有很大的興趣,或許有機會談合作。

我不想澆冷水,但是請不要把「發展 Big Data 技術」搞成全民運動… 要有長程的策略規劃和人才培育

八年前剛回國的時候,看到台灣學術界一堆人的研究題目掛上「多核心」這幾個字,心裡頭好興奮,想說有個好環境可以好好發揮,結果還頗令人失望的;一堆人搞「嵌入式系統」研究,並沒有真的在建構出什麼厲害的系統;一堆人搭「雲端」便車,不知道搭到哪裡去了;「系統晶片」計畫一堆,實用又創新的系統晶片有幾個?

當然,我也搞不出什麼好東西,沒什麼雄才大略,只會做一些自己會做的,一點一滴慢慢累積一些實作成果。我國軟體技術落後國外很多年,缺乏產業的大手筆支持,只希望不要跟世界頂尖的實驗室差太遠,就不錯了。關於Big Data 技術,我們默默研究了一年多,靠著學生的努力,勉強捉到一點影子。

以下是幾個我們有興趣的研究方向:
- Heterogeneous computer systems for big data applications (keywords: parallel programming, cloud database, virtualization, performance analysis, dynamic optimization, medical applications)
- Hardware acceleration for big data applications (keywords: reconfigurable hardware, hardware-software co-design, runtime system, performance tools, Monte Carlo simulation)
- Security applications with big data analytics in a mobile-cloud environment

這些跨領域的研究,題目太多了,學生要學的也多,可以發揮的空間也多,很適合好學上進的學生 -- 要會自己學東西,要學會找到好的研究題目,要會把東西做出來,要會把做的東西表達出來。學會以上這些,會怕找不到好工作嗎?

2013年1月11日 星期五

談海量資料和資訊系統

繼雲端運算之後,「海量資料分析」(Big Data Analytics)成為學術界和科技界最新的「潮字」(buzz word)。海量資料分析為什麼這麼受矚目呢?簡單地說,是因為人類現在有「能力」蒐集、傳送、儲存、處理多得不得了的資料,如果能夠好好利用這個能力,可能會產生前所未有的知識與應用,讓人腦和電腦變得更聰明。
 
Google藉由搜尋引擎、Gmail、Android還有各式各樣的雲端服務,收集到許多的個人公開與非公開資料。Google除了可以把搜尋做好之外,還可以利用這些龐大的資料和他龐大的資訊系統做很多事情。Google不是第一個做搜尋引擎的,可是他能成功的重要原因之一,是因為他能建夠出便宜好用的資訊系統。
 
Facebook更是後來居上,社群網站這個從BBS時代就有的舊東西,被Facebook經營成功的重要原因之一,因為在最佳的時刻搭上了雲端運算的列車。
 
IBM原本在雲端時代可能成為瀕臨絕種的恐龍,發現雲端運算技術不只是可以用在大眾的雲端服務(Public Cloud),企業和政府這種擁有非常多私密資料的機關,也需要處理與日俱增的資料。甚至,在非常深入地整理資料和運用資料之後,可以做出前無古人的應用。例如IBM引以為傲的Watson系統,比人類回答問題更快更精準,幕後的技術,可以稱之為深層的海量資料分析(Deep Big Data Analytics)。
 
聽起來,海量資料分析應該比雲端更容易懂,不像雲端那麼炫和玄。比起這幾年許多人東比西指地談「雲端服務」,要來得收斂一些,有比較具體一些的定義,但是入門的難度也大幅提高
 
話說,為什麼現在大家會來談海量資料分析?難道以前沒有嗎?
 
其實,在每個時代,總會有一些人致力於利用當時擁有的運算技術去解決一些大問題,這些領域通常稱之為「高效能運算」( High-Performance Computing, HPC)。有錢的地方,例如歐美的國家實驗室,台灣的氣象局,大陸的中科院,會購買超級電腦(Supercomputer)來解決這些問題,或者當成炫耀國力的展示。這些超級電腦,擁有很高的運算能力,處理和分析的是當時的海量資料,不過做的多半是科學和工程的計算(包含國防用途)。
 
這些關心高效能運算的人,畢竟是少數。靠著賣超級電腦,很難賺錢過日子,所以,沒有一家只賣超級電腦而不倒的公司。IBM這家老店,如果不轉型,恐怕也很難維持榮景。幸好,IBM畢竟是人才濟濟,把他們用於高效能運算研發的人才、用於幫大企業的營運資訊系統的人才,集結起來從事商用版的高效能運算,頗為成功,也就是我們現在看到Watson系統和IBM喊出的智慧運算(Smart Computing)。
 
整體來看,資訊系統技術的突破創新(disruptive Innovation),的確會改變雲端的基礎架構和應用,例如高速的智慧手機、便宜的伺服器和雲端空間、高速的LTE網路等等。不過,所謂的改變,根本上,也不過就是某個應用的資料在「運算資源(Computer)」「儲存空間(Storage)」「網路(Network)」上的流動所需的時間比例變了

但是,比例變了,這個應用的最佳處理方式就跟著變了,其實跟生意人打的算盤,和經理人規劃公司營運的方式,是一樣的道理。除了靠算計之外,生意人靠眼光,經理人靠經驗,電腦工程師靠工具。某個東西變了,我們就有機會把同一種應用以更好的方式建構出來,或者是把原來沒辦法做完的應用及時完成。所以,我們在過去幾十年,其實不斷在重複一些東西。雲端裡,有很多幾十年前的東西,又復活跑出來。

用「電腦來設計電腦」,是電腦之所以進步神速的重要原因。不斷進步的電腦硬體和軟體的設計工具和日積月累的智慧財產(軟體庫和硬體庫),到底會進化到何時方休?這是個有趣的問題。雖然原理沒變,但複雜度隨著資料的海量化而增大。人類設計電腦系統和應用的能力,受到「設計工具」和「對應用主題的了解」的限制,就算是再聰明的人,也很難突破這些限制。
 
因此我想,在海量資料的時代,要做好軟體和系統設計來進行海量資料分析,我們需要強化兩種基礎:
  1. 更強大的設計工具:能夠幫助開發者快速建構出優質硬體和軟體系統的工具(Tools)和方法(Methodologies)。

    有學生說,光是單看硬體,或是單看軟體,就已經很複雜了,我們要如何又看硬體又看軟體呢?關鍵就在工具和方法。

    有趣的是,傳統資訊系統是一般來說是一層一層疊上去的(階層式,hierarchical),在每個層次都必須提供有效的工具和方法。然而,面對海量資料,傳統階層式的作法,把開發工作分為:應用開發、中介軟體、系統軟體、系統架構、硬體設計,可能沒有辦法有效率地解決問題,但是要找到能夠通曉多層次的人才,又是非常難的事情,所以如果能夠研究出跨層次的工具和方法,就可已是很好的貢獻。

    因此,我希望我的學生能夠跨層次廣泛涉獵(學得快),精通每個層次(學得好),而且能夠貫串不同層次(學得巧),創新研究工具和方法(學得妙)。
  2. 對應用領域更了解:能夠更透徹理解各個重要應用領域的特性。

    有人看到Google搞海量資料,以為海量資料就是搜尋和存放資料;有人看到Facebook搞海量資料,以為海量資料就是社群網路行為的分析;如果你去看IBM搞海量資料,定義和做法又是有很大的不同。不管是哪一個,對於重要領域理解透徹的專家,決定了這些海量資料能夠帶我們到哪裡去。

    然而,這些專家,來自於四面八方,不再是傳統資訊學門所能延伸觸及的。以前,資訊工程師花一些時間去學習特定的專業知識,很可能就可以寫出一套應用;海量資料的應用,必須有領域專家(Domain Experts)的介入,甚至主導,才不會產生一些膚淺的應用。

    幾十年來,高效能計算應用的開發就是這樣性質的工作,那些在超級電腦中心工作的領域專家,比資訊專家還多,所以跨領域的團隊合作是極其重要的。在IBM的例子裡,我們可以看到領域專家的重要性。想搞海量資料的資訊人,要學習與領域專家合作,溝通技巧很重要。
然而,我們目前的工具、方法和領域專家還遠遠不足以讓我們有效且快速地開發海量資料分析應用。我看到一篇UC Berkeley的短文,標題寫著: We don't know enough to make a big data benchmark suite,只有兩頁,不妨看看,可以看看我們還缺些什麼東西。總之,可以做的研究多得很!