郭大維 教授

先請老師您大致介紹您實驗室的研究領域。

  我的研究最主要有兩個大方向,一個是嵌入式系統:特別是極輕量的嵌入式系統,譬如物聯網Internet-of-Things,我們著重在作業系統相關的嵌入式系統軟體研究。另外一個大方向是在儲存系統以及記憶體相關系統設計,譬如說近來席捲儲存市場的固態硬碟,或是說更進一步的把記憶體跟計算單元能夠結合,也就是所謂的神經元運算 Neuromorphic Computing,它提供未來新的電腦設計,也可以是新世代人工智慧晶片的基礎。
  所以這個研究方向可以從儲存系統往作業系統的方向再繼續擴展,你也可以思考如何設計先進的儲存伺服器。簡而言之,我們實驗室做的方向從非常非常小的輕量的嵌入式系統像物聯網、像穿戴式裝置這類的行動裝置,並延伸到儲存系統、大型的伺服器,以及神經元運算,這是我們研究的幾個大方向。

  其實所謂的神經元運算,就跟我們的腦神經元一樣,每一個神經元不但是一個儲存單位,還同時是一個計算單位,神經元計算整合記憶體和計算單元,像人腦一樣以數以兆計的神經元同時進行平行計算,提供高效能但低功率的進行深度學習與推論。神經元運算的感覺就好像你的固態硬碟,它不僅作為快閃記憶體晶片製成的儲存裝置,可以儲存資料,同時也可以做運算。
  或是說你的主記憶體 DRAM 不只可以做資料與程式儲存,也可以同時做運算。換而言之,神經元運算提供突破性的電腦設計概念,在近期也可以跟 GPU 一樣,具體實現為人工智慧晶片。以這樣的研究方向來看,我們可以擺脫電腦系統數十年來賴以為生的 von Neumann Architecture 基礎以及限制,可以實現前瞻的電腦設計,實現真正的人工智慧運算,或是深度學習運算。

所以老師您的研究感覺會是比較偏硬體方面嗎?

  也不是,我做的研究其實是比較偏向於軟體方面。

  從穿戴式裝置來看,是比較傾向於作業系統方面的研究。特別是我們希望能看的是非常輕量的嵌入式系統,它的電源來源,可能不會來自於牆上電源,而可能是來自採集來的電源,如太陽能或體溫。另一方面來看,我們要問為什麼 Apple Watch 這樣的物聯網裝置需要每隔幾天就要充一次電呢?其實這是因為它的系統設計是使用像是一般電腦的設計方式。可是這些物聯網裝置之 Wearables 的設計方式不應該是這樣的。它們也許出廠後一輩子都不應該需要充電。
  例如 RFID 就是一個很好的例子,RFID 是非常輕量的物聯網裝置,它不需要電池。你把 RFID 貼在汽車上,然後開到高速公路,當你收到 RF Readers 這類的訊號時,汽車上的 RFID 的天線收到訊號就會累積能源,當累積到足夠的能源之後,它就會用它的天線把自己的資料發射回去,例如汽車使用者的用戶 ID,這就可以在行車收費上面做一些處理。你會注意到 RFID 是不需要額外電能或是電池的,那它的電力是來自於哪裡呢?就是收到來以上所說的 RFID Readers 之 RF 訊號。
  像這樣極輕量的穿戴式裝置,以後可能在你的衣服裡面、在你的鞋子裡,或甚至裝在你的身體裡面,它可能不需要額外電源支持,它的電能來源是來自於溫度,或是來自於人體動作或肌肉運動來得到電能。而這樣子的 Wearables 穿戴式裝置運作上可能會是跑跑停停的,會跟現在的智慧型手錶與電腦是完全不同的概念,它或許一輩子都不需要充電,用到你丟掉為止。這種超輕量嵌入式系統,未來會被應用在許多地方。就像你現在看到汽車上大量裝載這些高速公路計費的 RFID 一樣。


  而如果從記憶體、固態硬碟的研究角度來看,我們從二十幾年前就開始做固態硬碟這樣的記憶體儲存設備的設計,而最近這幾年我們朝向更進一步的前瞻伺服器設計,或是高效能檔案系統等等這樣的一個比較先進的儲存伺服器的方向前進。儲存伺服器的市場非常大,像 Google 擁有的 Data Center 恐怕三分之一的錢花在儲存伺服器系統上面。我們這方向的研究就是屬於作業系統、儲存系統或是軟體方面的設計。
  如果往計算方向走的話,當然就會走向跟硬體比較接近的方向。我們整合儲存跟計算單元,我們就跟許多有做硬體的公司有合作,進行神經元運算。不過我們還是聚焦在軟體跟演算法的設計。但是我們做的設計在最後實現上,有些就可能變成 AI 晶片,實現高效能且省電的深度學習,這樣的研究聽起來好像有點遠,但是你可以注意到在 Google 這些公司他們都在做 AI 晶片,也可以理解這些研究對未來的影響是非常巨大的。

  未來的電腦和現在的電腦將會不一樣,未來的電腦可能不像現在的電腦,具有 CPU、memory、secondary storage 等等。例如我們現在稱為神經元運算的研究,就像你的大腦並沒有分成計算、儲存跟 IO,你的大腦的儲存就是計算,計算就是儲存。所以你可以想像,每一個 DRAM 單元都可以做運算,每一個固態硬碟的儲存單位都可以做運算。這聽起還很神奇,但我們想像這是未來新的電腦系統的樣貌,這些研究有巨大機會,也存在很大的挑戰。

  這樣來說的話,也許你可以說我做的研究是在: (一)極小化的物聯網裝置,如果從嵌入式系統的角度來看,那就是未來穿戴式的系統。 (二)從記憶體的角度來看是大型化伺服器系統、先進的儲存伺服器,甚至是屬於神經元運算。所以說,我的研究還是在於系統軟體的設計。

謝謝老師詳細的介紹。不過,老師您現在是在香港的緣故,那想請問老師您指導學生的頻率大概是如何呢?

  我們其實每個禮拜都在 meeting,其實就好像你們現在 covid-19 一樣,你們目前怎麼跟老師上課,是不是有些是透過網路?所以,同樣的,我跟我的學生都會透過網路來開會,是透過 Zoom 或 Google Meet,我在台灣的博士班學生、碩士班學生,每週照樣在不同的主題上做些討論,或是會對他們的研究進行報告。而實驗還是跟以前一樣,所以,你可以想像就跟你現在因為疫情而進行的線上學習一樣。不過因為都是 Computer Science 的學生,所以大家用這些軟體應該都很習慣。(訪:所以您認為是不太有影響的?)其實影響不大。

老師您希望您收的專題生至少要具備什麼樣的特質或能力呢?

  我覺得我們的學生最重要的是要有積極主動學習這樣的想法跟能力,因為資訊系統或是 Computer Science 進步得非常快。像是我剛剛在談的,從系統軟體的角度來看,我們的範圍其實不是只有侷限在做作業系統。當未來有新的發展時,我們必須思考,未來的計算機會長什麼樣子?它可能跟現在的完全不一樣。所以我們必須很主動地、積極地了解現在最新的發展,世界現在最新的趨勢是什麼樣子,我們必須要有足夠的創造未來這些新知識的能力。那當然,主動積極的學習就是非常重要了。

老師您認為如果今天一個學生在一些必修科目(像是演算法、作業系統)表現得不是很理想,那對他去做專題會有一定程度的影響嗎?

  其實做專題有一個想法是它會讓你回過頭來重新去審視你過去學過的所有基礎的科目。有些時候,因為某些原因,你可能沒有學好,可是這時候剛好回頭去看,你這塊地方就可以把它填補起來。我相信臺大的學生其實都相當聰明,你給他們足夠的動機時,他們就會回過頭來把他該學會的東西再重新溫習或是學會。

  那另外一方面,做專題不只是一個回顧、複習跟運用過去所學的機會,它也是一個你可以試著組合任何你學過知識的機會。就好像你可能在做神經元運算時,你就會回頭看看計算機組織 Architecture 的知識,你也可能回去看看作業系統、系統軟體相關的知識。當你在看深度學習時,你可能會需要去看看演算法。所以從這個角度來看,專題是一個很好的機會,你開始組織、融合你學會的知識。所以,我覺得這是一個很好的機會讓同學們重新溫習,跟學習過去有所不足的地方。

  很多同學在修課時可能修得好,也可能修得不好,可是當你在做專題時,你會發現原來有些東西你以為你懂,但是事實上你不太懂;或是你以為你學會了,但其實有些地方你不是那麼清楚;或是在運用上時,才發現原來這個東西這樣子教是為什麼。我想專題是一個很好的機會來進行學習,所以我建議同學們應該來做專題,不管你想做哪個方向的。

那老師您會建議同學們什麼時候開始進行專題研究?

  其實我覺得最好的時間是大三。因為大三的時候你已經有一些基礎科目的學習基礎,而且你接下來還要學很多新的東西,所以這是一個很好的時間。不過我知道很多同學大二時就已經修了一些大三的課,所以他們如果在學習上、修課上速度比較快的時候,其實大二也是一個好的時機進來。
  大四的話有一點點晚了,因為畢竟大四的時候可能會需要考研究所,時間上有些緊。或是說你做了專題後發現有些課程你應該要學,但是你已經大四,時間就不太夠。所以,我認為對於臺大的學生來說,最好的時間會是大三。那當然,早一點也可以。

老師您覺得大學部的專題生一週應該要花多少時間在專題上?

  我覺得給自己一個習慣,一個禮拜花幾個小時在專題上。那多少就要看你這個禮拜有沒有考試、有沒有作業要交。我比較建議你最少一週要花一個小時,你要讀一些東西、學習一些東西。你如果這個禮拜時間比較寬裕,那你就多花一點時間。所以這個部份是見仁見智的,可是最好有一個習慣,每個禮拜都會固定花一些時間在上面,這樣你就會有進展。因為有的時候,有些人就是會熱身得比較快,有些人就是會比較慢、熱身得比較久,那持續性的學習通常會對學生比較好。

老師您會指定專題生研究的主題嗎?還是您會讓他們去找他們自己想做的。

  通常在我們實驗室我們會提供一個大範圍的方向。那大方向像我剛剛提到的,如果從作業系統的角度來看,其實範圍很廣。你可以做到儲存系統、process management 、 embedded system,也可以做到 storage system,甚至像是 solid state drives,或是我剛剛提到的神經元運算,那你也可能要去學算法,了解深度學習。所以,我們會提供你大的方向,那從這些方向上下去尋找,會比同學到處找題目來得好。

  另外一方面,我們會提供一些同學來參加我們博士生、碩士生合作的機會。如果同學對某一方向已經很有興趣了,就可以參與裡面的討論。這時候題目是更加確定了,速度就會更快。所以從大方向上到參與合作機會上,我想我們都會讓同學有一些機會能加快自身的學習。

  一般來說,讓同學自己找題目是一個比較沒有效率的方式,因為 Computer Science 的題目非常多,進展的速度相當快,同學們如果沒有在研究領域上做過一段時間的話,可能就會不知道他們進展的速度、世界發展的大方向在哪裡。因此,提供一些引導通常會對學生參與專題的學習效率和成果會是最好的。

老師您覺得專題為什麼對系上的學生是必要的?修過專題的學生應該要習得什麼樣的技能或是有什麼樣的研究經驗?

  這部份就好像是我們過去大一、二修過的課程,經過了專題之後你就要開始運用。所以為什麼對資訊系的學生重要?因為我們在大一、二學了很多課,但是我們不知道為什麼學習這些東西,我們也不知道它們到底有什麼用。到了專題的時候,就會提供我們同學一個機會,重新審視自己的學習,並且試著運用。我們都知道當開始運用的時候,同學就可以注意到哪些東西學得不足的地方,就會開始回過頭來看原來的課本或是講義,這時候學習的速度會更快,因為你已經知道你想要學什麼,你知道你想要達成什麼。

所以我覺得,專題的課程有兩個重要的功能。一個是溫習你的 cornerstone 這類課程的機會,那其實是一個基礎性的工作,會加強你的基礎知識與能力。可是它另一個功能又好像是一個 capstone,把不同專業知識束在一起的 capstone,因為在做專題時,它不會只侷限在某堂課的內容,它會橫跨好幾門課的知識,這時候就會提供你一個力量,讓你把知識貫穿在一起,所以對知識的融合有用。
  因此,我覺得專題對資訊系的學生是很重要的,世界進步得太快,我們學了很多知識,我們卻不知道為什麼,也不知道怎麼用。不過修了專題之後,我們就可以了解這些東西,甚至我們還有機會看到一些課本上沒提到的知識,因為課本上的知識是經過五年、十年,千錘百鍊後沈澱下來的。
  但是 Computer Science 進展得相當快,全世界變化得很快,發展很快的東西不一定會在課本上,課本上有的是最基本的知識,因此在這過程中就能養成主動、積極學習的態度,在過程中你會讀很多東西,這些東西可能不像課本一樣寫得很清楚,這時候你就會不斷挖掘,進一步地了解跟學習。像是看了一篇論文的時候,你可能覺得不太懂,你就會再去看三、四篇論文,才能了解原本那篇論文。不過這三、四篇論文你可能也不是很了解,那你又會再去找其他論文。因此,這知識的累積就會非常快,尤其在重要的方向上會更加明顯。這樣思考的過程,是修課無法達到的效果。

所以依老師您的說法,專題會讓我們了解這些基本的知識有什麼用處。那您認為透過專題,能不能也讓我們在進入業界前有實力上的累積?

  經過專題之後,同學們會先了解到自己的興趣,因為在做的過程中,你會知道你喜歡什麼。未來你去找工作,你可能就會知道哪些方向最適合你。有些同學在做專題的過程中,會發現他對某些東西很有興趣,而且在做專題時他會動手,在這動手的過程裡,他能累積的東西是過去修課做 project 時沒有機會學到的。因為課堂上的 project 雖然也是動手,但是是屬於比較小規模性、限定範圍的。專題本身,比較像是 open 、沒有設定框架的,所以在這個過程中同學們就可以培養他的動手能力。
  當然,這對於未來畢業去工作會大有幫助。因為外面的工作很多都是在動手,那你們必須把在課堂上學到的知識轉換成為能力。這個把知識轉換成能力的過程,專題只是提供你第一步。但等你未來出去工作之後呢,你就能進一步培養你的動手能力。所以我認為專題也提供一個很好的方式,不僅幫助你了解你自己,也能提供你學習動手、將知識轉換成為能力的過程。

老師您會要求專題生在畢業前完成一定進度,或是需要參加系上的專題嗎?

  其實不一定。在實驗室裡大學生有很多彈性,每一個人的想法都不太一樣。有些同學對比較深入的研究很有興趣,想要做論文的發表,那他就會比較積極的參與這部份的研究工作,包括一些論文相關的研究跟實驗。那有些同學對某些領域比較有興趣,那他可能就會做很多實務性的工作,會去動手做很多東西。因此,每個人都不太一樣。不過如果有些成果的話,我們還是會比較建議同學們去參加一些比賽。

老師您可以給還不太了解自己興趣在哪裡的同學一些選實驗室的建議嗎?

  其實就很像今天這個訪談一樣,同學可以多看看。很多領域可能跟我們想像的不太一樣,就很像你在高中的時候學了物理化學,但你可能不清楚 Computer Science 在做什麼,需要透過一些社團的參與或外面的報章雜誌才有一點了解。所以同樣的,同學們現在修了很多大學部的選修跟必修課程,你可能對某些知識領域還是很模糊、不是很清楚。我覺得系學會現在這樣的活動其實就很好,它讓同學們可以多聽聽、多看看,然後同學就可以去試試看這些主題他有沒有興趣。這樣子的話,對於同學們去找自己有興趣的方向、去從事專題,就會很有幫助。

如果成為您的專題生之後發現研究主題和自己的興趣不合時,應該怎麼辦呢?

  像這種事情我過去二十幾年來也有發生過,每個同學都不太一樣。所以我認為這種事情如果發生,其實都應該跟指導教授做一些討論,把他覺得困難跟感到迷惑的地方和指導教授做一些討論和了解,可以做題目上的調整也好,或是能夠釐清到底這個方向是不是他喜歡的方向的主題。如果經過這樣的討論後發現並不合適,換研究方向或是更換不同的指導教授做新的專題,我想這也是很好的選擇。

如果今天同學已經加入別的實驗室還能跟老師您做專題嗎?

  我覺得這並沒有太大的限制。我認為這有兩個議題,一個是學生自我的時間,還有自己時間的規劃。自我時間的規劃以及工作跟想從事規劃的問題。因為有的人有辦法一次做好幾個題目,就像一個人可以同時有兩個 major 一樣,所以如果他在時間規劃上和能力上沒有問題,我想這是第一個同學必須了解的。第二個議題,跟兩位或多位老師做專題,這也不是問題。通常如果是兩個老師指導做專題,那會是不一樣的題目。
  這兩個題目如果沒有重疊的話,也不會有問題。可是如果重疊的話,我想就得跟兩個指導教授進行討論。因為題目如果有重疊,未來若是進行論文發表,就得看要怎麼處理。所以整個來看的話,我認為找多個教授是沒什麼限制,重點還是在學生自我的規劃,還有時間的調配,以及注意題目有沒有重疊,因為這會使未來成果發表時可能得經過協調。

其他:就老師您的觀察,和香港的學生相比,我們系上的學生有什麼能力應該要再加強嗎?

  有一個方向我覺得我們系上同學可以更努力。香港跟台灣的教學環境、工作環境有一點比較不一樣的是,香港的大學提供一個全英文的學習環境。在香港,我不管在開會也好,跟同學們的互動也好,全部都是以英文在進行的。當然,我們臺大的學生非常優秀,所以英文應該不是問題,問題是在於同學應該多花一點時間練習。我覺得我們的學生該多去練習用英文報告、閱讀,多找一些機會用英文跟其他人報告、溝通,培養自己的這種能力,這會對未來的個人發展很有幫助。

  Computer Science 是一個很國際化的領域,臺大的老師學術上的研究跟成果絕對不亞於美國、歐洲、亞洲如香港的教授,我想我們臺大資訊系的同學也是很優秀的。重點在於大家必須要有一個想法,就是不管你未來是在工作、在學習,當你在面對世界競爭的時候,英文是一個國際主流語言,所以你需要學會用英文跟人溝通、給報告與演講,這是一個重要的練習。我們的同學學習能力與速度很快,不過可能還是要先讓自己有一個這樣的心態準備。
  因為就算你在臺灣工作,你不選擇出國,可是你不要忘記,你未來工作的環境,可能有很多客戶在外國,你就需要跟客戶做很多互動跟溝通。你如果做的不錯可能會升職,你管理的範圍或許就不只在臺灣,可能會是大中華或其它地區,你也可能到其它地方去工作。像是我很多博士班、碩士班的學生,現在有不少人在臺灣以外的地方工作,例如我的博士畢業生有一個在德國當教授,有一個在香港中文大學當教授。所以本系畢業生不見得都待臺灣。甚至我有一個碩士班畢業學生,他交換到美國一段時間,之後就留在美國工作。所以 Computer Science 本來就是一個很國際化的學科。

  臺灣大學的研究和教學受到世界學術界與工業界的肯定,我們同學的專業能力也是不會讓人有疑問的,但是我們必須要瞭解,未來是要加入國際社會的運作,這是好的也是壞的一點,你們要面臨國際性的競爭,但是你們也有全世界的機會。

謝謝老師的講解。那老師您針對專題還有什麼要補充的嗎?

  是沒有什麼要補充的。不過最後我還是要鼓勵所有的同學應該要修專題,回過頭來學習把知識轉換成能力,並且學習把視野打開,你會看到很多新的東西、可以發展的方向,對你未來個人成長一定有很大的幫助。謝謝。