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


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

2015年9月30日 星期三

提前學測 帶動高中完整教育?

臉友賴彼得老師請我對他的投書「提前學測 帶動高中完整教育」(註)給點意見。我的粗淺想法如下,也歡迎大家討論:

我一直不大認同「為考試而學習」的作法,但既然這樣的作法似乎已是根深蒂固的主流思想,退而求其次,如果只是為了「公平地選拔出那些讀書考試的人才」,那麼提早學測,讓想以考試決定大學科系的學生早點知道考試結果,讓為考試而學習的作法提早一年結束,也未嘗不是件好事。

況且如果知道未來要念的科系,而且高三的學生行有餘力,或許有機會先修一些大學的課程,例如國外承認的大學先修(AP)課程,可以抵免大學學分。提早學測,可能連帶還讓學生在高三時多了一些自由發揮的空間。而且,原本要付三年補習費用的家長,這樣一來壓力應該會輕一些,不過即將受少子化影響的補習業者,可能因此而雪上加霜。

但或許有人會說,那高三的課程為什麼不考呢?我個人認為,第一,高三的課程有那麼重要嗎?為什麼學測一定要考?不考也不會怎樣。第二,就算學測不考,學校還是要考,否則學生畢不了業,所以學生還是得學好。第三,如果說學測提前,高三學生就不念書,那麼這個教育內容是失敗的。

然而,提早學測有個技術上的問題:應屆高三畢業生可不可以考?考了之後可不可以馬上去念大學,還是要等一年?如果不用等,那每位學生等於有兩次學測機會;如果要等一年,那這些高中畢業生在這一年要做什麼?打工,還是修AP課程?社會大環境能支持這一年中高中畢業生的學習嗎?

我覺得提前學測要先解決的技術問題還不小,得先好好思考配套措施才行。所以,或許我們該先回到原點,思考如何改善教學環境與大學先修課程制度,先讓高三下學期的學生,能夠好好在改善過的環境中適性學習。

至於倡議延後學測的人,似乎是看到問題只願治標不思治本,對這些人來說,考試好比萬靈丹,延後學測就能讓學生積極參與高三課程?不要鬧了,積極參與補習班課程還比較實際,而且,最好是能用考試讓學生一輩子乖乖聽話啦。

(註)http://udn.com/news/story/7339/1216690

2015年9月26日 星期六

大數據與社會人文

學電腦的人大概都聽過一句話:「垃圾進、垃圾出」(garbage in, garbage out)。如果輸入亂七八糟的資料,那麼根據這些資料所產出的結果,很可能也是亂七八糟的。所以一旦發現資料有異常,我們往往儘快停止電腦的運作,免得新產出的垃圾資料覆蓋了正確的資料。

威權時代中教化人心的資訊,有多少是真的呢?只要十句話中夾雜一句謊話,就可以顛倒黑白(參考:金庸的鹿鼎記)。所以我對於從小學校所教的歷史,只當成是欽定的小說。我對考古沒興趣,所以也沒想去找資料去驗證這些故事的真實性。

這不是說歷史不重要,而是說我在很不幸地沒有辦法和時間去確認歷史教材的前提下,不大想用歷史典故去論證些什麼。對我來說,短短數十年所目睹的環境變遷,乃至於金庸小說中的人物故事,可能都比歷史課本的意義豐富。這聽起來很奇怪,竟是一種無奈。

所謂「往事已矣,來者可追」,以前的歷史的真實性有待商榷的原因,一則是上述人為選材、加料所造成的偏頗、扭曲,一則是閱讀、分析歷史者無法蒐集完整資料,以及缺乏時間分析大量資料。

大數據時代的來臨,大幅改變了歷史的記錄和分析機制。現在,具備上網能力的每個人,都可以在互連網上公開記錄與分享他/她所認知的歷史,這些記錄有可能被永久記錄下來,隨時被有興趣的人或電腦所閱讀與分析。而閱讀和分析的結果可能再被公開分享在互連網上,不斷再造微細的歷史事件。

為了設計飛彈、原子彈、先進武器而精益求精的電腦科技,此時可用於整理與分析眾多微細的歷史事件,或許能夠較為客觀地提供我們歷史的全貌,單一事件不會被埋沒,統計可以更精確,事件與事件之間的關係可以被發掘出來。

當然,這樣的歷史,或許不容易被現在的史學家所接受。但誰知道未來會如何呢?或許再過個三五十年,互連網上所累積的大數據,將使得「近代史研究」的面貌大為改觀。而千年之後,或許將以大數據出現為分野,之前的歷史,被稱為古典歷史和黑暗歷史。

以上是我心血來潮所推測的,但我想這並非空穴來風,所以我停筆上網搜尋,發現有學術社群在這兩年開始研究計算歷史(computational history),還發明了一個新字Histoinformatics,有些社群所見跟我自己所想的類似。

除了歷史之外,不少學者也開始利用大數據研究各種社會人文現象。然而,由於目前尚在起步階段,大數據和分析大數據所需的運算資源並非容易取得,而且此類研究需要兼具社會人文的專業和運用電腦的能力,這樣的人才很少。

所以,或許要再過幾年,大家才會看到大數據對於人類文化深層的影響。現在對於社會人文感興趣的年輕人,或許可以及早思索一下如何開創出新道路、為學術研究和實用價值注入新氣象。

2015年9月25日 星期五

SCI遺毒與大學改革之路

看到台大教學績優老師不被續聘新聞(註1),我感慨萬千,想到我在幾年前因為堅持某種長官們認為莫須有的理念,已經做好成為台大第一個被八年條款解聘的助理教授的覺悟。其中的確有很大的成份是制度面和系統的問題,但大學自治的很重要的基礎在於「人」,不能全以法論處。

我本來想說不被續聘的李教授,可能是SCI期刊論文篇數不夠,但我在李教授園藝系的網頁(註2)上,看到他光是2014年就發表了六篇SCI期刊論文!當然我不是園藝專業,所以我無從判斷這些論文有多好,但一位連續六年獲教學傑出獎,一年能發表六篇SCI期刊論文的助理教授,都不能升等,不獲續聘,對我來說是一件頗難理解的事情,稍作研究,發現主要的官方理由還是SCI期刊論文點數計算的問題。

我當年非常不認同非得以SCI期刊論文呈現研究成果的主流想法,後來幾位與我私交很好的長官,紛紛來勸我花一點時間把還可以的論文投到還可以的期刊上,同時也因為想繼續在這個學術界的位置上做些自認為重要但缺少人做的事情,所以從善如流,在兩年間卯起發表了一堆論文,隨後也因此而升等,免去八年條款的困擾。

當時升等的要件,就是期刊論文要足夠,來證明研究成果是世界一流的。問題是,我們這領域很多第一流的研究者是不在期刊上發表論文的,而最新的重要論文往往在國際會議上。但以前的舊觀念,並不承認會議論文,甚至還說因為必須考慮到學校其系所的觀感,以及送國內其他學校外審的意見,所以期刊論文要足夠才行。

這些年來,好幾位不苟同這種作法的新進教授走了,我則留下來,三不五時放砲。系上這幾年也進步了,比較尊重多元;學院進步了,把升等資料送到國外去審;學校也稍微進步了,願意鬆綁「Quota」制,不再以各院統一的比率來規範升等名額,讓各院自行決定升等方式。

因此我想,李教授或許也是不認同SCI,但為了繼續以他傑出的教學來貢獻社會,所以委屈自己奮力在一年發了六篇SCI期刊論文,滿足升等要求?如果這樣在生農學院還不能升等,當然會對校方很失望。

看到這件新聞,不少朋友和學生也很失望,於是園藝系在昨天提出聲明來回應(註3)。但這個聲明,貌似矛盾之處還不少,也許應該先找法律系的人看過比較好。話說,某些法律系畢業的人天天依法行政,還是民怨不斷,所以再怎麼會據「法」力爭,其形象恐怕也不符合眾人對「合理」「合情」的認知。

首先,什麼時候大學變成「依法行政」的單位了?況且法律的目的是保障好人的權益,怎麼會拿各種雞毛蒜皮的「審查細則」出來作為不續聘教授的工具?留不下好老師,說是制度的問題,但如果制度有問題,難道不能修正或是補救?

再說,這個「八年條款」是何時加到「國立臺灣大學教師評鑑準則」的呢?我記得約莫三年前(2012)吧?是否有效力能追朔既往?這份法規並沒有明講,由各院自行認定。

「生物資源暨農學院教師評鑑辦法」還特地連聘任日期都載明了:「助理教授於93年4月起就任現職,於八年內未獲通過升等申請者,視為覆評不通過,應經提院及校教評會決議不續聘。」是否有針對性,我不清楚,但辦法頗嚴峻,幾乎追朔到八年前,有立即用來趕走教授的感覺。

相較之下,「電機資訊學院教師評鑑辦法」倒是特別註明:「未升等年數之計算,一○○學年度現職助理教授自一○一年八月一日起算」,也就是說,如果我如果沒升等的話,要到2019年才有可能被院方以八年條款檢討。

而且,電資學院在訂辦法時,知道「朔及既往」的困難,所以也註明:「一○○學年度現職助理教授任職八年(含)以上仍未升等者,列為評鑑時考量之項目,並於受評表件中註明,供評鑑小組委員參考。」

電資學院的意思是說,我們不會單獨採用這個條款來判定評鑑結果,這只是參考而已。我想,這不只是有考量到「情理」,也有考慮到適法性的問題。

話說在「八年條款」通過之前進入台大任教的教授,在簽聘書時根本沒有看過這個條款,雖然說校方每年按例要求每位教授簽續聘書,但這種與工作權相關的事,應該不是資方單方向訂規矩就能服人的。

而且我以我個人淺見,大學不適任教師的問題,有一大部分是在「資深教授」身上,但由資深教授掌握權力的校院系,在訂法規時往往對於新進的助理教授有非常高的期許。園藝系聲明第四點說「生農學院已統計目前每位教師每年平均約有2篇SCI期刊發表」,但如果去看看園藝系眾教授們的網頁,有不少資深教授並沒有太大的貢獻。

或許資深教授有各種方式來呈現研究成果,不需要再提升等的教授,只需通過門檻較低的「評鑑」,所以不需要多發表SCI論文,而且校方多次重申評鑑的方式要多元化,怎麼可以藉由 SCI這麼庸俗的東西來評鑑德高望重的教授們?

但「生物資源暨農學院教師升等審查細則」竟公然規定要以SCI/SSCI為首的期刊論文集點的換算公式,以及升等必須集滿的點數,讓我大開眼界。我不知道,這個案件如果鬧進了法院,這份資料作為呈堂證供,法庭做何感想?

而且園藝系在聲明的第七點中讚揚「李師在校期間,教學深受學生肯定,本系仍依據國立臺灣大學教學優良教師遴選及獎勵辦法推薦院、校為教學優良教師,加以表揚。又因李師於申請教師升等後陸續有多篇論文發表,本系基於研究肯定,亦推薦李師受獎台灣園藝學會學術獎表揚。」

既然如此,那我真的搞不清楚園藝系為什麼不努力保護一位他所認可的好老師?生農學院為何要以「審查細則」這種小到不行的法條來堅持不續聘?因此這項不續聘案,就法理情來說,似乎都有不小的爭議,不是簡單依法行政的聲明所能夠平息的。

更何況,在各界長期批判大學教授評鑑升等過度重視SCI論文之後,教育部已在2014-10-23發出一份公文給個公私立大學校院:「為避免國內部分大學因過度重視研究量化指標,對校內研究與教學品質產生負面影響,請各校檢討並配合辦理」(註4),但其實所謂的「負面影響」早已擴散深遠。

教育部公文中明確說要「避免以單一研究量化指標作為升等指標及門檻」,顯然與生農學院的升等審查細則的精神相違背,也許是公文來得太晚,生農學院在去年八月「依法行政」 - 仍舊以單一研究量化指標作為升等指標及門檻。

我在去年底就評論說「如今雖然教育部開始要求不得採用單一指標,但各大學校院是否會照辦?可能還要等上好一陣子吧。」(註5)台大教務長昨天說「教育部應尊重大學自主,否則台灣的學術就垮了」(註6),我想「大學自主」的確是重要的精神和目標,而在這件事情上,更顯示出「系所自主」「尊重專業」是校方應該探究的方向。

要改革官僚體系,法規的「鬆綁」是個大問題,而這件事說起來容易,但在官場政治上似乎是件大逆不道的事情。把權力下放之後,長官要怎麼管?出了問題,誰要負責任?所以改革的速度非常緩慢,如果沒有人積極推動的話,只會更慢。

我近年參加幾次教育部、科技部、經濟部的會議,感覺到政府的官僚在作風上有些轉變。大概由於民怨高漲、政府動輒得咎,或是近來「翻轉」的風氣盛行,官僚有逐漸將法規鬆綁、權責下放的傾向,所以目前有部分的問題,癥結點似乎已由原來中央政府的控管問題,轉到各個計畫辦公室和各個學校。

事實上,需要三級三審的教授升等審查,校方在近年來已傾向於由各學院自行決定,而校方只做形式上的審查,所以校方大可不必為生農學院背書,社會的公評或許該由生農學院去面對,更不需用「維護學校聲譽」的大帽子,來維護學院和系所的決定,這樣學院和系所才會更認真去經營自己。

但國內各大學只重視研究的現象已經非常普遍,何止台大?尤其是某些科技大學,早已是走火入魔。學校長官為了爭取政府經費,不得不要求教授們呈現各類績效,以前只看期刊論文數量,現在聽說要多元化,則是多多益善:期刊論文還是要,更希望有專利、技轉、產學合作計畫、學生實習件數... KPI越訂越多,究竟是滿足一項就好,還是每項都要滿足?

我這週一去中部某科技大學訪視計畫執行成效,曾經在工研院擔任過工程師的資管系助理教授,雖然對於教學有熱情,但仍是為升等寫論文傷腦筋。我們瞭解狀況的人,會建請教育部提供經費補助,鼓勵支持他做正確的事,看看是否能讓他所屬系所和學校對他多尊重些。但若學校制度僵化,做這些計畫,反而對他的升等不利,實屬兩難。

改革之路漫長,我們也只能盡一己綿薄之力,設法做自認為對的事,說對的話而已。希望能力大的人,可以設法多做一些。

後記:

我想我們每個人對各類事情都有自己的看法,我很感謝有人分享個人的看法給我,而我也只是在個人臉書上分享個人想法而已,無足輕重。

我猜是李教授的代表作出了狀況,但我很清楚地說學校是「依法行政」。所以無論好壞,系所與學院按照他們所認定法規做事,但依法行政到這個程度是一件好事嗎?如果說是見仁見智,那就值得討論了。

所以我文中主要討論的是用SCI計點的弊病以及制度面上的問題,我對於李教授的事件感到遺憾,但更希望能夠討論和解決制度面的問題,減少類似事件的發生。

(註1)http://udn.com/news/story/6928/1204553-八年條款卡關-台大教學績優老師不被續聘

(註2)http://www.hort.ntu.edu.tw/people/bio.php?PID=18

(註3)https://www.ptt.cc/bbs/NTU/M.1443101721.A.47C.html

(註4)https://www.dropbox.com/s/46etd6xwxnboyg8/20141028045047001.pdf

(註5)
https://www.facebook.com/shihhaohung/posts/822993814409775

(註6)https://tw.news.yahoo.com/台大-應尊重大學自主-215006454.html

2015年9月23日 星期三

深耕自由系統軟體

我們提出一個以自由的系統軟體為基礎做效能優化的計畫,重點不是要創造全新的自由軟體,而是「善用」自由系統軟體去解決電腦系統面的問題。

我認為,過去在推動自由軟體時有個盲點:只重視產出新專案的件數,而且多半還是以應用軟體為主。結果雖非全然無用,但國內有多少好用的應用軟體是源自於自由軟體計畫呢?

執行面的問題,出在學校教授被要求要生產論文,而花費很多時間教學生以軟體工程的規範去寫軟體,需要寫文件和測試,根本不划算。光是要學生用英文寫好文件,以及與國際接軌,就是一大挑戰,到底是教資訊還是教英文?非常花時間,不如做理論去。

所以我自己在經營自由系統軟體研發時,傾向於以下的作法:

(1) 學生要先學會「使用」和「瞭解」核心的自由系統軟體,例如Linux和OpenStack裡面的好東西。沒有使用,怎麼會深刻瞭解呢?而且這些核心的東西,到很多地方都用得上,學了不會浪費時間。

(2) 「研究」重要的自由系統軟體,例如KVM, QEMU, Hadoop, Spark, OpenXXX之類的東西,看看其中有哪些效能問題,或是功能不足之處,或是架構的改良。這當然必須考量人力、時間、資源的限制,尋求業界的支持,而且最好是有個夠大的團隊和夠專業的人才。

(3) 如果研究有成,希望能夠改良既有的自由系統軟體,或是加入新元素,「回饋」自由軟體社群;或是以自由系統軟體為基礎,打造創新性的產品。這些是我們所樂見的目標,並非申請專利和發表論文,請長官不要用錯誤的KPI來評鑑計畫。

我想,這是值得深耕的領域,而如此按部就班地去做,應該會有好的成果。即使政府部門不贊助,我們也渴望與產業界好好地共同來經營這塊。有錢出錢,有力出力,希望能做出傲人成績,去改變論文掛帥、KPI評鑑的弊病,也為下一代鋪路。

軟硬並用,加速應用

這篇大致上源自於我剛剛對於某科技公司邀約的回覆,他們有企圖心想在嵌入式系統上加速電腦視覺,希望突破成本、體積、熱功耗散、系統設計、軟體開發上的問題,所以想找我去聊聊。

我幾年前有去過該公司講課,覺得該公司是國內少數願意投注在研發的公司,只不過處理機的研發需要大量人才以及長時間的深耕,有其高門檻。

想以類似deep neural network之類的方式做較為複雜的電腦視覺和學習,例如Google Brain在做的事情,需要頗大的資料和運算資源,如果可以在單機上完成,那就會太完美了。

然而考慮實際的狀況,真正的瓶頸,往往在於功耗。無論是embedded systems還是 data centers,大多是如此。改善運算效率的方式很多,但沒有超級特效藥。

舉個不倫不類的比喻,如果說目前machine learning、big data、IoT是顯學,那系統設計則可說是密宗。這兩者搭配起來,會很有威力,但是顯密要合作並不容易,雙修則更難。

例如,用多核心來跑平行化過的程式,效能可能比單核心多1~2個數量級;如果用上GPU、好好優化的話,可能再加一個數量級上去;如果願意設計專用 的硬體加速器,有可能再加上1~2個數量級。

但這些效能提昇的可能性,與應用高度相關。所以對於某些應用,例如Bitcoin挖 礦,比的就是效率,為了提高投資報酬率,到後來大家都用ASIC,或許有比普通桌 機高1000x以上的效率。可參考[1][2]。

Bitcoin挖礦這類的應用,可說是特例:(1) 程式可以大幅平行化,幾乎有用不 完的平行度 -- 每筆資料的運算幾乎完全獨立,少有相依性,所以平行化的難度 低、效益高。(2) 每筆資料所需的運算,基本上是計算量高、複雜度低的hash function,所以用ASIC實作的難度低。(3) 這種能夠直接賺到錢的東西,很多人 蜂擁投入,所以研發費用可以快速分攤回收。(4) 因為挖礦的本質屬競爭型,速 度慢就挖不到,所以在競爭激烈的情況下,設備效率的進展很快。

但並非每個應用都具備上述四大特性,所以說Bitcoin挖礦是特例。

對於某些應用,即便將核心計算部份做成ASIC,單機的效率還是不夠用,這時只好用多台機器並用,組成computing cluster。這個時候必須額外負擔網路的成本,這時的技術層次有更高了。傳統的data center並非針對特定應用設計,所以要自 己建這個cluster才行,例如SpiNNaker計畫[3]嘗試建構的人腦模擬器,但他們還是沒有用上ASIC。

然而對於某些應用,即便將上述所有技術都用上,可能還是不夠力,這時大概只能寄望於未來的新科技。

很多年以來,無論是真的不夠力,或是不願投資,人們習慣把希望寄託在未來的計 算晶片,因為Moore's Law告訴我們10年後的電腦應該會比現在快100倍,所以只要 等到時間到了,自然水到渠成。

可是在今天這個大家談論Moore's Law是否會終結的年代,把希望放在未來,不見 得是好的賭注。當然Moore's Law有可能再延續幾年,有人在發展新的運算技術 (例如量子計算),但越來越多的人已經很認命地在研究如何使用以前只有搞超級電腦的人才在乎的異質計算和平行處理。

我一直說這有硬體基礎的台灣,是有機會做軟硬體整合設計,主動在效能和效率上有所突破。但這些突破,必須仔細分析應用面,大概沒辦法用一些原則概說。所以我鼓勵跨領域團隊研究,比較有突破的機會。

[1] https://www.bitcoinmining.com/bitcoin-mining-hardware/
[2] https://en.bitcoin.it/wiki/Mining_hardware_comparison
[3] http://www.artificialbrains.com/spinnaker

2015年9月22日 星期二

談Microkernel

我這學期會請蘇文鈺和Jim Huang (Jserv)兩位成大教授來我的「系統研究專題」課上談談他們在系統研究上的專業,時間和內容會再公布。此外我還會設法邀請其他的教授來幫忙,讓修課同學知道系統研究的學問之豐富有趣。

誰說上課只能在課堂上?Jserv 常常在臉書上講演作業系統的專業新知,使得學生和我大開眼界,也努力自學來充實自己。例如Jserv這篇,讓我回顧作業系統的發展以及最新趨勢,我在看了之後,記錄以下自己的想法,在臉書上向黃教授提出報告。

關於microkernel vs monolithic kernel的辯論,我覺得終究還是要考量 performance, application, security三者的trade-offs(這剛好也是我們實驗室命名的緣由)。

為了安全性而犧牲一些效能,或是為了效能而提高一些風險,到底哪個比較明智?很難講,我想必須針對每個應用做個案探討。

對於個人電腦,即便處理機效能和虛擬化技術大幅進步,trusted computing的概念始終沒有普遍化,為什麼呢?當然原因之一可能是主流的作業系統不大可能說自己不夠安全而引刀自宮,讓自己從monolithic kernel變成microkernel。但個人電腦的使用者對此沒有強烈地需求,是根本的原因。

在伺服器上,由於安全性出問題通常還是倚賴專人控管、人為處理,所以microkernel的安全性優勢還是往往被忽視,除非應用服務是極其重要和不可中斷的,才會考慮換掉Linux改用安全性較佳的OS。但是經過千錘百鍊的Linux Kernel,以及許多靠著Linux維生的開發者和管理員,在技術上和政治上讓換掉Linux這件事成為少數。

與金流、機密有關的專用電腦設備,例如銀行ATM、商場POS機、FBI的系統,往往選擇專用的OS,但是否一定要是microkernel呢?這也難講,因為專人開發的專用的OS,如果開發得好,有不錯的安全度,而且不給使用者亂裝額外應用,外人也不大清楚OS的內部,所以安全性的風險通常很低。當然還是有內神通外鬼的情況,以及駭客入侵,但層出不窮的監守自盜和攻擊方法,豈是microkernel就防得了的?

我想目前比較需要辯論的問題在於:與金流、機密有關,需要強化安全性,卻無專人可隨時控管的大規模電腦佈署上,例如手機和IoT裝置,要如何確認這些裝置的安全狀態?

已推出手機付費服務的Apple Pay,手機上跑的iOS,雖然源自於microkernel的Mach,但不被承認是純粹的microkernel,因為它的file systems, networking stacks, process and memory management functions都放在kernel裡面,頂多只能算是混種、介於兩者之間的hybrid kernel。

效能當然是Apple的主要考量之一。如果iOS改成純粹的microkernel,但是iPhone跑起來卡卡的,還會深受使用者的喜愛嗎?所以Apple把microkernel的Mach改成混種的OSX和iOS,以強化效能。

話說電腦進步至今,單核心的效能成長趨緩,很難再有重大突破,所以我不認為microkernel的效能弱點,在強調效能功耗效率的行動裝置上有辦法被降低到被忽視的程度,因此我不認為Apple會把那些在kernel裡面的模組移到user space。

Google的作法剛好與Apple相反,在設計Android架構的時候,他試圖解決Linux作為monolithic kernel最令人詬病的3rd party device drivers不安全的問題,設立了一個介於user space和kernel之間的hardware abstraction layer (HAL)來擺放drivers,算是有些效法microkernel的精神,同時讓廠商有規避Linux kernel的GPL的作法。但是為了效能,不少廠商還是會把一些功能放在kernel中。

類似的辯論可以延伸到virtual machines v.s. docker containers。就隔離性而言,VM比較好,但container的效率和速度較高。再次,我們看到performance-security的trade-offs,必須要看應用面的需求。

對於眾人注目的IoT裝置以及SDN/NFV設備,我覺得Muen separation kernel  (SK)的說法是有些吸引力的。例如四軸直升機,如果被駭客入侵,飛去攻擊特定目標,那該如何是好?又例如有些網路設備乾脆就跑OpenFlow軟體來支援SDN,但如果控制軟體被駭,網路被綁架了怎麼辦?

很多這類型的裝置會使用Linux作為控制用途,以通訊業者的術語,就是control plane的部份,但這部份並不會一直在運作,因為理想的狀況是,一旦透過control plane設定好設備的功能之後,除非有異常狀況發生,否則這部份就可以在一旁休息,所以犧牲一點效能換取較高的安全性,應該是可以的。

相對於control plane的data plane的部份,做的是資料處理的功能,可以獨立出來在microkernel, container, 或是VM中進行,看看何者效能、效率、安全性、應用開發友善度較為符合需求。而Muen SK的構想,頗適用於網路設備上做NFV。這是個頗有趣的研究題目。

當然Trusted Computing (TC)的作法很多,這只是提供一個參考範例。幾乎每個處理機大廠都會有獨門的TC建置方式,但通常只有大內高手能真正搞清楚。以目前IoT和big data發展的趨勢看來,我想將來會有越來越多的地方需要很多這類大內高手。

2015年9月21日 星期一

「系統研究專題」第二堂課概要 (2015.09.21)

在今天的課堂上,我們舉一些簡單的例子來讓大家體會系統和應用上很容易出現的效能問題,然後陸續介紹一些技術出場。

"Compiler"首先出場,他可以幫我們解決一些常見的問題,所以幾十年前動手寫組合語言的事情,今天大家不要輕易嘗試,因為compiler通常會做得比你好。但是,這也有例外的,而且例外才值錢。你如果有辦法做得比compiler好,那就厲害了。

"System-level performance analysis"是compiler目前還不大會擅長的部分,因為compiler光是看程式碼,很難知道程式何時會遇到cache misses, TLB misses, page faults,更不知道遇到I/O和網路事件時需要多久時間。系統性的效能問題,往往要綜觀全局、有足夠的資訊才能分析周到。

"Performance tools"來幫忙了。像Intel VTune或AMD CodeXL這類效能工具,可以利用處理機內建的performance monitoring unit (PMU)來提供很多效能相關事件的資訊,作業系統中更是到處都有資源使用的紀錄,懂得分析這類資料,就有機會發現效能瓶頸和改進方案。

100% Utilization和Saturation有什麼差別?其中之一是善用資源,把資源剛剛好全部用掉,另一個是在資源不足的情況下,要求系統做過多的工作,所以飽和了,系統的反應時間(response time)越來越長,造成quality of service (QoS)的問題。兩個差別很大,要如何看出來?

"Performance analysis methodology"是科學家也是藝術家,請大家從做中學,透過作業和專題,去體驗這個,順便複習一下computer architecture和operating systems課程中所學過的東西。

"Virtual platform"是我們帶領大家分析hardware-software interactions和設計先進系統的重要技術。頂尖的大公司才會用這樣的技術來模擬正在設計中的軟硬體,以便達成系統層級軟硬體共同優化,但是這樣的工具外面拿不到,我們必須自己做。

"HSAemu+performance models"是我們幫異質系統架構做出來的效能模擬virtual platform。這週的實驗,請大家用這個工具跑幾個簡單的OpenCL程式,初步體驗一下如何用virtual platform來分析效能。

"Automatic design space exploration"是學會用virtual platform做效能分析最大的功用之一,在許多design parameters所構成的百千萬的設計點集合中,找到最好的點,會很花時間,有什麼好方法可以加速呢?

"Parallel processing"在此時可以派上用場。如何用平行處理加速virtual platform、performance modeling、design space exploration,都是值得研究的議題。

不過,大家應該發現我們已經在課堂上提到很多東西,包括:
Linux kernel and device drivers
Virtual machines and virtualization
Parallel and distributed programming
Heterogeneous computing and GPGPU
Reconfigurable computing and FPGA
Machine learning and CNN
Cloud and IoT

這些技術,做系統研究的常常會遇到,請大家跟他們多認識、作好朋友,而我們在課堂上會陸續以top-down的方式介紹給大家。但是大家不要等,因為我們沒有時間教細節,大家要想辦法自己學(投影片和網路上有很多參考資料),或是去修相關的課。為了要成為厲害的系統研究人才,大家加油吧。

2015年9月20日 星期日

寫程式到底要不要天份和熱情?

看到這篇標題為「寫程式不需要天份,也不需要熱情」(http://blog.turn.tw/?p=2683)的文章,覺得還頗有趣的。我很同意作者要破除「深植人心的刻板印象」的心意,想先談破除迷思這個部份,至於寫程式的部份,則有待討論,文末再談。

有時會看到這類經由聳動標題鼓勵讀者思考的文章,有的是作者刻意,有的是媒體加料的。我想最重要的是內容要言之有物,讀者要能思辨。我就常常藉這些機會思辨,用寫文章來澄清思緒,改變自己對事情的刻板印象。

如果我們把這篇文章的標題改為「寫文章不需要天份,也不需要熱情」,似乎也可以論證。馬上想到,一大堆記者天天寫文章,有天份和熱情嗎?(最近有人諷刺記者,說小時不讀書,長大變記者)。

寫一篇四平八穩的文章,不見得需要天份,倒是比較需要努力,但是才氣縱橫的文章,則是沒天份不行。熱情的作家比比皆是,但有影響力的名家不多。而我們從小背國父、蔣公的文章,請問他們有寫作天份,有天天想寫作的熱情嗎?名家和文章的影響力,與很多其他的因素相關,包括政治和機運,在此不一一列舉,所以這問題沒有標準答案,而答案要看你想寫何種文章而定。

我們還可以把題目換成「造東西」,但「造房子」「造汽車」「造飛機」「造火箭」同樣都是造東西,那個需要天份和熱情?講清楚之後,答案可能大不同。如果我們籠統地說「寫程式」,不問清楚是寫什麼程式,那要怎麼談呢?

因此,要思辨這類問題,關鍵往往在於深入追究文字的定義與內涵。一般人總是習慣接受主流的籠統概念,但卻不見得抓得住其具體內容和範疇,所以拿一個籠統概念套上另一個籠統概念。

傳統教育比較不鼓勵思辨,而且特別喜歡看大師如何扼要地回答「大哉問」。很多人特別愛摘錄大師嘉言錄,但不見得知道其微言大義。很多大師自己好像也不願多費唇舌講清楚,只好讓後人自己去揣測「道可道、非常道」的意思了。

我個人提倡在中小學教程式寫作,其中許多好處之一,就是「訓練學生清楚正確表達想法」。目前的作文訓練,很多只是教學生像大師般在短短的篇幅中籠統地說大道理,不夠清楚,也不見得正確。而數學和理化的訓練,則是機械式的解題,解答的式子能有幾行?算不上什麼表達想法的訓練。

承接以上的脈絡,我們來談「寫程式需不需要天份和熱情」這個命題時,首先需要更進一步講清楚「寫程式」的目標,才有辦法深談這件事。例如我簡單將寫程式的目標,分為以下三類分別做討論:

(1)寫程式來解決特定非電腦領域的應用問題,需要的是解決問題的天份和熱情。這類工作只要程式的邏輯正確,能力得以解問題、創新應用,那麼程式寫得好不好,不是重點。如果程式或演算法寫不夠好,找(2)的人來改;系統不夠強,找(3)的人來一起解決。

(2)寫程式來發展電腦領域內的軟體,這種人,常常是在所謂純軟體公司工作,一天到晚與電腦接觸,時時要面對不斷累積、越來越複雜的電腦軟體,常常要學習新的軟體語言、介面、架構,如果沒有天份,那麼可能難以理解複雜的部份,如果沒有熱情,恐怕不易堅持下去。

(3)寫程式來研究和發展電腦系統,這種人,例如在Google/Facebook/IBM/Intel/Apple/Oracle的系統研發部門,最重要的是搞清楚各類與電腦系統相關的技術,改進現有的技術,而他們用來利用電腦來管理、分析和設計新的電腦系統的東西,都是程式,所以他們需要懂得寫程式,但未必是程式高手。

這樣討論就清楚些了,不是嗎?如果大家都把話講清楚,雞同鴨講的事情應該會減少些。

我個人很不喜歡「以寫程式能力來判斷是否為強者」以及「為了寫程式而寫程式」的作法。過度強調這些,的確是造成社會刻板印象的根源之一。因為學習寫程式的人有很多在做(1)和(3)的工作,需要的遠遠不只寫程式的能力,所以不應該特別突顯(2)的狀況,或是以為只有(2)才是王道。

然而,做任何學習和工作最好要具備起碼的天份和熱情,只是所需的專業和程度多寡不同而已。所以說「寫程式不需要天份,也不需要熱情」這句話是有瑕疵的,拿來破除迷思可以,但請不要籠統地抓住這句話到處去宣揚。

總之,想學寫程式,多一項能力,也多了邏輯思考和清楚表達的訓練,是一件好事。至於學了之後要做什麼,那就有太多的選項,最好的方法,就是先入門來學,才能確切分辨以上所講的事。

2015年9月18日 星期五

亞馬遜推 50 美元超低價平板,買五台再送一台

亞馬遜推 50 美元超低價平板,買五台再送一台(註),裡面是聯發科的處理機,一台賣不到US$50,請問白牌機要怎麼存活?

處理機的部份,大概就是一個USB隨身碟的大小,未來價格可能也會像USB隨身碟一樣跳水。但如果能做成應用,價值才會提高。這不是說硬體沒有價值,而是說針對應用設計便宜好用的硬體才會提高產品價值。

這是IoT的機會。想想你週邊如果有一堆USB隨身碟大小的電腦,能夠做什麼好事?有些與眾不同的好主意,往往來自於非資訊專業的人。

(註)http://www.eprice.com.tw/pad/talk/4658/4943127/1/

談大學先修(AP)課程

今天在教育部的會議中討論了有關於「大學先修」(Advanced Placement, AP)課程和考試的議題,剛好與前幾天講的教育系統相關,所以現在從這個角度來以管窺天,談一談AP考試和課程可以對教育系統所產生的影響。

什麼是AP課程和考試呢?可以參考:
維基百科英文網頁:https://en.wikipedia.org/wiki/Advanced_Placement
維基百科中文網頁:https://zh.wikipedia.org/wiki/大学先修课程

簡單地說,就是提供高中生一些大學程度的課程,讓他們參加學分考試,讓他們在大學中獲得同等學分。例如「電腦科學A」(AP Computer Science A)這門課,世界各國有不少中學和大學提供課程,甚至有還有線上課程,讓感興趣的高中生選修,每年五月有個考試,例如去年( 2014)有39278人參加,有21%獲得5分滿分。而大學在考量學生的入學申請時,也會看看學生修過那些AP課程,學生入學後也可能抵免類似課程。

跟據坐在我旁邊、小孩在美國名校就讀的教授說, 他小孩在台灣成績並非頂尖,如果在台灣念高中,推估落在第三志願。但小孩出國念書,申請到柏克萊、CMU等名校,而AP課程與考試成績相當重要。學生可以藉由跳級和修AP課程,以及AP考試成績,來證明自己的學習興趣濃厚。

對,這還是要考試的。所以我一直說我沒有反對考試,我反對的是過度重視考試,而且還用考試來限縮學生的學習範圍,讓學習興趣濃厚的學生花費大量的時間原地踏步。

當然,額外的課程和付費的考試,對於資源匱乏的學生較不公平,但我們目前的升學制度和思維,早已形成了軍備競賽,有錢的去參加補習班。但這是社會福利和教育資源分配的問題。

我個人樂見國內的教育系統引進AP的概念。但我看到國內的步調相當緩慢,原因之一是教育部花了不少時間找教授規劃如何在國內建立AP的課程和考試。在此我不想批評負責規劃的教授,因為他們也很認真在作事,但我想這類事情也可考慮酌量引進國外的AP考試。

看看維基百科中文網頁,在中國,現在已經有一百餘所高中開設AP課程和考試(目的可能是出國留學)。我想,台灣在這方面可以更積極,找出突破性的作法。有些應該與國際接軌的課程,例如電腦科學,應可考慮與國外具備豐富經驗的單位合作。

這裡談的是多一種選項。

話說這種多一種選項的事情,總有人會覺得非去拿高分取得成就不可,所以大學入學形式是需要多元化的,讓走每一條路線的,都有機會,也讓大家不要都擠到某一個窄門。

這個AP課程和考試有其門檻,我想不會一堆人來考,但如果一堆人硬是要來擠,那反正也多學了一些,並不是壞事。

補充【台大教授給高一兒子的話】

我不喜歡被誤會,所以補充一些說明。

我這篇批判的是整個教育系統,提出系統面的問題,沒有想特別點名說誰不好。事實上,我看到教育系統中很多人非常努力,但對於系統層面的問題無能為力。

例如很多教授認真教導學生,指導研究生做研究,但我想指出的,是學生進到研究所再學習獨立思考已經太晚。事實上,進研究所找個好指導教授,是學習獨立思考的好方法。

另一方面,很多中學老師希望學生更多元學習,但是總卡在家長和升學壓力上,所以徒勞無功,翻轉受阻。

所以這不是單獨易解的問題,而是教育工程要面對的系統面的問題。這篇原本寫在個人臉書的感言,用了很多『我想』,表達的本來就是個人的觀感和意見,也沒有想表達成唯一真理。

考試本身是中性的,但教育系統過度重視考試,把很多人圈進來,而學生和家長也跟著起舞,所以產生了很多考試機器,而我反對的是為了考試死讀書這件事。

至於大學研究所的問題,我之前談了很多,也寫過類學術的研究報告。我遇過很多大學教授都會感嘆,研究生的素質逐年在下降,但卻很少願意去探究原因。就我個人觀察,進到研究所之前就有很多問題,而我們企圖在研究所中去排除學生思考上的障礙,真的已經太晚。

我想近年很多大學科系開始減少必修課,是一種好現象。總之,大學系所還有彈性和機會可以發展特色以及給學生某種自由,但我這篇大多針對中學教育。

目前的中學相當僵化。我小孩先前念的國中,補習率高的難以想像。然而我仔細觀察,中學生接觸的知識範圍極為多元,思考力旺盛的學生,受限於學校和考試的框架的狀況更為嚴重,所以我才希望自己小孩不要花全力準備考試,至於該花多少力氣,那就因人而異,我只是提供一些個人對世界趨勢的看法。

我寫這些東西,只是將個人的思辨呈現出來,文中建議學子和家長多想想如何做自己的主人,不是盲目告訴別人該如何做,或是一昧反對現狀,對現狀不滿,可以自學,也不需要放棄。

我的每篇文章,都是「以管窺天」。我想,即便是諾貝爾獎得主,所擁有的知識,也是如此,若因得獎而覺得自己很偉大,那就不足與論。但在今天『烏雲總蔽日』的時代,藉由寫作窺天,哪怕每次只有一點點機會看到一點點的天,我也很高興。或許有識之士能拼湊起完整的天,小弟我不是名人,也不據高位,更不以此謀財,只是樂於思辨和交流而已。

2015年9月17日 星期四

台大教授給高一兒子的話:不要把全副的心力花在準備考試上面,自學真的很重要

The News Lens把我過去兩天的三篇感言綜合成一篇(註),這樣下標題也好,因為這些話老人家很難聽進去,所以我本來就是講給有思考能力的年輕人聽的。

(註)http://www.thenewslens.com/post/219990/

2015年9月16日 星期三

談教育系統的落後和自學的重要性

三之一

在資訊科技普及的時代,許多知識垂手可得,人腦再厲害,記憶力也強不過電腦。念書念太多但不會活用的人,知識反而容易成為創新的阻礙。唸到研究所才要開始學習活用知識的話,需要排除的障礙很多,這是我今天常見到的「知見障」。

學習者認為得到高分就代表學習效果佳。所以無論教材中有多少參考資料,只要考試不考,學習者便認為看了也是白看,更不用說那些課本沒提到的東西了。只要有考試,學生最在意的就是考試範圍,等同於自我設限。要追求高分,最好就是背考古題。

在電腦普及之前,只要能夠博聞強記,就可算是知識分子。現在呢?如果這些知識是你間接聽說,或是從書上或網路上看來的,那我拿起手機在瞬間可以查到相關的資料,甚至還有照片、影片,何必聽你重複述說這些二手知識?

簡單來說,現在的「知識分子」如果只會「複誦知識」,可能很難呈現其價值,最好能夠活用知識去創造知識或解決問題,成為獨到的專家,否則書讀得越多,沒有融會貫通,越可能成為書獃子。

但,為什麼大多學校裡的課程還是電腦出現之前的那一套?為什麼還是經常透過考試和比賽來強調知識的記憶和樣板式的使用?

我只能說,我們的教育系統還沒跟上時代。

因為大多數居上位的、開發課程、教授課程的人,乃至於學生的家長們,他們自幼的學習成長過程都在電腦普及之前,而他們當前的工作,也還沒有大幅受到電腦的影響。

我與剛開始念高一的小孩聊起以上的事情,我說我覺得十年後他們出社會所面對的,可能會與現在大不同,所以不要把全副的心力花在準備考試上面,雖然不見得有時間去觀察社會的變化,但至少不要把自己搞成書獃子。以前有很多書獃子靠著考試可以安穩過一輩子,以後這個社會還要那麼多書獃子嗎?

我建議他開始尋找自己未來的目標,並且思考規劃走向目標的道路。在知識上,開始學習如何利用課程和課外的自學,去建構他個人的「核心知識」,並且研究如何改善這個學習過程,以及如何活用和驗證這些知識。

雖然這些對高一學生或許有點遙遠和沈重,但我想還是早點開始練習,將來少一些障礙。

三之二

有朋友看了我第一篇後,回應說在制度改變之前,努力考上好大學也很重要,尤其是對一般需要刷卡分期繳註冊費的家庭,為考試高分唸書,絕對是CP值最高的。我想這也是現在許多身為家長者(包括我自己在內)的無奈,所以我想花點時間談論這個嚴肅的議題。

在應付考試和追求學問之間,學生需要取得某種「平衡」,這也是我要高一的孩子多去思考的部分。在理想與現實之間,生命中有太多需要斟酌和取得平衡的事情,這些也是很多從小被家庭呵護長大只要會念書就好的書獃子長大之後可能不大會做的事情之一。如果他思考之後,覺得想要考公職追求小確幸,那便是他的選擇,又有何不可,但他應該學習為自己做決定,遲早作自己的主人。

我看了很多缺乏獨立思考能力和學習動機的台清交成的學生,所以覺得教育機制的問題很大,而過度重視考試是問題之一,因為這些學生花費很多時間準備考試,不只考上大學,還要考研究所,還要考畢業論文。如果這些考試佔據了他們所有的時間,而學會應付考試就是他們一路唸到研究所擅長的事,那麼要不變成書獃子也難。

所以我也希望我小孩「不要把全副的心力花在準備考試上面」,但沒有叫他拒絕或不在乎考試。我的意思大概是說,與其花很多時間念書背考古題去考90~100分,不如看懂書、研究自己有興趣的議題、學習思考和自學,因此而考80~90分,因為我覺得後者所學到的東西可能會讓他終身受益匪淺,而且避免他成為書獃子。

我自己的相信是,成績和學歷不會跟著你一輩子。如果我不講,你不會知道我念高一時當掉三科。出社會之後,如果你有辦法展現你的能力,誰在乎你的學歷?現代社會多變,學歷能影響最多的是第一個工作,但超過四十年的職涯,誰說皆是由學歷所決定?當然學歷與薪水、工作成就有正相關,但那是藉由考試成績將學生分類所造成的統計上的必然性,並不足以代表教育機構和課程帶給學生的價值。

關於學費和學校教育的CP值,那就是各人的算計了。台灣的國立大學當然比私立大學便宜多,但四年算下來,包括生活費在內,根據政治大學教育學系教授周祝瑛對5千名大學生進行調查(http://topic.cheers.com.tw/issue/2013/college/article_5.aspx),發現公立大學學生4年下來平均花費為100萬元,私立大學學生則為130萬元。所以公私立大學費用約略30萬元的差別,對家庭的負擔影響當然有, 但並非以倍數形式呈現。

我對我小孩說,進不了國立大學,多出來的30萬元學費,你以後要還我。想出國唸書可以,拿不到獎學金的話,我借你學費,以後要還我。念書是為你自己念的,不是為我。CP值的考量,也是他的功課。

如果只是為了學歷,即便考上最好的國立大學,卻漫無目標不知道自己在念些什麼,那花100萬元有什麼價值呢?這些年來,我遇過好幾位唸到大四還說自己根本對資工系沒興趣的學生,有的要從事演藝事業,卻放不下這個雞肋的學位,有的應父母要求至少要拿到學位後才能改行念自己有興趣的科系;但我也遇過很有創作熱情的學生,把握機會休學創業去了,或是知道自己不適合這行,提早轉學的學生。在這些例子裡,那些是為家長而念的書?那些是為自己而念的?

如果一位資質不錯、積極進取的學生,在求學期間對於個人感興趣的領域鑽研甚多,但因為不重視考試而去了非頂尖大學或私立大學,除了多付出學費外,那又如何?想學習的話,管道很多,想證明自己的能力,管道也很多,關鍵在於自己有自信、有想法,不要怕被貼上標籤。

我認識一些很有想法和作為的人,並非一路念書考高分上來的,但他們往往在專業上比會念書的人更有突破性的發展。他們有的當年念吊車尾的私立大學,有的大學沒畢業,但後來發現念書和做研究的興趣,反而闖出一片天。

我想,要是認同這一套以考試分類的系統,那我們在起跑點就輸了,輸給這個根深蒂固的科舉文化。鼓勵學生考高分拿第一名,在某種意義上,就是臣服科舉文化,將來還要行禮如儀地臣服於各種學術文化、官場文化、社會習俗,那我們什麼時候才能作自己的主人?

我覺得有些大人們保守的想法在另一方面不僅限縮學生們發展的空間,也坐實了學生們「沒進好大學,這輩子就被看不起」的恐懼,但千算萬算把子女送進好大學,就算盡到家長的責任嗎?這些來自於過去「一試定終身」的陰影與迷思,粗糙且魯莽的貼標籤的作為,其實是教育無法進步的障礙,這也是我上篇文章說教育系統還沒跟上時代的重要原因之一。

三之三

教育和自學真的很重要,所以兩天中要發第三篇文談教育和自學。

之前我提過自學電腦的一些方法和案例,說明12歲的小朋友可以迅速學會寫程式,並且還會為了學電腦這個動機去看國外的線上課程和學英文。如果有人還是不相信自學的話,再看看這位11歲小朋友寫的文章(https://www.facebook.com/notes/蘇紋雯/安全上學去給大家的小學入學須知/512172788862714,感謝李忠憲兄分享,我剛剛才看到),文末有一段提到「學習興趣最重要」,他說:

『老師常常罵人:「你們是來學校幹什麼的!」「在學校就是要學習!」「把玩的時間拿去讀書不就好了!」…但是我並不太認同這種想法,自主學習的成效常常會比在學校學得更好,學校對我來說,最主要的功能是練習社交(森小除外,他們的教案真的很用心!)。總之,千萬不要因為「討厭學校」進而「討厭學習」。』

(接下來列舉利用電腦輔助自主學習國文、數學的作法,請參考原文。)

『雖然我在每個學校每次月考都是前三名,但是我要很公平的說,小孩的成績不好多半不能怪他。學校讓小孩失去學習興趣,沒有興趣導致成績不好,成績不好一定挨罵,結果又更不想學習…「看人家多厲害,你考這麼爛!」「他就是認真讀書才考這麼好,你看看自己的成績!」各位家長請不要對小孩說這種話,這種話是不可能讓小孩奮發向上的,只會更不想讀書而已!』

如果讀者看完上述這篇文章後覺得「根本不可能是11歲小朋友寫的」,那也不用太訝異,因為我們的教育系統常常在壓抑學生的個人才華,限縮自我發展的空間,以致於許多學生被教養成只能在框架中依附主流生存發展的人。

分享文章的是小孩的母親,我想她沒有造假的必要,又不是要拼升等 :) 您說這小孩是難得的天才嗎?我認為很多小孩都有這樣的天賦,只是被教育系統壓抑多年,再被社會貼上標籤,不只天賦被埋沒,還喪失獨立思考的能力。

我昨天文章(https://www.facebook.com/shihhaohung/posts/1006841439358344)中提到由於資訊的普及,現在的小孩的自我學習能力和心智狀況早已不是我們大人們所熟知的,有能力的小孩可以自主學習的空間變大,但落後的學校教育,反倒是常常在扯後腿。

試問,類似以上這樣的樂於學習、有自主學習能力的11歲小孩,爾後將會如何發展?讓我們先來檢視兩個臆測的可能性:

(1) 接受大人「先考上好學校再說」的想法,以搞好學校成績為主,所以考進好高中、讀一流國立大學、進大公司或公家單位,做事有條不紊,行禮如儀、按部就班地升遷。

(2) 依然保持同樣的學習態度,但中學成績平平、讀普通私立大學,卻自學有成、腦袋靈光、眼光銳利、做事積極,在業界受人賞識,得以展現長才。

首先,就這兩種可能性而言,我們很難說哪個比較好。對社會來說,守成和創新的兩種人才都是需要的,但過度強調考試的結果,就是讓大多數學生走上(1)的道路,一窩蜂搶那些穩定的位置。對個人來說,殊不知社會有許多成功者走的是(2)的路線,過著獨特、適性且充實豐富的人生,但有許多走在(1)這條路的人,比上不足、比下有餘,雖飽食終日,但日子未必過得愉快。

其次,我想大多數人都會選擇在(1)與(2)之間取得某種平衡,但當然也有特立獨行的人,這就是我昨天文章中希望高一的孩子多去思考的部分:在應付考試和追求學問之間,在理想與現實之間,生命中有太多需要斟酌和取得平衡的事情。

這些11歲小孩就有能力面對、思索,甚至批判的事,身為師長的大人們,是否有能力和胸懷去理解和溝通?還是依然我行我素地壓抑他們,或不假思索地敷衍他們?我相信,如果不自我設限的話,我們可以從下一代的小孩身上學到很多新東西;如果有心耕耘的話,我們可以與下一代共創更豐碩的生命經驗。教育和學習,可以是活潑有趣的,但好的教育不會廉價,也不能是一成不變的。

2015年9月10日 星期四

師大新生跪地拜師?



這是師大在臉書上分享的新生營活動的照片(註)。我想,分享這張照片的人可能沒有考慮到所謂的社會觀感,以致於招徠許多韃伐的留言。平心而言,跪地拜師只是某些人的價值和選擇,大家可以尊重之,但「推廣」又是另一回事,如同傳教般容易引起反感。

我前幾天才向國外來的教授說明中國古代儒教「天地君親師」的概念,因為他問我為何在訓練課程裡面的學生和工作人員對老師們如此恭敬。但我在說明時也解釋道,表面上的恭敬,並不見得來自於骨子裡的尊敬。尤其是近年學術界自身的亂象,以及跟不上時代卻以傳統師道為名來維護顏面的做法,有點令人難堪。

身為大學教師,我常反省自己何德何能,也常想起我的博班指導教授的風範。如果學生真的有志於學,打從心底敬愛老師,那麼跪拜也行,一句話也行;如果不真,那麼再多的禮貌,也只是徒具形式而已。

(註)https://www.facebook.com/welcome2ntnu/photos/a.735160539885595.1073741828.708601335874849/930036483731332/?type=3&theater

評Apple Special Event

一早起來看9/9 Apple Special Event的影片,看完後看到一堆網友的馬後砲,覺得很有趣。很多人罵Apple了無新意,甚至說Tim Cook悖離Steve Jobs的路線。

手機發展到現在,大幅創新談何容易?Apple又不是研究單位,當然是以賺錢第一。當前行動裝置最重要的就是提高生產力,取代個人電腦,而當前Apple最重要的就是全面佔領行動市場,大幅在技術和銷售上領先對手。

有人想要用平板取代筆電,有沒有可能?這些人可能會來嘗試iPad Pro。重點不在於硬體,在於軟體。我用過十吋的Samsung Note,軟體上很不好用。Apple知道要拉攏Microsoft以及聯合專業軟體(Adobe, AutoCAD)等廠商,才有可能成功,這是正確的路線。

智慧手錶能做什麼?再次,重點在於軟體。要做出好用的手錶軟體,最好是有好用的Development Kit。我用過Google的Android Wear手錶Moto 360,軟體爛到不行。從Special Event中的醫療應用展示中,可以看到智慧手錶的潛力。下一步,會是更多的物聯網裝置,不會只停在手錶上。

TV也是重要的物聯網裝置。遲早,傳統的有線電視業者會被淘汰,就像報紙被電子媒體淘汰一樣。所有的物聯網裝置都必須面對操作介面的問題,而智慧型的語音介面是最好的解決方案之一。跟著新Apple TV一起出現的智慧型遙控器,有語音、有觸控、有加速感測,我想不只可以用在電視上,還可以用在很多地方,我很欣賞這個遙控器。

至於iPhone,如果是每天用iPhone做一大堆事情的人,應該都會欣賞iPhone 6S新的3D Touch和快速處理器、網路所提高的生產力。如果因為看起來跟前一代差不多而覺得沒什麼,那就買舊版的吧 -- Apple趁機「下臺階」,把舊版降價,打擊對手,Android手機的價位恐怕會更慘。

整體來說,我覺得Apple是穩住了江山。從這個Special Event來看,Apple進一步拉開iPhone手機與對手的距離,也開拓了新的平板版圖,提昇了手錶和電視的應用。反觀Apple的對手,能夠拿什麼新東西出來呢?

2015年9月9日 星期三

在惠蓀林場辦異質計算國際研習課程

五天的研習課程開始。扮演多重角色:協助出資、協助規劃、協助募款、協助執行、協助接待講者。原本想說可以輕鬆扮演「聽演講者」的角色,但剛剛一個不小心又接下要在第三天演講一個半小時的工作... 反正也去不了別的地方。



24H「異質計算的極限運動」黑客松圓滿結束,很多厲害的學生來參加,優勝隊伍的成果豐碩。

其實如果業界對於加速特定應用有興趣的話,可以把程式碼丟出來,再拿點獎金出來,我們找個週末把這些高手聚起來辦這類的黑客松,雙贏的局面頗大 -- 有興趣可以與我聯絡。















2015年9月4日 星期五

回黃博奕同學給我的感謝卡


這是剛畢業的碩班生黃博奕給我的感謝卡。

博奕謙稱他進實驗室的時候什麼都不會。我想這不是他個人如此,事實上大部分(我想有十之八九)進到碩士班的學生,不懂什麼是系統研究,更不用說要怎麼在系統領域上找問題、解問題,實作能力也很不足。

我特別為了這樣的學生開一門「系統研究專題」的課,為學生快速補充做系統研究所需的知識和技能,包括:Linux kernel, virtualization, hardware/software co-design, performance analysis, simulation,搭配實驗室的研究計畫,讓學生有辦法在短期間做出若干成果。

有些學生喜歡想新點子,有些學生比較喜歡幫忙學長解決問題,博奕比較像是後者,他幫忙過幾個計畫,但難度都頗高的。他先是研究如何將異質系統架構(HSA)虛擬化,接著探討如何讓HSA架構的GPU支援快速的context switch,但這兩個題目都遇到一些實驗環境上的問題,實作遇到困難,產生不出實驗數據。

我知道博奕遇到這些問題時,嘗試了很多方法,已經比一般學生有毅力了,可說是不屈不撓。但有時候研究不能夠硬碰硬,尤其是碩士班,通常必須在一年半載的時間內做出結果,所以必須要學會變通。

距離口試不到半年,博奕主動提出新題目,研究GPU/FPGA在執行OpenCL版本的蒙地卡羅模擬程式的效能差異。我當時想,這個題目也不容易做,搞不好就得延畢,但是博奕認為這個題目可以學到新東西,所以就毅然決然開始做新題目。

寫過OpenCL程式的朋友應該知道,寫程式雖然有其門檻,但學會寫出對的程式並不難,難的是寫出效能好的程式。要出效能好的OpenCL程式,必須懂得平行計算和GPU的架構,不然就算你拿過ACM程式競賽獎牌也沒用。

最後,博奕不只讓這個用於輻射癌症治療規劃的MCML程式(http://omlc.org/software/mc/),在GPU上的效能大幅改進,還說到做到,還這個程式能轉到FPGA上跑。試問,沒有扎實的學習,怎麼有辦法在短期間做出這些成果?這些都是所謂「不足為外人道」的成就 -- 只有內行人才知道這種沒有絢麗外表的工作,最好是能在解決多個疑難雜症之後,對人輕描淡寫地說「沒什麼」。

所以當博奕提到他「心理素質」變得更好,我想這是他個人努力不懈的結果。所謂「要怎麼收穫,就怎麼栽」,在研究生的生涯,不要只看研究的結果,更要看自己在研究方法、態度、和精神上,是不是有所長進。心理素質的成長,有時候比課業上的進步還要重要。

很多前瞻的系統研發計畫,如果要成功,不只需要有創新想法,也需要有毅力和不畏困難。我相信博奕的做事態度,一定能讓他在工作單位成為貢獻良多的棟梁人才。

2015年9月3日 星期四

回陳伊瑋同學給我的感謝卡



這是剛畢業的碩班生陳伊瑋給我的感謝卡。

伊瑋原本是台大電子所的學生,去年發現自己對於電腦科學比較有興趣的時候,決定轉所到資訊工程所,進到我的實驗室。雖然多繞了一點路,但長遠來看這些時間和精力上的投資應該是值得的,至於那個領域比較有未來性,大家心裡有數。

伊瑋說最感謝的是給他機會加入實驗室,這說起來有點可笑,由於系上空間嚴重不足,我的實驗室只放得下16個學生的座位,所以並不是想收學生就有容量可以收學生的。或許在寸土寸金的台北市,有個小小的座位,也是該好好感謝國家 :)

為了加速伊瑋的學習,我去年暑假介紹他去Appier實習,研究如何針對精準網路廣告服務設計高效率、及時性的資料庫系統,這是個在許多電子商務資料中心都會遇到的實務性問題。我認為去業界實習所要培養的,不只是解決技術問題的能力,更重要的是提昇視野和強化專業上的溝通能力。

伊瑋的自尊心頗強,這點在做研究上有好有壞。好的地方是,他會想要有所表現,想突顯個人能力,想嘗試新的作法,但缺點是有時候會貪功冒進、固執己見。伊瑋由電子所轉到資訊所,或許急於畢業,或許急於證明自己,但是基礎並不是很扎實,所以在研究之路上有些起起伏伏。

伊瑋的碩士論文的研究題目頗繁複的,他研究如何讓用Java和 Hadoop MapReduce寫作的應用,輕鬆方便地透過Aparapi的改寫,再透過自力開發的排程框架,在多人共用的(multi-tenant)分散式的執行環境中,利用Docker Container的隔離機制,讓MapReduce的應用在HSA架構的CPU/GPU平台上動態調整工作的分配,達到最佳的效能。

這樣複雜的研究題目,對於從電子所轉來的伊瑋,的確是很大的挑戰。我原本的期望是,能夠在不到一年的時間裡,打通關節,把框架的雛形完成,做出一些有用的實際應用展示,提出效能檢討報告,就很不錯了。但是伊瑋似乎覺得這樣的成就感不足,想做出一些比較具備理論性研究成果,所以在中途轉去研究「最佳化的排程演算法」。

搞理論是很有趣的,但用理論解析問題是有其極限的。在面對實務問題時,往往必須將問題簡化到某個程度之後才有辦法用得上理論解,但如果簡化得太多,得到的理論解答很可能會缺乏實用性。我在與伊瑋工作時,選擇擔任輔導的角色,讓他自由發揮。有些時候我知道他選擇的路線很可能會出問題,但我只是點到為止,事後再來回顧。

有時候,聰明、自尊心高的學生,更需要知道自己的極限,學會接納吸收建議,學習承受失敗,從失敗中學習。要兼具理論和實務,也需要有耐心的學習。

從伊瑋文中的自我省思,我感謝他在乎我的想法,但表現得好與壞,沒有絕對的標準,不像參加考試,最重要的是對得起自己。我想他的得失心還是太過沈重,希望他在畢業後重新再出發,去蕪存菁,將來一定會越做越好的。

2015年9月2日 星期三

回林佳緯同學給我的感謝卡


這是剛畢業的碩士生林佳緯給我的感謝卡。佳緯的學習過程有點讓我傷腦筋,但最後也算是修成正果。

佳緯比較喜歡實作,在念碩士班的過程中不斷在做東西,他在碩士班第二年做了很多事,包括:把OpenStack移植到ARM-based Chromebook上,利用QEMU讓虛擬機在ARM和x86混雜的異質環境中相互轉移,分析虛擬機上的應用的效能需求來決定如何在上述的異質環境中分配與轉移虛擬機,利用多台Banana Pi架設上述叢集系統展現成果。

然而,到了寫論文的時候,他不大懂得闡述自己做過的「豐功偉業」,口試的投影片亂七八糟,給人家「知其然、不知其所以然」的感覺,當時我很錯愕,告訴他這樣口試會有很大的問題,但是他執意要試試看,果然口試就出了問題。

當時我內心掙扎了許久,非常不想讓佳緯承受「口試失敗」的打擊,但我終於決定化身成為魔鬼,堅持不護航,就讓他口試失敗,我如果早點看到蘇文鈺​教授的這篇文章(
https://www.facebook.com/arwen.su.5/posts/568149486671993),做這件事的時候應該不會有這麼多的掙扎。

事實證明,口試失敗也不是世界末日,誰沒有失敗過呢?誰說失敗過就是魯蛇呢?只有放棄奮鬥的人,才是真正的魯蛇。

佳緯灰心了一陣子,後來我仔細檢視他的問題,知道他「就是少了一根筋」,不懂得包裝成果和說理,雖然成果豐碩,就是說不出一個好故事,因此而被誤會沒有做事或是沒有能力,是件很冤枉的事,但這是出社會、進業界絕對會面對的事。

你在公司辛苦做出的成果,功勞都被同事搶走了,老闆看不起你,拿不到獎金,加不了薪,此類的問題的打擊,絕對比在學校嚴重許多。

我幫佳緯找到去VM5實習的機會,希望讓他利用時間到公司閱歷一番。那時候VM5成立不久,公司規模還小,急需人才來幫忙做研發,而且我們找到一些共同興趣。在了解問題之後,他研究如何利用許多ARM系統晶片上內建的硬體編碼器來壓縮虛擬機上Android遊戲送到hypervisor上的影像串流,並且探討其效能的因素。

結果佳緯做VM5的研究題目做出興趣了,欲罷不能,也就不急著寫論文,一直到我今年暑假催他寫,他才搞定論文,做的題目是Cost-Effective Cloud Gaming with ARM-based Servers。

佳緯這一年成長許多,實作能力更強了,視野變寬了,雖然寫作論文能然不能算是他的強項,但至少在呈現成果時能夠侃侃而談,每個人天生能力的呈現方式不同,教育不能夠過於勉強。

實際上,佳緯是業界積極爭取的人才,不用自己出去投履歷,也不用參加考試,就有一堆公司上門來邀約。我不用擔心佳緯的未來,相信他在經歷過我這個魔鬼的一番考驗之後,能夠應付更嚴峻的挑戰,戰勝自己。

2015年9月1日 星期二

回葉婉婷同學給我的感謝卡


這是剛畢業的葉婉婷同學給我的感謝卡,模糊的地方是被回家時下雨弄溼了,不是在看的時候感激涕零,但看了還是頗有感觸的 -- 上面畫的鱷魚也很可愛 :)

我不挑剔學生的背景,我只問學生願不願意致力於學習,怕不怕辛苦,如果不怕苦敢來就來吧。我發現有些基礎薄弱的學生,只要認真做,研究的成就往往比自恃聰明卻愛偷斤減兩的學生來得高。

婉婷兩年前進來實驗室的時候基礎較弱,學習進度慢,自信心不足,但是一直很努力在學習。面對願意努力學習的學生,我們用心栽培她,補強她不足之處,這是教育工作者該做以及樂意做的事。

她懼怕上台做簡報,我們特別就讓她每週在計畫會議中面對資策會的專家做進度報告,半年後她已能獨當一面做簡報。她對於研究能力缺乏信心,我們給她研究所需的資源與支援團隊,幫助她在學期末做出令資策會專家刮目相看,令口試委員驚豔的研究成果。

婉婷的卡片上說到「領先業界的想法」,是我極力希望學生們能有高度的自我期許,而我們也希望藉著在學校從事研究的身體力行,來證明領先業界、與國際競爭不是夢想,來提升學生的自信心和視野。

一個懂得學習、研究、活用所學的人,到各個地方都能發現創新的機會。但學習、研究不能漫無目的,所以傳統那種「飽學詩書」 的方法,到了今天,簡直是學不完,也很難活用。所謂的Project-based Learning,就是在面對一個有目標的計畫,去瞭解問題、學習解題技能、研究解題方法、思索創新之道。

婉婷從一位對系統缺乏認識的學生,兩年後能夠搞清楚如何建購一套利用虛擬機器和自動測試機制抽取出數萬個Android應用程式的行為模式,研究出綜合 Support Vector Machine (SVM)和Deep Neural Network (DNN)的機器學習方式來提高偵測惡意行為的準確度,這就是Project-based Learning。

我們教學生做系統研究,主要是透過自主學習、相互學習迅速爬到巨人的肩膀上,過程中往往會遇到許多艱難,但也多多少少經歷了巨人的成長史,所以後來站在巨人的肩膀上看東西時,才真正知道巨人是怎麼看的。希望這樣所培育出的高度和視野,能夠在日後幫助學生發現和把握創新的機會。

在業界逐漸邁向創新之路,學界逐漸重實務工作之際,我們希望在研究所的訓練中告訴學生,不要好大喜功,也不要小看自己。學術研究與實務創新,是可以並行不悖、相輔相成的,但需要有適合時代與個人的學習態度和研究方法,要懂得活用所學,這是高等教育的目的。

我能夠教到婉婷這樣的學生,真是幸運,我也從其中學到了許多。我祝福她在離開學校後能夠持續努力學習,活得更精采。