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


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

2013年1月28日 星期一

大學校園的產學合作與血汗工廠?

這篇台灣大學社會學研究所博士生寫的文章『看不見的血汗死角──大學校園的建教與產學合作』,點出一些血淋淋的事實,談的問題確實是存在的,但是我們看事情不妨多從幾個角度去看。

2005年,我剛進入台大校園教書,我按照個人的美國經驗,認為產學合作和研究經費是在個人研究領域要產生卓越研究的基本要素。很幸運地,兩家廠商給了我研究計劃。

當時還是菜鳥,長官還不知道有此人可以交辦任務;個人又不是為錢而來,懶得去找外快,因此時間很多,每週都和學生認真討論研究進度。

身為菜鳥,我如何『督導』學生的進度呢?答案是『不督導』。當時我看到能夠提供給學生的區區每月六千元助學金,我傻傻地認為:『給人家這麼少錢,我憑什麼要求人家做事?』

還好,大多數我的學生都很清楚,來做研究計畫,是來學東西的,不是來賺錢的。老師給不出那麼多錢,是整個大環境的關係,產學合作是為了掌握業界最新動態和借助業界的經驗,研究經費是為了能夠購買最新的研究設備。

學生知道,連老師自己也過得苦哈哈,從年薪四百多萬減到一百萬不到,當然不是為了開『血汗工廠』才來教書的。

至於學生作研究的途徑,由於每個學生特性不同,我通常給碩士生以下幾個選項:

第一,你研究所剛進來第一年,先多聽聽多看看,除非你很清楚自己想做什麼,否則我不會要你負責研究產出。

第二,過了一年,如果你找到你想做的研究方向,而且你有能力執行,那太好了,可以讓我學到一些新東西,非支持不可。

第三,你要加入產學計劃團隊,可以,但必須要學會團隊合作,每週作進度報告,能夠吸收知識和解決問題,都是必要條件。

第四,過了一年半,你還找不到研究方向,或是提不出夠格的研究計劃,那應該是你個人的問題,如果你希望我用我的方式幫你定一個計劃照著做,我們可以來試試看。

(我前一陣子寫了一篇關於『前瞻研究與人才培育』的看法,請參考我的部落格文章 http://hungsh-ntucsie.blogspot.co.uk/2013/01/blog-post_8340.html。)

迄今,我們實驗室從來沒有碩士生是想在正常期限內畢業而畢不了業的,大多數同學都有學到作研究-解決問題-寫論文的基本功夫,也對實驗室的發展和我個人的研究生涯作出了很不錯的貢獻,很多的碩士論文後來都發表出去了,也為我們實驗室爭取更多的產學合作資源,為學弟妹們搭建更充足的研究平台。

當然,任何事鮮少沒有例外的,我歷年最頭痛的就是這些例外的狀況。退後一步看,無論好壞,都這是整個包裝的一部分(It comes as a package),雖然有時會吐吐苦水,但是整個大環境如此,當老師的說該說的話,做該做的事。能夠用肩膀扛多少就扛多少,能為學生爭取多少資源就爭取多少,也只能勉力為之。

以下是我個人對大環境的看法:

產業是產學合作的源頭,產業要提昇研發水準,多提供學界研究資源,不要只貪圖廉價勞力。我個人不願意接研究水準不夠的案子,但目前的問題是,產學合作的行情太低,以致於能夠給學生的有限。

國科會給學生的薪資,只能說是低標準,就像22K,原本應該是保障,卻變成的通則。我們或許可以同情國家在財政艱難的處境下,還要去支持國內這麼多大學的研究的窘境,所以解決產業問題的重責大任,大部份必須交給產業界本身。如果我們甘冒大不諱地去用『工程標案』來比喻產學合作案的話,把底標價格定得很低,出資者能夠得到多少效益?

對於老師和學生而言,『玩真的』產學合作是很辛苦的。在低薪資結構之下,很多名師和高徒可能不願意陪你玩真的。而且,過去這些年,我知道有些老師不碰產學,不是因為錢,而是因為業界要的東西不是研究,而是那些他們不願意僱用正職工程師做的事。

想想這個如意算盤,一年一百萬元的計劃,要一位老師帶著三位研究生幫你做一堆你要的東西,尾款三十萬元還扣在手裡,等著老闆確認收到的東西滿意之後才發放。放眼看去,這種案子比比皆是,我做過一次,很不喜歡那個老板的態度,所以現在接案子比較小心了。

萬事起頭難。產學合作要整體向上提升,或者是要在制度面上解決,不大可能一下子做到。目前,在個體的層面上,是有可能做到差強人意的。但以現況而言,可能要有一些有識之士,先做出一些榜樣,讓大家普遍覺知到『提升產學合作』的意義性,才會有更多的人群起效法,進而改變大環境。

最後,給碩士班同學們的一點建言:在現在這種學位逐漸貶值的時代,多想想你進研究所的目的。學多學少,大部份選擇權在個人。選擇適合你的指導教授,是你做研究的開始。

至於博士班,問題就複雜多了,此刻我沒空多談。先搞清楚要不要來念博士班,是比較重要的問題,關於這點可參考我之前的部落格文章。

2013年1月18日 星期五

談前瞻研究與人才培育

今天(2013.01.07)有位我的學生來找「我」談「他」碩士論文想做的題目,講了二十分鐘,我聽不大懂他的重點,我跟他再奮戰了二十分鐘,終於搞清楚他想做什麼,再花了二十分鐘向他說明他想做的東西不是前瞻研究或創新設計,只是「使用人家提供的工具,去重複人家已經做過的實驗,去驗證人家已經得到的結論」,接下來花二十分鐘幫他規劃了一個跟他所提的題目相關、可以用得上他已經學過東西的研究方向,再花二十分鐘解釋「如果是我的話,會怎麼進行研究」,希望讓他理解什麼是前瞻研究,也希望他下學期能順利做出畢業論文。

學生在討論中途一直強調他「看了很多、懂很多,只是一時表達不出來」。我說,你是不是看了很多、懂很多,我不知道;你沒有讓我聽懂,是你表達能力的問題;你看了這麼多研究論文還不懂前瞻研究是什麼,我只好用次等的「補習班式的教法」一步一步教你;這是在學校,我現在當你的指導老師,願意慢慢教你;學校畢業之後,職場上不見得有人願意慢慢教你,大概也找不到補習班了。

技術上來說,第一等的前瞻研究人才(在此簡稱A類),不需要指導他細節,他就能夠自己搞清楚某個領域,發現新的研究題目,指導老師只需要宏觀地去看這個題目的意義性、確認研究方法的邏輯性、界定研究計畫的範疇。這類人,通常是可遇不可求。

次一等的前瞻研究人才(在此簡稱B類),給他研究題目和目標,他可以主動想辦法找到路徑去達到目標,想辦法解決研究途中所遇到的問題。這是我們碩士班希望訓練學生成為的人才,到了業界是可受重用的棟樑之材。

再次一等的(在此簡稱C類),學了一堆技能,累積一堆知識,遇到做過的事情和解過的題目,他會做得很好。據我的觀察和理解,這是我們政府和產業界在談人才培育的時候,希望學校所產出的人才。

長久以來,我們的國民教育和高等教育的內容似乎就是為培育C類人才所設計的,尤其是我們的中學教育,拼命灌輸學生「大家」心目中認為理想的C類人才必備的知識和技能,各類考試的重點也是考驗考生的知識,所以我們有各種的補習班,一路把學生補到研究所和公家單位。

如果政府和產業界要的就是C類技術人才,那我們所見的教育和考試制度的設計也無可厚非。但話說我們這些年的教改和卓越大學計畫,理想的目標似乎是想多發掘A類人才,造就B類人才嗎?搞到現在,A類人才畢業後無用武之地,B類人才到產業界不見得受重用,很多C類人才被告知有22K的工作就不錯了,想想也很悲哀的。

我想講的是,台灣其實有不少A類和B類技術研究人才,政府和業界要好好想辦法活用這些高等技術研究人材,不要只是為了要配合大老闆們靠代工賺錢,把教育和產業給做小了,把學術給架空了,把輿論給壟斷了,去貶抑和剝削我們大多數下一代的所有 -- 包括思想、氣魄、勞力、財產、土地... 還有「希望」。

後記:

寫到本文中最後一句的時候,心情沉重之極,如果有筆在手上,大概會「執筆長嘆」。平常我很不喜歡有些年輕人動不動就說台灣是「鬼島」,但是我在回家途中,看著路上的年輕學子,我心裡想,許多的「大人」們口口聲聲說愛台灣,卻把台灣搞成年輕人心目中的鬼島,還一點慚愧的意思都沒有!我暫時找不到合用的形容詞,姑且稱這些該讓台灣成為年輕人口中鬼島負責任的人為「Bumbler世代」。沒錯,馬先生是這「Bumbler世代」的代表人物... 至於Bumbler做何解,大家心知肚明。

有朋友說,年輕人不要斤斤計較薪水,不要隨便就說受剝削,要懂得吃苦耐勞,要知道奮發向上。的確,以上都是每個年輕人可以試著在逆境中成長的做法。說這種話的人,非常務實,一種是以成功者、過來人心態自居的中產(以上)的階級,一種則是已經接受社會中不合理現況做出的妥協,說法上都沒有甚麼不對,只是以偏概全而已。我必須要指出,看不到社會結構性的問題以及年輕人的委屈失望,是這些朋友們普遍的【盲點】。

我個人在七年前,也是跟著人家批評時下年輕人【草莓族】,可是當我不斷觀察和思考,以及接觸年輕人的經驗,我逐漸體會到【原罪】根本不在這些年輕人,而在於把這些年輕人冠上【草莓族】封號的有力人士,也就是我以上所提到的「Bumbler世代」。這個Bumbler世代,接收了獨裁者的資源,各派扶植各派的擁護者,權力跟金錢掛勾,搞內鬥、搞鎖國、搞亂政治、搞爛媒體,到了現在,還要希望年輕人在這種惡質的文化下吃苦耐勞、委屈妥協,真是吃人夠夠,情何以堪?

我不是在挑撥世代恩怨,而是去研究問題。台灣生病了,不找到病的根源,只能治標,不能治本。現在很多人都知道病症,也看到很多病因。如果你看到社會出問題,你不去大聲疾呼要求有力人士解決這些問題,卻希望處於弱勢的人們「共體時艱」「奮發努力」,等於只是要生病的人吃止痛藥、退燒藥,病情會持續下去,會更惡化。說實在的,不要覺得我在唱衰台灣,想想你是不是有盲點?如果你不知道你可能是年輕人稱之為「天龍國人」的族群,那麼你有我以上所說的盲點的機會還頗高的。

話說回來,有盲點並不是什麼大問題,不知者可能是幸福的 例如本文裡面談的C類型人才,只要能夠解決已知的問題就行了,日子過得愉快就好,何必杞人憂天呢?鎖起國家大門,只要確定您和您的子弟都在金字塔上層,有人墊底就行了;船要沉了,確定您家有另外一艘船可搭就行了,何必在乎那些普通人呢?

我在文中對於人才的分類,只是單純地去區分技術研究者的特性,重點並不在於人才的高低優劣,眾位朋友不要搞錯了。適才適任很重要,而且各種才能的人都要有,才會是個好團隊。
我們有些人,經歷過農業社會的年代,那個時候只要是C類人才就很了不起,那時候的公務員、教師不多,在社會的地位很高。隨著教育的普遍化和工業社會的需求,國家大量需要C類人才,以邁向工業化國家,現在看來,這個目的是有達到,甚至產出之C類人才還超越一般產業之所需。
可惜的是,政府和業界,並沒有把握機會積極創造出能夠讓充沛的人才展現的舞台。代工的成功,固然創造了台灣奇蹟,也讓許多產業固守著代工的典範。更由於充沛的C類人才供給,產業可以用比工業化國家低的人力和社會成本,持續經營賺錢。如果這就是台灣人民所希望達到的境界,那麼大家就繼續支持這個典範,看看如何跟中國、印度這些擁有優秀且龐大的人才庫、社會成本更低廉的國家競爭?我想,大家不會沒飯吃的,只是實質收入很難再提升。
然而,政府不是沒有遠見,也不是沒有規劃。話說大學卓越計畫以及各種國家型研究計畫,不就有希望多培養一些A類和B類的技術研究人才,同時提升技術水準的想法和做法嗎?成效如何,說來話長,我已經說過很多了,所以在此輕描淡寫四個字:【不如預期】。雖然執行成果不如預期,但是畢竟還是多培養了為數不少的A類和B類的人才,可是這些人才何去何從?有沒有幫助國家轉型呢?研究有沒有用呢?有沒有提升產業競爭力呢?

要回答以上問題,不應該一昧指責高等教育政策。理想上,以大學教授的高度,應該要能夠慎思明辨,面對不當的政策法規要能夠適當調適。然而,理想是理想,在台灣社會裡,大學教授的實質待遇比照公務人員,在職場上未達到績效指標則可能不通過評鑑,在現實面上要如何維持所謂大學教授的【高度】呢?

好問題!長官們常常覺得國科會計畫和教育部補助對於大學卓越很重要,可以讓大學教授作更好更多的研究,對不對?一些大學很羨慕台清交成,覺得這些學校的教授拿了很多的資源,對不對?其實,我憑良心講,這些都是以偏概全的說法。國家投入的錢,例如說五年五百億裡面30%,要讓台大【腳踏實地】成為世界一流大學,在規模和氣度上,根本就差太多了。為了業績,每個台大教授都太忙了,但高度有沒有因此提升,我就不知道了。現在政府和媒體要用這些帳來修理教授,又是怎樣呢?

相對地,我們的產業有沒有在大學企圖追求卓越的同時,積極勇敢進取,想辦法轉型呢?除了指責台灣人才不足、不好用之外,業界盡了多大的力量培育人才?投資了多少成本去支持前瞻研發?還擺脫不了代工思維的企業主們,有多少人有資格談國家發展呢?

要產業轉型升級,絕對不是光靠少數幾個「英明睿智」的政府首長和企業主,配合大量任勞任怨的C類技術人才就能夠辦得到的。要開疆闢土,在國際舞台上爭雄,必須要打造高水準的技術團隊。國內要有機會產生這樣的團隊,政府和業界必須有足夠企圖心和資源去提供高級技術人才生存滋長的空間。

當然,以上所講的都是高調,真正的重點在於實際執行。我覺得,如果唱高調的人多,實際做事的人少,不如不要做。不做,也是一個選項。但或許半調子的作法,就像談八卦和放煙火一樣,是台灣老百姓過日子的一種方式?

以下為回覆陳仁乾先生的意見:

我文中談的主要是資訊系統研究和我所認知的科技研究,當然我不敢說每個專業都可以如此去看,任何事情總有例外,何況科技研究的領域這麼大。

不過我個人認為,您所提到的軟體寫作,要登峰造極,還是必須具備天份。這種天份,在過去軟體和工具還不是很複雜的時代,設計有新意的應用、動腦筋想演算法、精鍊地寫出有效率的程式,開發極其複雜的軟體系統,都需要天份,所以資訊界以前有很多大師。

然而,現在的軟體實務工作已經和大師的時代相距甚遠,誠如您所言,就算再有天份,也得先學習一大堆前輩偉大的作品,才有機會往前一步。因此,從事軟體實務研究,成為大師的機會其實是越來越渺茫。一個軟體實務能力很強的研究團隊,往往需要在特定領域長期的耕耘,才有辦法開花結果。然而,軟體環境變得很快,要一直緊追,也是很艱辛的工作。

因為軟體實務研究領域非常難靠著碩士生的獨立研究產生重量級的成果,所以我們看到台灣教授們的作法如下:

1. 不要來做軟體實務研究
2. 找一些比較『軟』一點、容易發論文的研究題目
3. 來做軟體實務研究,但是不求升等和學術成就
4. 長期非常努力經營,希望能夠挖到寶,或者能有實力派的博士生加入

猜猜看哪種人最多?哪種人最少?

我博士後有緣在美國業界(Sun)歷練過,看過大公司軟體研發是怎麼一回事,也曾經和Solaris Kernel核心團隊合作過,知道第一流的軟體實務人才是怎麼樣,因此對於您講的那些,確實有切身之感。要我拋棄業界專長,全然融入台灣學界文化,也是頗困難的 。

我的個人經驗是,目前所謂軟體寫作的人才,要達到上乘境界,簡單來說,所需具備的天分之一是「學得快」,其二是能將學到的東西有「系統性組織」起來。光是要學的快就很不容易了,尤其是在台灣這種非英語系國家長大,看文件就居於弱勢,落後印度人許多。系統性的組織,也不是我們傳統文化裡的強項。

我自忖沒有很好的軟體寫作天份,也不想專攻這個先天居於弱勢的領域,所以我做的是系統研究,結合計算機架構、作業系統、平行處理,交錯著嵌入式平台、高效能運算、商務應用、資訊安全,搭配我個人對各類型電腦科技濃厚的興趣,想辦法有系統性地一點一滴建構出一些屬於我們的know-hows。

您說的「大致」沒錯:「這些訓練不會出現在大學教育中,因為不太可能發論文。可是就長期來說,這才是市場需要的人才。」您說不會出現在大學教育中,未必如此。我為了訓練系統人才,我在最近五年開過下列課程:

Linux Kernel and Device Drivers
Parallel and Distributed Programming
Embedded Multicore Systems and Software
Performance Engineering of Software Systems
Advanced Topics in Systems Research

我現在還在接這種有些老師不願意接的課程開發計畫,這些研究所課程,還有我給予我的學生的研究訓練,目的就是提供您所提到的訓練。我們不教Android Programming,因為學生自己應該有能力在幾周之內自己學會他的API,我們要學生去修改Android和Linux的內部,改進模擬器和虛擬機器,設計、模擬和分析多核心系統,要學生在我們跟MediaTek、IBM合作的計畫裡學習實務經驗。

我想,我雖然不敢保證這樣的訓練能夠產出您心目中的A型人才,但我自認從我們實驗室出去的學生具備起碼的實務研究能力,而目前來自業界的幾位博士班學生也認為我們做的東西能夠和他們實務的研發相結合,進而提升他們的研發能力。

不好意思,寫到後來變成在吹噓自己,但是我很希望有像您這樣關心國家科技發展的專家多給我們指教,讓我們未來能夠做更好的努力。

舉一反「三」與指導研究

「舉一反三」是什麼意思呢?我今天問學生,為什麼是「三」?有人說,三是代表多的意思。我說,可以這麼解釋,所以很多人老是說當老師的都希望學生學得快,你只要教一樣,他就會三樣!我小學老師,就常常罵班上同學,不會舉一反三,而是舉三反零,這也是我目前常常聽到同事抱怨的。

我說,這真的是孔子說的話嗎?有時候我們可以多去研究一下這些數字。原文「舉一隅不以三隅反,則不復也」,是說有四個角落,我帶你們去看了一個角落,你們要懂得去看剩下的三個角落。所以,「三」這個數字,並不見得是代表「多」,而可能是代表「全」「周延」「完整」。而且這個「反」字,除了做「反應」解之外,是否代表學生該去做「反向思考」甚至是「反對」。(當然,八股的教育中,做反應解。)

我個人認為這樣解釋比較合乎人性。每位學生天資程度不同,有些反應快,有些反應慢,要求馬上有所反應,而且要加碼,這要求是否太高了?很可惜,查閱一些成語解釋,大部分都說:「學一件東西,可以靈活的思考,運用到其他相類似的東西上」,把每個學生當做天才去要求,不然就不想教了,這是不是太奇怪了呢?

就我個人而言,我很希望學生能夠在聽了一席話之後,慢慢且深切地去探索相關但非相同的領域,甚至挑戰舊的論述,做出完整的研究。

我認為,孔子的這段話,是指導學生做研究的「心法」。我們不妨看看「完整」的原文:『不憤不啟,不悱不發,舉一隅不以三隅反,則不復也』。不到學生想求明白而無法獲得時,不去開導他;不到學生想說卻說不出來時,不去啟發他;帶著學生去探索一個角落,如果學生不想或是沒辦法主動探索其他三個角落得到全貌的話,那就不必再教這個學生做研究了。」

我跟學生說,孔子真的很厲害,不這樣做,很難讓一路上來只會背書、解考古題的學生深刻體悟到「研究」的真諦。現在你們從小所接受的教育,老師有等到你想求明白而無法獲得時,才去開導你嗎?有等到你想說卻說不出來時,才去啟發你嗎?大概不會。尤其是補教名師,應該都是把知識整理得好好的端到你前面,讓你好好消化吸收。等你們進到研究所了,再去要求你們「舉一反三」:老師教一套戲法,你們想辦法變出三套戲法!研究,有這麼簡單就好了;研究所,能當成一種產業就好了...

同學啊,你們真的想學會做研究嗎?有想要老師用第一等的教法傳道授業嗎?老師固然重要,自己得要想辦法突破。就算拿到博士學位,一輩子要做的研究還很多呢!在研究所裡,老師能帶你去探索的,不過是冰山的一角,天底下有趣和希奇古怪的事情太多了。「舉一反三」,每次跟畢業的學生聊天,尤其是今天跟我實驗室去年畢業的涂嘉恆博士對話,也是做老師一大樂事。

Research Directions 2013

這學期終於告一段落,今天上午在實驗室學生前面談未來研究方向,不知不覺就講了兩個多小時... 領域很大、問題很多,有不少研究可以做。附上投影片第一頁,給有興趣的同學朋友做參考。


2013年1月15日 星期二

Aaron Swartz 雖千萬人,吾往矣

姑且不論『犯罪』與否,Aaron Swartz做到『雖千萬人,吾往矣』,即使選擇自縊,也達到喚醒世人的作用,短短的人生,卻是轟轟烈烈,何等氣魄?

參考閱讀:
擁有這樣『人才』的國家社會,沒有辦法好好運用他的才能,是何等悲哀?是哪裡出問題?在惋惜之餘,我個人悼念這位英雄的方式,是去思索這整個事件,包括以下的問題:
  • 法律制度的存在,是為了保障人民,促進發展,在這事件中,法律保障了誰?促進了什麼?
  • 知識產業這塊大餅誰吃最多?知識經濟的掌控權在誰手上?當資訊科技已經大幅降低資訊管理與分享的成本的時候,哪些人仍然要維持他們的既得利益?
  • 學術界(以MIT為例)如何自處,能否置身事外?
  • 這件個案對於台灣現況有什麼啓示?
  • 對於那些對我說想要徵求『A類人才』的公司,我建議你們重新思考一下,你們是否有能力好好運用這種人才?
我想,這些問題是身為知識分子可以(或說應該)去探索的問題,尤其是年輕學子,或許可以多想想。
 
Aaron Swartz 的家人想了很多,以下Aaron Swartz家人的公開聲明,譴責「司法系統大砲打小鳥」「MIT校方不挺身而出」:
 
Aaron’s death is not simply a personal tragedy. It is the product of a criminal justice system rife with intimidation and prosecutorial overreach. Decisions made by officials in the Massachusetts U.S. Attorney’s office and at MIT contributed to his death. The US Attorney’s office pursued an exceptionally harsh array of charges, carrying potentially over 30 years in prison, to punish an alleged crime that had no victims. Meanwhile, unlike JSTOR, MIT refused to stand up for Aaron and its own community’s most cherished principles.
 
唉,這種制度殺人的事情,在台灣是常態,該從何談起?不如不談。

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,只有兩頁,不妨看看,可以看看我們還缺些什麼東西。總之,可以做的研究多得很!

2013年1月4日 星期五

談Intel的60核心協同處理器Xeon Phi

最近用『說』的方式,發表了一些看法,感覺上還滿方便的。ITHome的主編來訪問我,聊個半小時,講的東西就被記錄下來,比自己打字還快 :)

我講的東西被刊登在這篇報導裡:
Intel推60核心協同處理器Xeon Phi挑戰GPU繪圖卡
http://www.ithome.com.tw/itadm/article.php?c=77741&s=1

有些話不便在採訪中講得太重,免得被斷章取義,在這裡補充一下,在古文裡,這叫做『注』『釋』或『註釋』 :)

以下原文摘要用斜體字,註釋用藍字紅字。開始的那幾段跟我沒有關係,是編輯自己整理的,或是訪問其他人的,後面那幾段才是我講的,算是壓軸嗎?

每年公布兩次的全球超級電腦5百強排名,不只是各國展現運算國力的排名,從排名中也可以看出高效能運算技術的新趨勢。… 但是,這份排名中,也有6臺超級電腦採用了Intel剛推出的第一款60核心協同處理器Xeon Phi,其中包括了全球超級電腦排名第七,位於德州先進運算中心的Stampede超級電腦,這也是第一部採用Xeon Phi協同處理器的超級電腦。 … Xeon Phi的首度登場,超級電腦除了利用GPU來提高運算效能的作法之外,又有了新選擇。 

XEON Phi登場,為什麼選超級電腦作為最初的戰場?當然是有理由的。

1 Pflops相當於每秒可以執行1,000兆次的數學浮點運算。而可以提供17.59Pflops運算效能的Titan超級電腦有多快?每個人每秒若能計算一次浮點運算,全臺灣2,300萬人需連續計算24年所累積的計算量,就相當於Titan用1秒鐘所完成的計算量。

這段實在是有講等於沒講,現在很多地方都好像有這種弱智的對話。

因為Nvidia早在1999年就推出第一款GPU繪圖卡,2006年時更發表了GPU的開發框架CUDA(Compute Unified Device Architecture),協助開發人員透過C語言或Fortran語言來運用GPU的平行運算核心,2008年更推出專供高效能運算用的GPU繪圖卡後,不只超級電腦,許多HPC高運算伺服器也紛紛搭載Nvidia的GPU繪圖卡,來提高運算效能。 … 不過,Nvidia GPU繪圖卡在平行運算領域的地位,開始受到了挑戰。英特爾推出了Xeon Phi協同處理器來對抗Nvidia的GPU。 

CUDA是比較早出來的東西,市場佔有率高。不算非常好用,但是硬體的性能價錢比很高,所以很適合用來建超級電腦,反正超級電腦的使用者已經很習慣花很多時間去開發和調校城市了。(我博士論文就是搞這個的)。

英特爾推出超多核心架構的Xeon Phi協同處理器5110P,採用PCIe介面卡設計,可作為HPC的運算加速卡,單顆處理器內建了60個運算核心,運算效能媲美1臺1997年的超級電腦。 … 這款處理器採用22奈米製程,時脈1.053GHz,採用常見的PCIe介面卡設計,並搭配被動式散熱機制,功耗為225瓦,可搭載8GB的GDDR5記憶體。 … 除了5110P之外,另外還有還將推出一款更低價的Xeon Phi 3100協同處理器,可支援6GB記憶體,同樣採用22奈米製程,但熱設計功耗較高,達到300瓦特,預定明年上半年上市,售價將會低於2,000 美元。

2000美元的處理機貴嗎?新東西當然貴,如果量夠多的話,價格會降下來的。問題是,銷售量有沒有辦法衝高?這是雞生蛋 蛋生雞的問題。Intel在個人電腦的市場上呼風喚雨,憑藉的就是市佔率,現在豬羊變色,Intel是後來者,要靠什麼打江山?


英特爾亞太區暨大中華區高效能運算解決方案架構師Scott David表示,因為Xeon Phi協同處理器延續了Xeon的x86架構,所以,可以沿用平行處理常用的開發語言如C、C++和Fortran語言,也能沿用原有的平行運算模型,所以,在原有Xeon E5處理器環境中執行的程式碼,略作調整並重新編譯,也可以在新的Xeon Phi處理器執行環境中,不需要重新改寫程式碼,就可以提高效能。

Intel官方的說法,就是靠這個Intel最厲害的市佔率,叫大家不要學什麼CUDA了,用原本寫給多核心Intel (x86)電腦的方法就對了!真的嗎?廠商講的話不能盡信,要仔細檢視喔,所以我小小吐槽一下。

不過,臺灣大學大資工系副教授洪士灝認為,雖然可以執行,但要充分發揮Xeon Phi的運算效能,還是得費心調校平行運算的程式。

『費心調校』這四個字,說得很模糊,但是內行的人就聽得懂。這不是普通人會做的事,剛好可以拿來訓練我的學生!

若用核心數來比較,Nvidia的GPU繪圖卡擁有高達2千多個運算核心,而Xeon Phi介面卡只搭載一顆Xeon Phi,只有60核心。看起來GPU的核心數比Xeon Phi多很多,但是,洪士灝認為,Nvidia的GPU繪圖卡和Xeon Phi介面卡,同樣都是可以用來加速HPC平行運算的效能,但兩者適合的運算架構截然不同,對於平行運算的加速效果,不一定能放在同一個標準上比較。

不一定能放在同一個標準上比較,那要怎麼比較?請來修計算機結構。接下來這幾段是我對採訪人員免費上的課:

臺灣大學大資工系副教授洪士灝表示,GPU類似SIMD架構,而Xeon Phi則是MIMD架構,兩者的運算架構截然不同,擅長的平行運算任務也不同。HPC常見高效能運算方式有兩種,第一種是資料平行化的運算方式,也就是Data Parallel,也可稱為Stream計算。這種作法適合處理大量資料,資料就像水流一樣持續提供給處理器,處理器執行完運算指令後,處理過的資料不需保存在GPU加速卡中,而是繼續提供下一筆資料給處理器,就像水流一樣持續流動。洪士灝表示,GPU擅長這種運算方式,運算量不大,也不用保留資料,處理完就送走。 


另外一種運算方式則是要對同一批資料反覆進行大量運算。例如汽車碰撞的程式,可以用來計算汽車和牆壁碰撞後,汽車或汽車內木偶的變形過程。分析人員可用3角形來模擬汽車外觀,再透過平行運算來計算汽車受力後的變化,這是工程上常用的有限元素分析方法或者稱為蒙地卡羅模擬。運算時,程式每次計算一個奈秒後的變化,如哪些地方受力會發生改變,計算出結果後,程式再依據前一奈秒的結果,採用同樣的運算規則來計算下一個奈秒的改變情形。資料就只有車子和牆,同一批資料要計算幾百萬次。洪士灝認為,Xeon Phi比GPU更擅長處理這類型的運算。 

因為GPU擅長Stream風格的平行計算方式,接近是SIMD(Single Instruction, Multiple Data,單一指令多重資料)的運算模式,這是指所有運算核心都執行同一個指令,只是作用在不同的資料上。而Xeon Phi則是MIMD架構(Multiple Instruction, Multiple Data,多重指令多重資料)的運算模式,Xeon Phi中的60個核心,每個核心都可以處理不同的指令和不同的資料。正因為如此,每個處理核心彼此需要許多同步和通訊的機制,所以,Xeon Phi處理核心的電路遠比GPU的核心更複雜。 

而SIMD架構的GPU,上千個處理核心會分群執行,例如一次使用256個核心,每個核心都是同步執行相同的指令,所以,彼此之間不需複雜的通訊或同步機制,而且所有核心可以共用同一個指令分派元件,所以,單一運算核心的電路可以簡化,就很容易在單一晶片中設計出大量的運算核心。但是,洪士灝認為,遇到蒙地卡羅模擬這類運算需求,例如汽車碰撞模擬,要對同樣的資料進行反覆大量運算的需求,GPU就不容易處理。

我已經盡可能用白話文解釋了,聽不懂的話,我也沒辦法。話說回來,為什麼中文的科普教材幾乎都沒有『電腦科學與工程』?電機資訊人應該去編一些科普教材,向下扎根才是。

不過, Xeon Phi介面卡目前內建記憶體只有8GB,有些大型運算任務的資料量容易超過這樣的規模,程式得先切割資料後才能放入Xeon Phi中計算,這樣作會影響運算效能,所以,Xeon Phi目前也不一定能滿足這類大型運算的需求。 洪士灝表示,Xeon Phi的處理核心是x86架構,雖然複雜性相當於是十年前的處理器架構,只是現在集中到同一個晶片中,就像是在一張主機板上有60顆處理器一樣,彼此組成運算叢集。「若能找到適合這類處理器的應用,這種在單晶片中放入60核心的作法,能以更低成本來取代現有的伺服器叢集或大型平行運算用的電腦。」他說。

Xeon Phi到底好不好用?答案是:『It depends』。要看你遇到的問題而定,見招拆招。有多少招?請參考拙著『 Optimizing Parallel Applications』,這本1998年寫的博士論文,到現在還很有用。

我們實驗室很快就會拿到這個XEON Phi來玩,有興趣的同學可以來詢問。