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


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

2019年5月14日 星期二

什麼是架構師(Architect)以及要如何養成?

之前被問到這個問題的時候很頭痛,因為一講就要講很久,而且對方如果底子不夠的話,恐怕會像鴨子聽雷。再說我不當工程師很久了,雖然見過各式各樣的架構師,但是總不好意思一直拿十多年前的職場經驗來吹噓,畢竟資訊科技產業進步很快,有些事情已然不同。
欣見這篇文章[1]談「從程序員到架構師」,也可以提供給上述提問者參考,省下我講解的時間。雖然這裡主要講的是建構優化雲端服務的軟體架構師,但是大同小異,尤其在非技術的部分,例如溝通、架構、抽象分析、決策等能力,則多半也適用於其他類別的架構師。有興趣的人理解架構師,或是想朝架構師發展的人可以大致瀏覽一下,以下是我的補充說明。

技能樹

有些人看到上述文章,可能會先被兩張「技能樹」圖片所震撼,一張是卓越的程序員(程式師)的技能樹,一張是架構師的技能樹,如作者所言,從程序員到架構師,是一個不斷經驗累積的過程,所以架構師不可能光是懂一堆高深的理論卻不懂得寫程式。然而各位如果比較這兩張技能樹,會發現有大不同,並不是單純靠累積經驗值就能升級的。

化學反應

因為經驗積累到後來,重點不在於「量的增加」而在於「質的躍昇」,所以不是說你學過越多的語言和演算法、用過很多的工具、做過很多的專案、寫程式碼的速度超快,就能蛻變升級成為架構師。過程中必須產生類似化學反應,才能將經驗和能力整合後提升到另一個層次。但這個類似化學反應的蛻變的關鍵和契機因人因領域而異,很難說明清楚,分享文中也沒有多講。我最後會談一下這件事,並且分享一下我的個人經驗給朋友們參考。

重質不重量

為什麼說學了很多東西、專案做得再多,未必能成為好的架構師呢?好比你拿了五個碩士學位,是否可折換一個博士呢? 當然不行,因為真正博士等級的訓練極為注重「質的躍昇」,看看學生是否能在融會貫通知識經驗之後做出優秀的原創作品。同理,發表十篇二流的論文是否等同於一篇一流論文?做了十個「快老二」的研發專案,是否相當於做出一個高技術門檻的原創作品?當然不是。

當事人本身要具備足夠的基礎,其次則是要有適合的環境以及良師益友,否則恐怕學再多也難以濟事。至於「質」要如何來認定呢?通常得透過實際戰果以及其他資深架構師的肯定來孚眾望,否則即使勉強掛上架構師的頭銜也是無用。

視野和典範

重質不重量的概念並不難懂,但實際上與當事人的視野有關。所謂「夏蟲不可語冰」,如果根本沒看過架構師,缺乏典範,那麼要如何評價一位架構師或是學習成為一位架構師呢?有些工程師長年賣力鑽研,成為某項技術項目的達人,但是技術達人並不見得具備架構師的能力。台灣的資訊電子業有不少的技術達人,但是在產業需要轉型提升的時候,需要構思前瞻和總體策略的時候,才會發現架構師的重要性。

架構師的光譜

架構師有許多種,有的偏軟體,有的偏硬體,但是大多數都要軟硬兼備的素養。分享文所談的雲端軟體架構師,比較偏向軟體技術,但是也要懂得系統架構和效能分析優化;台灣比較常見的是嵌入式系統的研發工作,過去的發展受限,往往停留在為硬體產品寫韌體(firmware)的層次,但是到了物聯網時代之後,就開始需要懂軟體的系統架構師來帶領方向。到了數據掛帥的今天,還要再加上AI和資訊安全的素養,又是另外的維度。

基本素養和專業能力

剛進入資訊科技領域的學生,由於從寫程式入門,往往過度熱衷於寫程式(或是完全排拒寫程式)以及沈迷於演算法。其實這些就像英文和數學一樣,是資訊科技人的基本素養,某些公司面試新進員工的時候,考驗程式寫作和演算法的功力,也是理所當然的事情。但是切莫以為基本素養就是專業能力,應聘資深工程師或架構師的時候,除了確認有基本素養之外,更加著重於專業能力。什麼是專業能力呢?請參考一下技能樹。基本上,資訊工程系課程中有不少有助於培養架構師的課程,不要傻傻的覺得會寫程式就行。有些東西在大學和研究所時期不好好打基礎,到了業界就難了,尤其是與系統和硬體相關的技術,需要有環境與良師益友,才會事半功倍。

環境與良師益友

回顧我自己在求學和擔任工程師的過程,感到頗為幸運地找到不錯的環境和良師益友。我高中參加電研社開始奠定寫程式的基礎,大學則是從電子電路、嵌入式系統到大型電腦都碰過,尤其是後來出國念博士班時專注研究大型平行電腦效能優化技術的時候,有機會鑽研最先進的軟硬體,是我個人蛻變的關鍵和契機;之後到矽谷Sun工作的那幾年,有幸在效能工程部門,與處理機設計部門、高階伺服器系統架構部門、網路儲存產品部門、 作業系統核心開發部門、資訊安全研究部門、Web軟體發展部門的資深架構師共同合作,不僅實際驗證我的技能,也透過他們對我的讚許讓我拿到成為架構師一員的門票。

架構師的發展機會

在我選擇回國家教書的時候,有幾位具備架構師資歷的同事也離開公司回到他們的祖國貢獻於科技業。好幾位回去中國發展的同事,獲得政府的挹注,後來發展得很不錯。相形之下,台灣資訊產業轉型提升的步調頗為緩慢,無論是產業或學術,鮮少人了解架構師的重要性,願意長期積累技術經驗成為架構師的人少得可憐,乃至於大多數人連架構師是什麼都不大清楚。但有趣的是,這幾年業界想轉型,三不五時就會有朋友要我推薦架構師 -- 各位可以找一下我之前的貼文就知道。

我分享以上這些個人經驗和看法,不是想往自己臉上貼金,只是想告訴學生們什麼是架構師以及如何把自己培養成架構師的歷程。當然,我不是什麼厲害的架構師,只是當年有幸從多位厲害的架構師身上學到一些皮毛而已,不過我認為我這點皮毛,在這個架構師罕見的學術環境,還是有點價值,也歡迎理解成為架構師的難度後仍想成為架構師的學子們一起來學習。

[1] https://mp.weixin.qq.com/s/CqRruULCJQCa5cbxVk66uA

2019年3月22日 星期五

跟新生的對談FAQ

這幾天跟一群剛錄取資工研究所碩士班學生的「小朋友們」解釋我的研究方向,什麼是系統架構師、處理機架構設計的時候,想說怎麼會解釋半天,對方還懵懵懂懂呢?

我把對話的重點整理成以下的FAQ,希望有助於新生釐清我的研究方向、周遭的現實、自我的學習目標。

Q. 所以架構師是做硬體的嗎?
A. 要懂系統或處理機架構,但是不見得要做硬體,常常做的是系統整體的效能優化,要去修改軟體。即使是設計處理機架構,也不是做到很細節的電路設計。

就像造101大樓(晶片)時,建築師(架構師)綜合案主的需求畫藍圖,搭配土木工程師(晶片設計師)去計算規劃工程細節。

Q. 要懂計算機結構嗎?
A. 要懂,否則怎麼當架構師?而且,你們老師可能沒有仔細教的課本(白算盤)的第七章多核心平行計算和附錄A的GPU會是重點。

但是整本書都背下來也沒有用,實際經驗很重要。我在SUN工作時參與多核心處理機架構設計和高階系統軟硬體效能優化工程,是台灣少數有實際經驗的教授。

Q. 要懂電路設計嗎?
A. 最好要懂,會加分,不懂也不是大問題。

我大學唸電機系的,所以有加到分。這裡談的主要是邏輯設計和功耗的基本觀念,通常不會太深入,但是當年修過電路學、電子學、半導體、控制、訊號分析等課程,在某些案子中會派上用場。

Q. 要懂作業系統嗎?
A. 最好要懂,會加分,不懂也不是大問題。

我在讀博士班的時候所做的研究題目不需要碰作業系統,但是基於個人的興趣,我很早就自學作業系統。在SUN工作的時候,為了優化大型系統的效能,有不少與作業系統相關的工作。要知道一個程式在存取檔案、傳輸網路資料的時候都要使用作業系統,完全不懂作業系統,怎麼做好大數據分析和物聯網?

Q. 要懂編譯器嗎?
A. 最好要懂,會加分,不懂也不是大問題。

我們做效能優化的第一關,就是善用編譯器的優化功能。現代編譯器技術的重點在於針對處理機架構優化的後端(backend),以及即時監控應用的特性做動態優化(just-in-time dynamic optimization ),都是我們關切的議題。我們知道現代編譯器還有很多做不好的地方,尤其針對平行程式和多核心系統,還有很多研究議題。

是的,我修過編譯器,也研究過編譯器,在某些案子中會派上用場。

Q. 要懂平行程式設計嗎?
A. 最好要懂,會加分,不懂也不是大問題。

我在二十多年前做的博士論文研究的是在大型平行電腦上實際優化高效能平行程式的時候所遇到的系統性問題,其間所訓練出來的能力,對於畢業後去SUN公司所從事大型多處理機系統優化的工作,有極大的幫助。

現在幾乎隨處可見多處理機系統,你的手機就有好幾個CPU核心,再加上更多的GPU核心,可是絕大多數的應用程式都沒有優化得很好,因為懂得寫好平行程式的人太少了。要做真的大數據分析,也要懂得平行程式的效能關鍵,但是真懂的人也少得很。

Q. 要懂機器學習嗎?
A. 最好要懂,會加分,不懂也不是大問題。

我在唸書的時候修過三門AI的課,說真的對我的工作沒有什麼幫助,直到最近AI爆紅。

這次AI爆紅的關鍵在於深度學習,而深度學習之所以能成氣候,關鍵在於大數據、GPU和平行計算架構。我們一方面研究如何從系統設計和優化的觀點為深度學習提供更強大的算力,一方面研究如何用強大的深度學習來開創新局。我不是機器學習專家,我只是研究如何用我的專業讓機器學習變強。

Q. 要懂物聯網嗎?
A. 最好要懂,會加分,不懂也不是大問題。

你知道什麼是物聯網嗎?完整的物聯網系統包含我們身邊(自己的和別人的)各種能連網行動裝置、電信業者或商家的基地台、基地台上能夠做的工作,一路連到世界各地公用或私有的資料中心做大數據分析。

物流網的重點在於蒐集資訊、分析資訊、即時做出回應,在在都與系統有關。這陣子大廠紛紛推出智慧物聯網開發版,像是Edge TPU、Jetson Nano,把深度學習加速器放進低功率的處理機裡面,讓大家能做出更智慧的物聯網應用,但是你知道物聯網應用有哪些與效能相關的因素嗎?有能力分析嗎?

抱歉,以上兩個問題是很多業界工程師都不會的,我不是刻意刁難你,只是說明一件事:懂越多,機會越多。

對了,我大學時修過不少通訊網路相關的課,包括統計通訊、數位調變、衛星通訊,還跟李琳山教授做過包括語音合成的專題,雖然沒有直接派上用場,但是這些基礎讓我對於Internet和5G技術不會太陌生。

Q. 要懂資安嗎?
A. 最好要懂,會加分,不懂也不是大問題。

我剛進大學時不懂事,在台大計算機中心做了一些駭客的事,不過只是為自己增加了電腦的使用時間,沒有幹下其他壞事。我大三修課時期末專題報告,詳細探討了老師沒教、剛出來的RSA公鑰密碼技術(public-key cryptography )的論文,不過對於考試和拿學位沒多大用處。

但事隔十多年,我在SUN公司工作時,被找去幫助解決密碼加速器的效能問題,當年期末報告的基礎讓我在面對密碼專家時能夠氣閒神定,從容在短時間內解決軟硬體搭配不良效能問題,意外成為公司裡密碼加速器的專家。此後幾年,公司所開發的外掛密碼加速器、處理機內建的密碼加速器、作業系統和伺服器中對的加密技術,往往都來找我幫忙。

我不認為自己是傳統所謂的資安專家,但是我對於解決實際系統上的資安問題感興趣,尤其是越來越重要的資料隱私保護的問題。各家醫院、健保署裡面有很多資料,但是礙於法規很難拿出來放在一起做大數據分析,不解決這個問題的話,進步會很緩慢。

但是,不懂資安也沒關係,一則您所理解的資安可能不是我們在意的資安,一則我們還有很多其他不需要資安的研究議題。

.... (還有很多其他的問題就暫時不寫了,例如要不要懂C語言...)

Q. 如果以上那些「不懂也不是大問題」的都不懂,可以做架構師嗎?
A. 可以啊,如果人家很缺人,而且又沒有其他人跟你搶這個工作的話。

要認真說的話,這是跨領域的時代,融會貫通數個專業是一件好事,更何況是架構師這樣的工作。反過來說,你沒有身兼幾個專長,除非你在某個領域能做到最強,否則不要說能不能成大器,我會為你的前途感到憂心。將來面臨中年失業危機的時候不要怪我沒警告你。

Q. 那麼只懂xx和yy行嗎?
A. 我不知道,看你的事業運了。

排列組合太多了,未來很難預測,我自己的作法是多利用身邊的機會和資源、多跟大師學。

當年選擇研究平行電腦,因為有大師的指導,加上學校建置了全新的平行電腦,有此極為難得的機會。你看看和我年紀相仿的教授和工程師,有幾位在唸書的時候,能在大師的親自指導下研究超級電腦上平行程式的效能問題?(不用浪費時間找了,你在台灣找不到幾個的。)

Q. 那麼老師你懂這麼多東西嗎?怎麼學的?
A. 我這37年來,從高中開始,只要有機會就學,最好是跟大師學,學了東西就找機會用,最好是用於解決重要的實務問題,不斷學習和運用所學,自然就會學到不少東西。

雖然我不會什麼領域都專精,但是我往往可以跟領域專家溝通合作。「溝通合作」是架構師最重要的能力之一。

Q. 為什麼要學這麼多東西呢?
A. 傻孩子,為了做別人不會做的事,賺別人賺不了的錢啊!厲害的架構師,薪水可能比某些做一輩子的前端工程師高十倍還不止。

不過對我來說,最重要的是興趣。我喜歡學習和研究,所以我願意放棄業界高薪來做學校當教授,但這不表示我不關心業界做的事情,更不代表我要把自己關在象牙塔裡只發表學術論文就好。

我之所以學很多的東西,是希望用來幫助這個世界。沒有實際能力的話,只靠逢迎拍馬上去的那些政客和官員,以及那些靠運氣和苦力致富的老闆,對國家社會的發展是阻力還是助力呢?當你們這個世代在罵那些霸佔權位資源老人的時候,你們有足夠的能力當家做主、做得更好嗎?

當然你如果要說不擇手段趕快拿學位去卡位才是時下的王道,我也不想反駁你,因為這或許是在這個生病的社會中保全自己和家人的生存法則,而且我也曾是受害者。但我只能說,台大有個校訓:「敦品、勵學、愛國、愛人」,我還是要讓你知道有這件事情,你也許做得到。

Q. 要怎麼入門學習呢?
A. 如果努力上進的話,我們會好好帶你入門,給你環境和支持,不過我提供的是指導,修行得靠你自己去修課、找資料、實作、和同學討論、解決問題。我們也會有業界的協助,資源多得很。

Q. 我有興趣,但我不知道做不做得來?
A. 同學,你考上台大研究所,很不容易,怎麼還這麼沒有自信?要知道「缺乏自信」是求職的大忌,而且我都已經要給你機會和幫助你了,難道要我保證你多久之內畢業嗎?

謝謝你來談,我們再聯絡,有自信再說。

2019年3月17日 星期日

大學生的專業技能學習

幾天前跟一位我的大學部專題生聊到他的近況,有些聊到的東西可以拿出來鼓勵同學們致力於學專業技能,而非盲目地讀書、考試、拿學位之後才發現世界根本不是自己想的那樣。

他並非資訊、電機本科生,大學成績也不怎麼樣,但是推甄上某頂尖大學的資工研究所,原因之一應該是他在大學幾年到過多家公司實習所累積的程式設計的實務經驗與能力;原因之二大概與他常於開源社群貢獻以及在個人部落格上分享心得有關。

他前一陣子到某家科技公司從事近乎全職的實習工作,薪資六字頭,只比全職工程師略少些。公司高層主管欣賞他,願意栽培他。所以他覺得好像不必去唸研究所,在公司也可以學到很多。

其實他走的是技職體系的路線,只是現在台灣絕大多數的學生都去唸大學,甚至覺得要拿到碩士學位才有好工作,所以反倒忽略了「工藝技術」的專業能力。多年前有很多一流學生讀台北工專,對業界有頗大的貢獻,但後來教育部把技職學校「升級」成大學,限縮了這條路。

剛好我上週才談過美國的狀況,許多資訊科技公司和情治單位都到高中和大學去招募資質極佳的人才,及早進到公司後自己來培育。據說Google台灣分公司也招募了不少大學生,做類似的事情。不過,這些人為了要有更好的發展,都會不斷學新東西。

其實在現代的軟體應用開發環境中,程式設計的工作有很大的部份是熟能生巧的「工藝技術」。站在巨人的肩膀上,利用最新的程式語言、程式庫、程式工具,發展出有產業價值的軟體,這種機會太多了。

反觀大學和研究所教的東西,很多是告訴學生「巨人」的運作原理、內部構造,以及如何讓巨人更大更強,所以有演算法、作業系統、計算結構等課程,原意是厚植學生的基礎,讓他們不只知其然,還要能知其所以然。

頂尖研究型大學資訊系的目標之一,是培育擁有紮實的學術基礎和足夠的實習經驗的學生,讓他們有能力做尖端的技術研發,幫業界改良或發展新型的巨人、提高業界的研發水準。具備這種專業能力的人,身價非常高。

可是一大堆教授為了升等,學生為了考試和學位,成天在這些知識中打轉了好幾年卻還是爬不到巨人的肩膀上,因為誤以為通過考試、拿到學位就行,所以反而困在巨人的肚子裡面!

我們都知道,醫學系的課程,除了講授知識之外,經常要實際操作、臨床考試,還要幾年的實習之後才能執業,並不是會讀書就好。厲害的醫生,時常還要吸收新知,才能站在巨人的肩膀上為人治病,道理也是相同。

所以,我給一些有才能也有心致力於培養專業能力的學生們的建議是:

1. 資訊系的學生,最好是學術和實務能力兼備,思考如何深化專業能力和嘗試做一些非資訊本科生不會做的高價值工作。

2. 非資訊本科的學生,如果對程式設計很有天份和興趣,可以透過各種自學、社群、實習的管道,學得某些業界需要的高價值軟體實務開發專長,也未嘗不可。

3. 無論本科與否,如果我們想說「學位不重要」這句話,就必須有辦法呈現出技能的水準出來,否則別人如何賞識和重用你呢?

4. 即便已經有了不錯的開始,還是要設法持續學習,因為新的東西不斷出現,舊的東西可能越來越不值錢。時常問自己,要學習研究什麼東西,讓自己得以呈現更專業、更出色的技能呢?

2018年4月1日 星期日

眾說紛紜的AI

昨天(3/31)參加一整天的AI論壇,遇到很多內行人和外行人。主辦單位的目的在於橋接業界和學術界,連哄帶騙把許多AI專家,以及業界與政府的重量人士找來,可謂用心良苦,不過在裡頭坐上一整天也真是辛苦,好像一個人去參加一場長達一天的婚宴,必須一邊跟同桌人士哈拉,一邊「欣賞」舞台上的表演...

我因為前晚熬夜寫報告,昨天在會場頭痛了一整天,一直抽空閉目養神,不是偷懶,是頭痛到不行。不過還是得完成主辦單位交付的任務:花費二個多小時跟15位希望引進(或是正在從事)AI的業界/政府人士談話,瞭解他們的問題,個別給出一些建議,最後還要上台給三分鐘的心得報告。

就當作是做功德吧?因為AI紅透半邊天,迫不及待想引進AI的人太多,平常都有一些個案來找我談,但多半是想找一些有即戰力的技術或計畫,在最短時間可以幫到忙,而真的願意花大手筆做研發的倒是少之又少,大部份在談完之後,摸摸鼻子走了。昨天在最短時間內一次談了15位,也很不錯,只希望對方不要覺得這傢伙沒什麼真功夫,幫不了忙。

昨天最後上台報告時,我說我只是配角中的配角,各位如果開始建置AI系統,就會發現系統端的疑難雜症多得不得了,解決這些系統性問題的辛苦可能遠多於機器學習的部份,這時候才可能會需要我這種配角上場救援。

我沒有大聲說的是,反之,如果對AI沒有起碼的瞭解,分不清楚專家系統、機器學習、類神經網路的差異,可能不要貿然找那些做AI研究的大師,除非這些大師很喜歡做功德,像孔祥重院士偕同陳昇瑋博士那樣願意帶著一群學生「下海」,進到製造業的場域去動手做。不過,孔陳兩位大師現在也不可能親自去幫您的忙,想多認識AI的業界人士,可以繳學費去參加他們辦的人工智慧學校。

我希望人工智慧學校能補足業界的一些人才缺口。好比當年個人電腦出現後,很多中小企業開始導入試算表、文書處理,或是寫一些簡單的程式來做自動控制,需要很多人力來做,而我們當年念高中、大學時靠著自學就可以去做這些事,不一定要念資訊系,這也是目前產業AI化的重要途徑。

但是在AI產業化的方面,需要較長遠的規劃和耕耘。如果要在新興的AI產業上有足夠的競爭力,應該不是膚淺的作為就能做到,因此我認為AI產業化與產業AI化兩大方向雖然相關,但應該劃分和解釋清楚,不宜混雜在一起談,否則容易失焦,浪費彼此時間。

不過我還是跟AI的專家朋友說,昨天這場就算是您在做功德,有些參與的人士很少有機會跟AI大師們對談,有些以為AI很好做,各位大師親自出馬釐清真相,也是莫大功德。

例如我這邊在頭痛的情況下勉力為之,應該算是盡到公民的責任,與業界人士大致交流如下:

  1. 遇到一群在政府做水利規劃的研究員與顧問公司,一起思考如何運用AI技術,或許他們更了解AI後,挑戰一些可行的目標,不要太好高鶩遠,可以少浪費一些民脂民膏;
  2. 遇到一群醫院主管,和我先前遇過的醫界人士一樣,已經開始導入AI,面對的標籤化資料蒐集困難的關卡,但其實國內醫療界素質頗高,有機會結合AI做出新產業,但是要拿得出足夠資源;
  3. 遇到立法委員,跟她談我常講的教育界的問題,也希望她幫忙看緊人民的荷包,不讓政府以導入AI為名胡亂撒錢買設備;
  4. 遇到不恥下問技術問題的電子業大廠董事長,有點意外,還是想辦法用自然語言釋疑;
  5. 遇到急於引進AI的製造業小廠,建議要找上下游業者合縱連橫打群架,不一定要自己做;
  6. 遇到想引進AI幫忙自動產出精華影片的媒體,建議這種國外強到不行的應用,不要貿然自己研發,因為這類軟體遲早會普及,除非你有國外沒有的利基,否則不容易做出比人家好的東西。

總之,千萬不要一窩蜂,無論各位要走產業AI化還是AI產業化的道路,最好先搞清楚狀況,走適合自己的道路。

學生也是,資訊系學生可以去幫產業AI化,但是必須願意跨足產業,例如農業、醫療、製造業,不是宅在房間裡就行的,其他科系的學生也可以修一些AI的課,嘗試走這條路;資訊系學生想走AI產業化的道路,要知道AI系統錯綜複雜,要在此產業競爭,往往不是只懂機器學習的一招半式就行的。

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/

2018年3月28日 星期三

以優化Tensorflow作為系統研究的教案

前天在課上用TensorFlow Performance Guide [1]為案例,解說「人工智慧」與「系統研究」的關係,嘗試啟發學生的視野。

很多人會用TensorFlow開發深度學習應用,但我不知道有多少人真正在意TensorFlow應用的優化。如果只是分析「小的大數據」,或是不在乎多等幾天,那麼就不用看接下來的長篇大論了。

“This guide contains a collection of best practices for optimizing TensorFlow code.”

首先要知道什麼是best practices? 根據網路字典,best practices是"commercial or professional procedures that are accepted or prescribed as being correct or most effective”,換句話說,在各種商業或專業考量下,最為眾人所接受的,能夠最有效解決實際問題的招數。

可是,要看懂這裡所提到的best practices,恐怕沒那麼簡單,需要懂得系統軟體與計算機結構的實務。不,資工系的同學們,請不要高興得太早,我講的是「實務」,不是應付考試的那種功夫。

業界在談論best practices的時候,通常是搔到癢處、點到為止,提出大原則,但不解說幕後的學理依據和細節,也不提供完整的實驗數據。其目的在告訴大眾(潛在客戶): 我們有能力做這些別人不大會做的工作,看得懂最好,知道我們很厲害;看不懂也沒關係,反正找我們就對了,只要付了錢我們就幫你 :)

好吧,我們就來看看,為了協助TensorFlow使用者優化應用, Google官網建議了哪些best practices呢?

洋洋灑灑寫了很多,分了三大類:
  1. General best practices covers topics that are common across a variety of model types and hardware. 泛用招數
  2. Optimizing for GPU details tips specifically relevant to GPUs. GPU專屬招數
  3. Optimizing for CPU details CPU specific information.CPU限定招數
第一類提出很多應用和硬體都可以用到的招數,其中又分為五小類:
  • Input pipeline optimizations解決資料取得與前處理管線的瓶頸
  • Data formats降低資料格式轉換的時間
  • Common fused Ops使用融合運算節省運算成本
  • RNN PerformanceRNN專屬的效能因素
  • Building and installing from source編譯與安裝的效能選項
光是講第一小類,就花了我大半小時。各位要知道,一個完整的深度學習系統不是只有類神經網路,還包括了資料的取得和前處理。如果是分散式系統,資料取得和前處理會更加複雜,也可能造成效能的瓶頸,因此這段對實際運作很重要,但是往往被忽略。

剛好前一陣子幫業界朋友分析他們手頭上TensorFlow系統效能問題,瓶頸就出在前端的Input pipeline。各位不要笑,如果您的手頭上有一台裝有16張NVIDIA V100 GPU卡的HGX-1高效能伺服器,前處理的難度會高出許多... 如何將影像檔案有效率地從高速網路或高速磁碟陣列所構成的儲存系統中預先提出來放置在記憶體中?如何有效率地用兩顆CPU晶片上的40個處理機核心來做前處理? 如何有效率地用將CPU處理後的Tensors送到16張GPU卡的記憶體上?

一般缺乏軟硬兼備素養的工程師,往往毫無頭緒。我在當時給了一些best practices的建議,請工程師做一個實驗,把資料送進一個超簡單、超快的model,看看速度會不會變快?如果不變快的話,就表示資料取得和前處理可能是瓶頸。一周之後,工程師回報說只變快一點點,我請他做進一步的測試和估算,跟這個Performance Guide講的幾乎相同:

Determining if the input pipeline is the bottleneck can be complicated. One of the most straightforward methods is to reduce the model to a single operation (trivial model) after the input pipeline and measure the examples per second. If the difference in examples per second for the full model and the trivial model is minimal then the input pipeline is likely a bottleneck. 
  • Check if a GPU is underutilized by running nvidia-smi -l 2. If GPU utilization is not approaching 80-100%, then the input pipeline may be the bottleneck.使用效能監測工具確定GPU忙還是不忙?
  • Generate a timeline and look for large blocks of white space (waiting). An example of generating a timeline exists as part of the XLA JIT tutorial.使用工具畫出事件在時間軸上的分佈圖,是否有空窗期?
  • Check CPU usage. It is possible to have an optimized input pipeline and lack the CPU cycles to process the pipeline.確定CPU忙還是不忙?
  • Estimate the throughput needed and verify the disk used is capable of that level of throughput. Some cloud solutions have network attached disks that start as low as 50 MB/sec, which is slower than spinning disks (150 MB/sec), SATA SSDs (500 MB/sec), and PCIe SSDs (2,000+ MB/sec). 算算網路或磁碟夠不夠快?
以上所述,對於一個受過系統研究訓練的工程師,應該一點都不會很難吧?即使沒看過這篇,也應該可以想出類似的招數,因此不會「卡住」,可能一下子就搞清楚問題所在。反之,一個菜鳥工程師,如果沒有人帶,又不會自己看懂人家寫的招數,那要如何解決問題?加班加到爆肝可能都沒有用。

接下來我又花了一個多小時解說後面列舉的一些招數,其實都只是將我們(系統研究老鳥們)司空見慣的老招數應用在TensorFlow上,看起來沒什麼了不起,但是菜鳥們就是不會。做理論研究的學者可能覺得這些沒學問、沒創新,但要做深度的系統研究,不能沒有這些功夫。

接下來,就是要學生做Lab,練習解決一些小問題。動手做很重要,可以幫助學生把看來得知識內化成經驗和學問。動手做的過程中,不是按表操作,最好是不斷思考為何如此,如果能發現新新問題和發明新招數,那就更好了。

我想再次強調,培育系統架構師並不容易,一流的系統架構師需要會做系統研究,往往具備Ph.D.等級的研究能力,對於前瞻系統研發扮演舉足輕重的角色,不過台灣很少有這樣的人才,因為多數代工產業注重按表操作,給工程師發揮的空間不大。如果想公司想轉型,提升其系統軟硬整合的能力,最好是找到夠格的系統架構師。

這堂課以及後續課程希望讓學生們能體會以下概念:
  1. 如何從「系統研究」的角度改善「人工智慧」效能
  2. 做實務性的系統研究,需要解決的議題很多,需要好方法
  3. Best practices是前人解題的心得,多看會有幫助
  4. 學這些招數,要知其然,更要知其所以然才好
  5. 動手做是知識內化成經驗和學問的方法之一
  6. 寫報告(論文)是進一步整理心得、發想創意的好方法
  7. 要博聞,但不要強記招數,要會活用
講到要會活用招術,我自己有兩個作法:
  • 搞懂之後就把招數忘了吧,就像金庸小說中的「獨孤九劍」和「太極劍」,達到無招勝有招的境界。(其實是我記憶力不好,不得不如此做 :))
  • 不斷挑戰新的問題,看看是否能夠練到「乾坤大挪移」的境界: 看到人家的招術,就能夠瞬間理解,收為己用。(其實是電腦科技日新月異,不得不如此做 :))
多虧了這兩把刷子,我能夠一路從超級電腦、電子商務、嵌入式系統、智慧手機、雲端服務、物聯網、大數據,做到今天的深度學習系統和人工智慧,至少還能跟得上時代的脈動,研究如何將當紅的應用在最新的系統架構上做優化。

[1] Performance Guide | TensorFlow. https://www.tensorflow.org/performance/performance_guide

2017年12月9日 星期六

排球與體育改革

前天幾位熱愛排球的年輕人找上我,希望我出來參選排球協會的理事,談了兩小時,我被他們的熱情說動了,或許這就是所謂「義不容辭」吧?

我這輩子很少跟人家爭,在現實生活上對權力遊戲沒什麼興趣,比較想自己喜歡做的事情。寫臉書和部落格,只是抒發個人的想法,沒想當什麼意見領袖。因此,當他們希望我參選的時候,我心裡面頗為排拒,非常想推掉。

可是,排球正好是我最喜歡的運動項目,聽到這些年輕朋友對我述說許多排球界的陋習,以及他們正在積極從事的改革工作,我狠不下心腸置身事外。如果我的棉薄之力,可以幫助改善台灣的排球環境,看到更多排球場上的笑容,實在沒有理由不站出來。

對於台灣的排球界來說,我只是一個無名小卒、業餘的愛好者。我讀台大電機系的那四年,是每天傍晚到排球場報到的「球棍」,全年無休,遇到假日更是要提早到場。我沒有打校隊,沒有教練教我逼我練球,但是興趣使然,我花了很多時間研究如何打好排球。

有多少傻子,會在床角上鋪上棉被和枕頭,在房間裡反覆練習扣球的動作,希望能打出漂亮的弧線? 有幾個怪咖,會在晚上十點到公園去練彈跳? 在美國念博士的幾年,誰有那個美國時間一個人在體育館架起排球網練習扣球?

我想世界上就是有一群如此熱愛排球的傻子、怪咖、無聊人士,不是因為參加了校隊,不是因為打國家隊,也不是因為靠排球營生,只是單純的興趣使然。這樣的人種,在乎的是如何增進自己的球技,在球場上盡力拚搏、以球會友,到處欣賞排球美技。

我在美國這個排球的發源地待了13年,除了到體育館打排球之外,也打隨處可見沙灘排球,甚至打過草地排球。偶爾和友人組隊參加業餘季賽,認識了各國的朋友,從高中生到70歲的大學教授,都樂在其中,見識到勝不驕、敗不餒的全民運動精神。

至今還保留在我研究室,當年在美國買的、用過多年的百年排球紀念球 (註: 排球是1895年發明的)

12年前我回台大教書,其中有個不足為人道的原因,就是希望能像早年一樣,天天到球場打球。可惜在台大教書的日子不如當學生輕鬆,沒辦法重溫舊夢。前幾年還跟著系隊去比賽,拿到台大盃冠軍,後來工作忙到不可開交,只能周末抽空跟一些老球友打打球。

說起來,國內的排球場地實在不怎麼樣。對我們這群業餘愛好者來說,有個架著網的水泥場地可打,就得偷笑了,想要租到木頭地板而且屋頂高度符合標準的場地,除非有關係,否則要好好燒香拜拜,才能抽到好籤。在硬地板上打球,容易受傷,一堆老球友紛紛因傷退場,至為可惜。

各單項體育協會的黑暗面,大家可能略有耳聞,但我並非親眼所見,所以不在此多談。我如果有幸擔任理事,會和這群熱愛排球的朋友們一起努力去改善台灣的排球環境,盡力讓黑暗面消逝。

如果朋友們有興趣關切這次台灣排球史上第一次全民參與的改選,請參考以下這個網頁:

http://votionary.com/jumptotw/

自動化解決大問題的AI

阿基米德曾說只要給他一個支點,他就可以舉起整個地球。我想,類似的比喻可以來形容AI:只要給我一個無限大的計算能力,我就可以做出能自動化解決一個大問題的AI。

然而,因為我們沒有無限大的計算能力,我們必須重視平行計算的效率,這也是我研究AI的切入點。不過呢,比起人類,電腦佔了一個優勢,那就是用多台電腦進行平行處理的時候,電腦與電腦之間的通訊速度遠超過人類在物理世界的語言文字溝通方式,所以説,利用平行計算創造集體智慧是強AI的關鍵之一。

有人形容「用大量計算能量搞深度學習」,是一種鍊金術,因為缺乏嚴謹的理論基礎,只知其然,而不知其所以然[1]。作為一位工程學者,我個人倒是不認同這樣的說法,因為有太多工程問題是無法用理論去得到解答的,而且深度學習已經成為實用的工程技術,並非中古世紀那種騙吃騙喝的鍊金術。

晶片也是一種有用的現代鍊金術,持續進步,造福人類數十年。台灣當年有幸學到一些晶片鍊金術,受惠了數十年。深度學習這套現代鍊金術究竟能將人類文明的智慧帶到何種境界呢?我們要用什麼角度切入參與呢?這是值得多思考的問題。

[1] http://bangqu.com/oES489.html

2017年12月8日 星期五

用AI設計AI?

日前Google Brain研究團隊公開了一篇論文[1],說明他們如何自動化機器學習模型的架構設計。

"In this paper, we attempt to automate this engineering process by learning the model architectures directly on the dataset of interest".

我說過優秀的軟體工程師是最擅長「日新又新」「革自己的命」的族群。這幾年,機器學習專家爭相發表強大的機器學習模型,尤其是影像辨認的應用。如今,這件工作,透過自動化,可以找到比「人類設計」更好的設計。

沒有自動替代文字。

如截圖所示,紅線的NASNet系列,是「機器設計」、自動化程序產生的,黑線則是目前「人類設計」中表現最佳的機器學習模型。所謂的表現佳,就是花費相同的運算能量(橫軸),可達到較高的準確度(縱軸)。

顯而易見的,紅線高於黑線。從另一個角度看,機器設計的NASnet-6,只要56%的計算量,就能達到與SENet相當的準確度。

問題來了:

Q1. 他們是怎麼辦到的?

Q2. 這個技術是否會開源?

Q3. 是否一大堆從事機器學習模型設計的學者、工程師都要失業了?

Q4. 這是不是意味著AI在各方面都有可能取代人類?

還有更多的問題值得深思,在此簡單地自問自答:

A1. 部分答案在論文中, 但要進行這樣的自動化工程,必須要有強大的計算能量。論文說道:

"In our experiments, the pool of workers in the workqueue consisted of 500 GPUs".

沒有像樣的計算能量,跑不出實驗結果,最好不要碰這樣的研究。然而,因為運算量太大,不能用暴力算法去做這件事。

"As this approach is expensive when the dataset is large, we propose to search for an architectural building block on a small dataset and then transfer the block to a larger dataset".

以上這句話就是文章標題所點到的Transferability的概念,請讀論文。

A2. 按照Google過去的作法,真正重要的東西,是不會開源的,但為了避免被指責,或是被以「反托拉斯」處理,Google應該會容許其他公司或社群發展(模仿)類似技術,或是使用其技術和專利,只要不威脅到Google的利益即可。

Google發展這類技術,主要是用以提升自家的服務。他不大可能把核心技術拿出去賣。我相信其他公司或開源社群應該會發展出一個或多個類似的東西。

A3. 這些Google Brain的人不會失業,他們會去做更有挑戰性的題目。天底下可以做的題目很多,除了影像辨認之外,還有很多應用。即便在影像辨認這個領域,還是有很多挑戰,例如醫學影像,與一般的影像辨認有很大的差異。

做機器學習的人,應該比別人更清楚「革自己的命」這件事。如果誤入此行,以為可以靠幾年中學到的東西做一輩子,這時再來抱怨工作沒了,應該是一種無知。

A4. 這篇論文再次提醒我們,只要是有規則可循的工作,就有可能被自動化。

往好處看,具有高度好奇心、熱愛挑戰的人類,可以善用自動化技術去提升他們探索未知領域的能力與效率。

工業革命之後,人們曾經擔心工作不保,但工業革命造成教育和生產力的提升,讓更多的人們能夠致力於發展文明,而非擔憂填不飽肚子的問題。

然而,社會的「低端人口」該如何自處,社會該如何看待他們呢? 這是很嚴肅的問題。工業化的國家,已面對這類的問題多年,甚至因為爭權奪利而引發兩次世界大戰,乃至有社會主義思想的濫觴。

制式教育只是為了生產業界所需的勞工,將人的勞動力提升,但是心智並沒有太多的長進。如今面對AI,我認為是危機也是轉機,希望人類的智慧藉此機會提升,但中間會有渾沌的現象,也是難以避免的。

[1] https://arxiv.org/pdf/1707.07012.pdf

2017年12月2日 星期六

近來各大家系統災情頻傳?

今天iPhone災情慘重,一早就有長官打電話來問我,但眾說紛紜,而且我所有裝有最新版的iDevices都沒出問題,所以不知道發生何事,直到搜索這篇報導[1],才知道問題所在。(註: Apple已經提供新的iOS 11.2,更新後應該可解此問題,但我不負任何責任。)



各位可以好好酸Apple,挫挫他的銳氣也好,或許iPhone會因此降價。不過我不想當酸民,所以想從技術面來談談與此相關的事。

據推測[1],這次災情的原因可能如下:

"The problem seems to be tied to local notifications received from apps that offer daily or repeat reminders. For example, meditation app Headspace, one of the affected apps, sends daily reminders to users to encourage them to take some time to meditate. Any app using local (as in not pushed from a remote server) notifications that repeat will cause a crash".

出問題的使用者,大概跑了某個會在系統的告示板上重複提醒使用者的應用。不過,會因此而當機,作業系統難辭其咎。

為了效率,Apple對iOS做了很多優化。我們知道,如果把一些功能放在作業系統內部空間(kernel space),可以節省不少負擔(system call, context switch, memory copy),然而一旦有點小差錯,可能導致系統當機。

請不要小看這類站在時代尖端的系統軟體工程,這需要極度專業的軟體工程訓練,這不是修過基礎的作業系統原理就能勝任的,複雜度遠遠超過寫微控制器的程式,或是寫裝置驅動程式。

系統驗證的難度與日俱增。當系統越來越複雜的時候,越難以保證系統絕不犯錯。軟體驗證工具,如果使用得宜,可能降低出問題的機率。

由此可知系統軟體工程人才的重要性,但台灣這些年說要發展軟體,極力強調創新之餘,是否知道台灣業界極度缺乏專業、高階的系統軟體工程人才?

資安的問題也是如此。很多所謂的資安人才,學會如何運用現成的攻擊與防禦工具,但系統軟體內部的資安議題,則較缺乏關注,例如說,怎麼寫出沒有安全漏洞的軟體呢? 如何設計不會被駭客用硬體手法破解的系統?

上個月Intel的處理機被爆料出事了,幾乎所有2015年之後生產的處理機都中鏢[2]。主要是因為Intel在x86處理機內加裝一顆管理用的小處理機(Management Engine)有安全漏洞,影響Windows和Linux的使用者,但不影響Mac。

但Mac的使用者也不要高興得太早,因為OS X有個更離譜的資安漏洞也在幾天前被揭露出來[3]。使用者如果沒有設定root帳號的密碼,那麼駭客就可能可以輕鬆用root帳號登入,不需要任何密碼。

各位可以酸Intel和Apple,但大家每天在使用的Windows,三不五時就有security update,隨時都在補資安漏洞。

要發展複雜的應用與系統,勢必要有硬底子的系統軟體工程人才和系統資安人才,否則產品很容易出事。

話說,使用深度學習打造出來的現代AI系統是否穩定和安全? 這也是相當值得研究的議題。

[1] Date Bug in iOS 11.1.2 Causing Crash Loop on iPhones as December 2 Hits
https://www.macrumors.com/2017/12/02/ios-11-1-2-date-bug-crash-loop/

[2] 英特爾修補影響數百萬台PC與伺服器的CPU韌體漏洞
https://www.ithome.com.tw/news/118487

[3] Mac作業系統重大資安漏洞 蘋果忙補破網
http://www.cna.com.tw/news/firstnews/201711295007-1.aspx

2017年11月29日 星期三

台灣學界的哥倫布、愛因斯坦

科技部正在推的「哥倫布」「愛因斯坦」計畫[1],注重培育年輕學者固然是件好事,但有點頭痛醫頭、操之過急、規劃不周延。

這讓我想起一些往事。

即使時光倒回至我2005年回台灣教書的12年前,這些「哥倫布」「愛因斯坦」計畫都與我無緣,因為我取得博士學位後在美國工作7年,民國55年次的我,到台大任教時已經快40歲了。

當時台灣各界普遍缺乏危機意識,恣意揮霍著先前多年所謂台灣經濟奇蹟所累積的資產,就算有人呼籲也是紋風不動,學界務虛浮華,產業層次停滯不前,政治社會更是不遑多讓,各種光怪陸離的現象不斷湧現。

我剛回到台大時,是個nobody(現在也還是)。大學念電機系的我,在資訊系沒有人脈;看到學界務虛的現象嚴重,大老們似乎只知道用數期刊論文點數來掌控教授升等的方式,打造出所謂的卓越大學。身為助理教授,只有認真寫論文拼升等的本份,菜鳥的呼籲如同狗吠火車,過去的業界經驗不受大老重視,產學合作被長官認為是搞外務。

這些年來,好幾位同事離職了,一方面是因為有更好的去處,另一方面是因為在台大不僅有志難伸,還必須面對諸多的不合理。

有些人可能可以用平常心看待這些不合理,反正一路讀書考試的成功經驗告訴他們,不要管他合不合理,只要根據遊戲規則力爭上游即可。等到媳婦熬成婆,才能和長官大老平起平坐,分享權力和利益;在熬成婆之前,與遊戲規則無關的事情,不需太在意。

這些人是非常務實看待自己的利益,但對於社會而言,往往就不是那麼務實了。當然,我還是要幫這些教授朋友們說些話,不這樣做,又能如何呢?除了離開教職之外,還有什麼選項呢?

比起某些上市公司的主管,為了個人利益,刻意掏空公司,乃至於政客掏空國庫,許多的教授朋友做了遠超過所得薪水的教學服務工作,還要被逼著熬夜寫論文,學界務虛的問題,不能怪他們。

像我這種拒絕寫期刊論文而評鑑不過,在2010年被通知「留校察看,兩年後檢討是否續聘,評鑑通過前不晉升薪級」的個案,在台大電機資訊學院中如果不是唯一,大概也是極少數的「敗類」。

我想,大多數正常人應該不會選擇走我這種「偏激」的路線來面對制度和文化上的不合理。或許這就是所謂「平庸的邪惡」,不然優秀的日耳曼人民,當年怎會跟隨著希特勒做出自私自利卻傷天害理的事?

但是話說回來,哥倫布、愛因斯坦,哪個是正常人?我們的社會中,有多少奇才異士,被打壓是怪胎異端,受規訓而平凡化?

還好,寫論文並非難事,我在留校察看期間迅速發表先前累積下來的研究成果,在2012升等副教授,接著在四年後的2016年升等正教授,至少證明這樣異端的路線是行得通的,產學可兼顧,與產業相關的研究是可以發表,只是需要與眾不同的經營方式和理念。

相對於哥倫布、愛因斯坦,我選擇走的路和研究成果渺小之極,但也算是走過那麼一遭,這些年做我認為應做的事,說我該說的話,似乎沒有什麼大遺憾。

[1] 【申請人數沒過半】科技部砸50億重金攬才 年齡門檻太高卡死一堆學者
http://www.upmedia.mg/news_info.php?SerialNo=29890%3F

表揚核心系統達人培育計畫

教育部姚立德次長在成果分享記者會上站台推崇我們這幾年努力在做的「核心系統達人培育計畫」,希望各界參考、擴大推廣辦理。

嚴重的空氣汙染

今天出大太陽,但是從室內看出去像是陰天,特別到陽台上拍了一張照片作為紀錄。話說這張iPhone X拍出來的照片比我肉眼感受到的好太多,但平常能清晰看到的101大樓,應該出現在照片的最左邊,幾乎完全消失。



根據環保署的即時觀測資料,台北市目前的空氣品質算是黃色的「普通」,比起桃竹苗和中南部很多橘色和紅色的地區,台北人還算幸運。依照觀測資料,想要呼吸好空氣,可能要往東走了...

2017年11月28日 星期二

直接面對問題,不要說幹話

昨天在學校的餐會時,大家聊到「這年頭做官、當台大校長很難,不管怎麼說話,民眾和學生都會開罵」。有長官就問我,你在社群網路上經驗豐富,有什麼好招?

我說,我所發表的意見,也有很多人不同意的,這年頭請不要再有戒嚴時代那種可以由上而下左右民意的思想,但也不要妄想要討好每個人。最好的作法很簡單,就是「說實話」和「務實做事」。至少我是本著這個原則,所以十年前講話和做事的態度和現在是一致的。

直接面對問題,不要說幹話。例如最近賴院長的功德說,會被大多數網民認為是幹話而罵聲不絕,因為這種話沒有針對問題本身的焦點,也無助於解決實際問題,被罵之後可能連他的盟友都不想跳出來為他辯護,除非是有廣大信眾的seafood。

大多數長官和政治人物幹話說多了,習慣成自然,甚至在說幹話時時常有下屬拍手喝采配合演出,以為自己真的說得很好。殊不知,有些聽眾心裡面不知道罵了多少回。

直接面對問題,但不要亂開支票,妄想快速卻不切實際的解決問題。政黨和政府,在過去幾十年慣用這個手法來唬弄民眾,早就被明眼人看穿手腳,只是許多政商大老還昧於現實,或是希望抓住「青春的尾巴」,再繼續多撈一點,抑或是這麼多年搞下來,周遭盡是會說不會做的人?

君不見,那些描繪美麗願景但缺乏務實規劃的政策,時至今日,很快就被拆穿是畫大餅充飢。

如果直接承認「政府財政不佳,只能付出這點薪水,我們真心抱歉,如果經濟好轉,我們提高待遇」,有人還是會開罵,但至少較接近現實,有人會跳出來幫他辯護,或是就現實狀況去深入討論「真的是財政問題,還是存心壓榨,怎麼計算才合理」這些議題。

有些大老覺得要面對一大堆酸民的意見很討厭,大大降低政府做事的效率,懷念台灣舊時代政府的效率、人民的勤奮。

是的,「掌控民意」這件事,中國可以,台灣不行,那些比台灣還早民主化、工業化的先進國家國家更沒有辦法。所以中國政府辦事不只比台灣有效率,可能比世界上所有國家更有效率,北韓除外。

「爾愛其羊,我愛其禮」,在二者難以兼顧的時候,更需要務實討論,尋求中庸之道。

2017年11月26日 星期日

30天上班336小時?

根據報導[1],理論上在合於新勞基法草案規定下,可以讓勞工30天之中上班336小時,如下圖所示。


我相信這社會上有很多不會強迫員工加班的好老闆,也有不少自信身體強健耐操或是自願賣肝賺加班費的員工,他們可能覺得30天336小時不算什麼,或者偶一為之並無不可,只要勞資雙方你情我願就好。

但立法主要是為了保障弱勢,避免最糟糕的情況成為常態。如果資方可以合法要求勞工如此排班,而這樣的排班可能會造成過勞,那顯然這個法在對勞工的保障上有個漏洞。政府不應該假設所有老闆都不會鑽漏洞、所有勞工都自願配合。

我訥悶,在法規設計上,能否訂定一個「軟上限」(soft limit)和一個「硬上限」(hard limit)呢? 如果某行業或是某公司經過充分的勞資協商,可向主管機關申請,經核可後可將工時提高超過軟上限,但是無論如何絕對不可超過硬上限,這樣的立法方式是否較有彈性,也有控管機制,避免現在這種一體適用於所有行業、大小公司的作法?

補充:

1. 不能靠立法來解決所有問題,但是我們還是不應該立一個有漏洞的法。

2. 超過軟上限應該要有核可期間,也應該考量每家公司的勞資互動紀錄來決定是否核准,另外還可以考慮徵收額外的加班費和稅金。

[1] https://tw.news.appledaily.com/life/realtime/20171125/1248010/

2017年11月25日 星期六

停止製造無動力世代

看到丙成兄呼籲各界停止製造無動力世代[1],我也想來談談我的看法。

學生無動力的原因很多,檢討教育體制是重要的,但這麼多年教改,各方都有自己的道理,不斷在檢討對方,翻來覆去,難有共識;前進三步退兩步,難有大作為。

我認為根源在於經濟。無論教育如何改,如果經濟不振,能安居樂業的工作機會大幅減少,此時對於大多數學生和家長而言,為了卡位生存,似乎只有奮力擠進一般人認為的人生勝利組保證班(頂尖大學),進不了保證班的學生,必須加倍努力證明自己的才能,不然可能被貼上魯蛇的標籤。

那麼,一個政治經濟發展良好的社會,能夠提供許多能讓一般民眾安居樂業的工作機會,要憑藉什麼呢?當然不能靠那些虛耗社會資源的政治口水和幹話,必須靠健全且優質的產業。

一個健全的產業,需要社會各種行業的支持。經商的、辦教育的、搞文史哲學的、研究科學的,對於產業的發展,都能有其貢獻,但如果某行業的作為與產業脫節,就造成虛耗人力、腐蝕人心的現象。

台灣的教育內容和學術研究,與產業脫節的狀況很嚴重。這個跟傳統的文憑主義有很大的關係,早年我們說大學(University )的英語諧音是「由你玩四年」,而且我們真的很多同學時常翹課、混社團,並沒有比現在的學生用功,但當年台灣的產業發展得不錯,成績不佳的同學成為科技新貴、當老闆的比比皆是,為什麼呢?

因為當年台灣產業所需的技術能力遠遠低於先進國家。不需要念大學、研究所,也能夠幫人家修電腦、裝軟體、開工廠。絕大多數的技術來自於國外,只要學會如何應用即可,不必深究其原理,也不一定要搞創新。

也就是說,當年台灣的教育內容和升學體制並沒有比現在好,大學生也沒有學到什麼實用的東西,台灣的經濟奇蹟並非歸功於高等教育,政府和產業沒有真的把人才培育寄託於大學,大學教授樂於做自己感興趣卻和產業脫節的教學研究,大學生開心玩四年,家長也不很擔心,反正到處都有工作機會。

但是在這二十多年來快速全球化的趨勢下,台灣社會的成長速度太慢。既有的產業不願冒風險砸重本嘗試轉型升級,很多教育機構跟過去一樣教的還是那些與產業脫節的內容,學生還是跟我們當年一樣忙於為考試而讀書,倒是多出許多讓人心惶惶的政治鬥爭和媒體亂象。

我想講的是,如果大家願意在各自的崗位上嘗試與產業鏈接,多幾分努力設法提升產業、創造更多優質的工作機會的話,台灣的經濟才會健全發展。光是在國內爭權奪利,彼此酸來嗆去,就算政黨再多輪替幾次,教改翻來覆去,還是無濟於事。

可以做的事情很多,政治上應設法停止務虛、創造價值,產業應設法精進技術、提升全球競爭力,教育應重視多元且務實的人才培育和專業發展,社會應善用開創性人才、同時照顧弱勢。

能朝這些方向做點事情,即是功德。這是我所理解的法華經名句「一切世間治生產業,皆與實相不相違背」所蘊藏的深意。

[1] https://udn.com/news/story/7340/2830016

2017年11月24日 星期五

賴清德院長的功德說

剛剛看到我的臉書被賴清德院長的功德說[1]洗版,我想,很多人習慣性用某種看法來合理化一個苦痛堪忍的現象,賦予某種意義。尤其是當上長官之後,可能因為無力改善現象,只好也如此。

除了批判政府長官,看看我們一般老百姓又是如何呢? 剛好看到PTT昨天貼出一篇找人開鎖的文章[2],頗寫實的道出台灣普羅大眾習慣找便宜好康,不是很注重專業的狀況。

這樣的習慣,從庶民百姓到企業領袖,極為普遍,如果不改,大概很難提升專業的價值。這社會不只有慣老闆,也有很多的慣民。

最後附上一篇中研院專業研究者的文章[3],看法與我類似。文中說:「所以要改善目前經濟狀況,問題的關鍵可能不在於 GDP 如何分配,而是在於如何把 GDP 的餅做大,發展附加價值高的產業,以擺脫低價競爭的循環。」

財富分配的問題當然存在,但台灣真正的問題是沒有去把餅做大,一大堆人卡到了位置之後就盡可能的撈,不在專業上求突破,當然在全球化的經濟情勢中日益衰退。

建立起專業高度,或許是條辛苦的道路,但這是社會成長的必經之路,沒有捷徑。

[1] https://www.gvm.com.tw/article.html?id=41171

[2] https://www.ptt.cc/bbs/StupidClown/M.1511441096.A.F57.html

[3] http://research.sinica.edu.tw/taiwan-economic-salary-yang-tzu-ting/

2017年11月22日 星期三

大學的獎助學金與學費

今天上午花了三小時作為電資學院代表在行政大樓審查「希望助學金」。

台大每年從收到的學雜費中提出上千萬元經費,提供三百多份希望獎學金給來自弱勢家庭的學生。其實,除了助學金之外,學生還可獲得學雜費和住宿費的減免。



基本上,這幾年申請希望獎助學金的人數都低於400人的上限,今年申請的人數較去年為低,所以校方盡可能從優認定補助等級,也希望符合資格的學生都來申請。

從這個助學金申請的狀況,或許可以看出,能進到台大的弱勢學生並不多,而且人數逐年減少中,似乎印證了弱勢家庭難以將學生送進台大的困境。

如果說「弱勢家庭難以將學生送進台大」是個需要解決的問題,那麼這個問題的根源為何?是大學的入學制度,還是弱勢學生所接受的中小學教育?是弱勢家庭付不起補習班學費,還是說弱勢家庭不大重視教育,希望子女早點去工作?

我覺得以上的原因都有其影響,問題其實很複雜的。大學端和入學制度皆是其中一環,如果只著眼於這幾環,還是不能完全解決問題。

作為一個研究型大學,台大的目標原本是很單純的,希望收到一流的學生,培育出一流的人才。至於學生的家庭背景,通常不是台大收學生時所關切的因素,因為台大目前在經營上並不靠收學費或是學生家長的捐款,只要是優秀且用功的學生,台大很樂意提供獎助學金和減免學雜費等優惠。

如果專為弱勢生開一道門,降低錄取標準,看起來對於台大追求卓越的目標是不利的,但是我覺得值得嘗試。當年我唸台大時,有很多僑生,進來時程度不佳,但後來表現不錯,所以我認為可以適度放寬,多收一些弱勢學生。

另一方面,如果台大提高學雜費,影響最大的並不是上述的弱勢學生,而是家境勉強還過得去、不符合弱勢資格的學生。不過,除了弱勢獎學金之外,學生還有其他的獎助學金和助學貸款的管道。

我傾向於相信所謂的「天助自助者」,重點在於提供弱勢者某種的機會和協助,但弱勢者本身也要把握機會、善用協助。

我們當年很多同學出國留學,很少人拿得到獎學金,必須負擔高額的學雜費和生活費,因此大家努力拼獎學金,或者超修學分趕快拿到學位。當年在一學分一千美元的情況下,算出一小時課約折合2000台幣,才知道高等教育如此昂貴。幸好在努力一學期之後拿到獎學金和減免學雜費,大大減輕了父母的負擔。

獎助學金應該是很重要的議題,但國內並不大重視,一般的學生不珍惜教學資源,缺錢的學生去打工的現象層出不窮,在私立大學特別嚴重,也嚴重影響了教學品質。

2017年11月20日 星期一

做科技界的新民

在「軟體吃掉全世界」的表象下,這陣子重軟體輕硬體、重創意輕技術的思維與論述在台灣極為普遍。

十年前政府大推系統晶片的時候,我強調軟體研發的重要性;這幾年風向翻轉,軟體人覺得終於有引領潮流的機會,但我想提醒大家,不要忽略軟硬整合的重要性。

的確,矽谷這幾年很缺資料科學家、人工智慧專家,但是大家要知道,矽谷已經擁有很多高階的軟硬體人才和技術,能夠和這些資料科學家、人工智慧專家一起合作,把創意打造成一流的應用、服務、系統。

十年前科技大廠紅利滾滾的時候,我希望大家把眼光放遠,不要只為人代工作嫁,應思考如何轉型創新;這幾年風向翻轉,新創蔚為風潮,但我想提醒大家,還是要紮穩技術根基。

由於這陣子實在看到太多缺乏技術含量的新創案,我說句難聽的話,請不要再把「庶民百姓沒看過的東西」當作是「創新」或是「新創」了好嗎?一時的創意,很可能只是自己之前沒聽過、沒想到的點子;要成為創新,必須進一步確認所謂的創意並沒有被別人提出和嘗試過;要做新創事業的話,最好是能夠有獨到的技術,否則我認為成功的機會頗渺小的。(用喬的或是用騙的就不提了)

十年前學界長官要我拼命寫期刊論文升等的時候,我堅持研究實務上有用的技術;這幾年風向翻轉,上頭要求研究計畫要有產業效益,但我想提醒大家,轉型不是一蹴可幾的,要懂得學習和研究的方法,不能土法煉鋼、坐井觀天。

要真的把一流的東西做出來,真的很不容易。光是把目前最強的技術搞清楚並且整合實作在一起,就可能要研究許久,更何況要做出別人沒做到的,談何容易?最好是自己要在某方面夠專業,或是具備跨領域團隊合作的能力,但這往往需要多年的學習和努力去累積技術能力。

高等教育不僅是傳授知識,做學問、為人,乃至於為政,需要不斷努力創新找出路。自古皆然,如今尤是。

說到自古皆然,很多人讀過這段話:『湯之盤銘曰:苟日新,日日新,又日新。康誥曰:作新民。詩曰:周雖舊邦,其命維新。是故君子無所不用其極。』《禮記。大學》

古文中「日新」「新民」「維新」的意思很清楚了,強調日積月累為創新努力,而「無所不用其極」則可理解為做研究追求極致的哲學、科學、工程。可惜,當理念成為教條和考題的時候,竟成為後來讀書人的束縛和框架。

多少讀書人把「無所不用其極」的精神用在考試和謀取功名利祿上,卻不務實解決問題。考試時背得出「湯之盤銘」和「康誥」的典故,但在日常的工作和生活中是否實踐「作新民」?

說到如今尤是,因為大家都可以感受到科技在破壞性創新的威力,尤其是資訊科技和人工智慧蓬勃發展,有可能造成更多的革新。但革新不應是政治口水,也不是辦家家酒,更不能是半吊子,要有一整套方法。

我想,台灣若要向上提升,最需要的是教育文化的革新:革去諸多的陋習,給學子和人民多一些空間和時間去作新民。這時候,有些人可能會發現,作新民需要有知識和方法,需要好好學習鑽研,不是時常加班或是天天看新聞就行的。

2017年11月10日 星期五

Qualcomm推出48核心的ARM處理機晶片,想攻占伺服器市場

這篇文章講到Qualcomm推出48核心的ARM處理機晶片,想攻占伺服器市場[1]。

在ARM處理機日益普及的智慧手機年代,加上跨平台作業系統與編譯技術的成熟,沒有早年WINTEL壟斷PC生態系的保護,INTEL在行動裝置市場上節節敗退,PC市場利潤萎縮,唯有在中高階SERVER市場上還能獲得較高的利潤,但遲早得面對ARM陣營的搶攻。

想起2000年前後,SUN所佔據的高利潤SERVER市場,不斷被INTEL/AMD蠶食,境遇相仿。前一陣子APPLE發表A11處理機的時候宣稱可以跑得比13吋MACBOOK PRO上的INTEL雙核心處理器還快,許多人揣測日後MACBOOK有可能改用APPLE自家設計的ARM處理機。

其實這件事已經講了五六年了,至今總是雷聲大雨點小。基本原因之一是,如果QUALCOMM這類公司的手機晶片賺翻了,何必辛苦來搶INTEL的SERVER市場呢?現在要來搶,當然就是嫌手機晶片賺不夠了。來搶的結果,可能就是打破(DISRUPT)這個中高階伺服器市場的利潤。

另一方面,INTEL在時下極受重視的深度學習市場上,目前採取多頭馬車的策略,面對NVIDIA用GPU拉抬起的高人氣,以及專用加速器的蓬勃發展,可謂上下夾擊、腹背受敵。

我相信這些處理機各有擅場,針對應用需求,選擇或設計合適的處理機來打造系統,是這世道運作的道理。至於如何做到這件事情,不需動腦的作法,是跟著潮流走,但若要真的自己來從應用貫穿到處理機,軟硬體技術的複雜度頗高的。

[1] https://www.forbes.com/sites/davealtavilla/2017/11/08/qualcomm-launches-disruptive-48-core-centriq-server-processors-targeting-intels-bread-and-butter/#71d4e9ef4e15