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


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

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. 同學,你考上台大研究所,很不容易,怎麼還這麼沒有自信?要知道「缺乏自信」是求職的大忌,而且我都已經要給你機會和幫助你了,難道要我保證你多久之內畢業嗎?

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

沒有留言:

張貼留言