前言

轉眼就碩二上結束了,真的是活越老體感時間越快,還記得小學覺得一學期過超漫長的,現在覺得怎麼一下又要放假了。

照慣例每學期記錄一篇,感覺發生這麼多事情應該記錄一下,不然以後想不起故事就太可惜了。

這學期也發生滿多事情的,我修了兩門課,接了兩門課助教,十月的時候參加鐵人賽錄了一個月的影片,在國網中心打工,依舊參與美術社,多了一個攝影的興趣。

交大傍晚的籃球場

(交大傍晚的籃球場)

修課

我修了機器學習硬體設計 (Accelerator Architectures for Machine Learning, AAML) 和作業系統 (Operation System, OS),這樣就把畢業門檻的八門課都修滿了。

AAML 對我來說是一個驚喜,葉宗泰助理教授是新進老師,這是他來交大資工第一門課。為啥說是驚喜呢?因為我一直以來都非常討厭「AI」這個詞,我總覺得它就是個噱頭,加上我對 AI 一直有障礙,就是領域力比較低。我甚至一直都沒好好了解過 Deep Learning 是怎麼一回事 ,我當然學過基礎知識,只是沒有懂的感覺,但這門課一開始的 DL 教學讓我抓到對 DL,突然間好像就真的懂了。我覺得要不是拖了這麼久終於開悟,要不就是因為葉宗泰本身是偏系統軟硬體設計,跟我背景比較接近,他講的話比較能被我吸收。

AI 這玩意,我把他歸納成四個層級,應用場景、 AI 模型 (或稱作 AI 的演算法)、參數調校 (細部客製化)、系統軟硬體。一個成功的 AI 服務這四個步驟缺一不可,首先會有個要解決的問題,例如一款裝置要辨識是甚麼動物,這時需要一個可用的模型,例如 RestNet 是專門用來辨識圖片的模型,我們就會判斷他可不可以拿來用,此外但光有模型架構不夠,還需要去看要要解決的問題的參數要怎麼調整最合適,最後 AI 一定會跑在系統上,怎樣優化系統和硬體對效能影響也很大。這門課主要都在講最後一步,也是我覺得最重要的一步,因為前面做得再好,如果你讓 AI 跑在硬體上卻沒發會硬體的效能,那都是白搭。AAML 是一個很大的題目,我這邊無法三言兩語介紹,有機會我再寫文章介紹,總之我很推機器學習硬體設計這門課。

另一堂課是 OS,OS 我大學修過,但研究所等級會教比較深入,加上他感覺負擔不會很重,所以就想說再學一次,張立平教授英文授課沒什麼大問題,英文講得很順,內容也講的滿清楚的。這門課最大問題是一半課程是由學生報 OS 相關經典論文,但我覺得資工所學生報告普遍很差,英文講不順也沒關係,至少要會報告吧,但報告內容也一蹋糊塗。一組只有 15 分鐘要報一份 Paper。給大家一個概念,平常實驗室自己報 Paper 通常會需要 40 分鐘或更久來把一篇論文的內容闡述清楚。所以時間很短的情況下,正確的報告方式是挑論文有趣的幾個點特別解釋或加以延伸,但很多人都想要在 15 分鐘內用趕火車的方式把整篇論文內容講完,決果就導致簡報塞了一堆東西,同時因為英文不好,簡報排版雜亂,導致讓人根本聽不懂。這門課報告論文的部分立意良好,只是學生程度太差,除非你是因為大學沒修過 OS 必須來補必修,不然我不會推薦同學去選這門課。

之前在國內 Skymizer 打工的時候從來沒搞懂 Compiler for AI 是幹嘛用的,修完 AAML 總算終於懂了!

題外話,我覺得從系統軟體方向去切入 AI 這塊領域,軟硬體結合十分重要,Skymizer 可惜的地方是沒有自己硬體,他們僅提供軟體服務,但很多時候 AI 模型需要非常客製化的硬體,而客戶通常沒能力自己設計針對 AI 優化的硬體,所以客戶大概也只能拿 NVDLA 之類的市場現成的硬體。可是 AI 模型可以透過硬體設計來做到更大的加速,這就不是單單靠 Compiler 可以解決的問題,而這種軟硬體結合就是耐能、Cerebras 等公司厲害的地方。

助教課

這學期當了兩個助教,平行程式加數值軟體開發。平行程式是指導老師游逸平的課,往年都是由碩二接手,剛好又是我喜歡的領域,所以我就成為大助,基本上東西都我負責。數值軟體開發則是從碩一一直當下來,剛進交大時剛好陳永昱老師在找人,後來就一直持續跟他合作了。

我立志就是要當好助教,所以我把平行程式的作業全部換掉了(可以上課程網站觀摩一下,這門課重點就是寫作業),因為我覺得以前難度太低不符合研究所等級,這下同學也不用想抄作業了XD。此外同學有問題我都是馬上回應,我的經驗是其他課的助教寄信給他都裝死。兩個禮拜有一次作業,我出作業通常要花一個禮拜,改作業又要花一個禮拜,等於每份作業之間我也沒休息到。還有改報告,其他課都是憑感覺給個分數,我給分數都會有很詳細的評分標準。

平行程式期末學生報告
(平行程式期末學生報告)

其實我也可以選擇拿多少錢做多少事,只是我選擇做了很多事。助教時薪算 200,一門課一個禮拜如果我做超做 5 小時,等於就是虧爆了,結果我每個禮拜都花十幾二十小時在上面。不得不黑特一下交大,我接了兩門課,一個月才共拿八千塊(台大老師聽到都傻眼,跟台大同學還要比低薪),人家台大一門課好歹也給一萬一,難怪一般的助教都擺爛,給那麼少錢誰要做事。事實上正確的做法應該是少做事,反正當獎學金領,只是我特別有教學熱忱罷了。同學應該也有感受到我的認真,不知道能不能拿到傑出助教獎,有個榮耀還是會開心點。

鐵人賽

參加鐵人賽可以說是例行公事了,每年都會參加一下,從之前的 Angular、DBMS 到 Browsers 也寫了不少文章。寫文章其實很累,我高品質的文章通常都是寫了好幾天的,鐵人賽的文章如果不是事先囤稿,一天內生出的文章基本上就是垃圾文,所以今年不想把自己累死,我也不想寫爛文章。所以就決定參加影片組,因為我一直有很想要拍的系列影片「拯救資工系學生的基本素養」。

做這個系列影片之前,我有寫過一篇文章「資工系所學生的基本素養」,裡面說明了我覺得資工系學生需要知道非常重要的技能,但往往學校不會教你,必須自己去學。文章可以說是系列影片的導讀,而我更進一步親自去教學我覺得資工系學生應該要知道的重要知識。

這個系列影片對於初學者而言應該都是滿實用的知識,希望大家可以幫我推薦給你們的學弟妹。也希望教育界人士可以多使用我的教學。

舉例來說,有次資工大二學妹跟我說不會盲打和用 Vim,我就知道該用一集講一下學習心法,或是我修課的資工所組員跟我說不會接 API,我就知道需要解釋甚麼是 API 和 Server。沒有在公司實習過或是參與過大型開源專案的同學,恐怕對 Git 操作都不夠熟練。此外越來越多人開始寫程式,不只是資工系學生而已,所有程式開發者其實都開具備這些基本素養。

大家還記得考大學時大家都必讀「搶救國文大作戰」,現在我們也要「拯救」自己的程式能力,我的目的就是希望資工系學生在不管在學校或是找工作時都經得起考驗。我程度雖然也普普,但程度比我高的人有誰願意每天花好幾個小時拍片,這個系列影片每天都要花我四五個小時處理,但做完之後我很驕傲自己做了一件很有意義的事情,唯一一點遺憾是不知道為啥連佳作都沒拿到。

美術社

碩一就加美術社了,那時候對美術創作充滿衝勁。我覺得現在好像還好了,不過畫畫還是很開心啦。而且在美術社認識很多很棒的朋友,我覺得這種藝文性質的社團友誼比較能維持吧,之前在台大參加的社團都偏工作性質,辦完活動大家就沒羈絆,然後就沒聯絡了。但美術社大家就是對藝術有興趣,共同興趣產生的連結可能更為牢固吧。

(人體裸體素描)

這一年我接了幹部,碩士生還接幹部的也滿少見的,不過我只是當個小小網宣,職責就是拍一堆照片然後分享到粉專。我做這個工作也是滿自得其樂的,發現自己對拍照興趣也滿大的,平常社課與其練習畫畫,我還更喜歡拍大家作畫的樣子和作品。所以後來我都只花一半時間畫畫,剩下一半就到處亂拍。有興趣大家可以去美術社粉專看看平常的活動照片。

(老師示範人像油畫)

國網中心

去國網中心在上一篇有講過了,當時去主要是希望可以碰 SmartNICs,簡單來說就是裝了處理器的網卡,常見使用在資料中心加速網路與資料處理上,但沒想到廠商一直拖,原本以為去年六月就可以開始用,結果十月多網卡才到貨,裝上伺服器後,整個裝置又一堆毛病,所以搞到我這學期都結束了,還沒實際研究 SmartNICs。暑假期間有看了不少相關論文,不過光是看其實很沒感覺,還是要等實際使用才會比較知道在幹嘛。

後來我就被調去其他專案搞 Full Stack,我對 Full Stack 其實很沒興趣,主要是我大學在軟體公司打工已經做很多了,而且在我看來就比較像是粗活,但沒辦法,原本預計要碰的設備一直沒好,在國網中心只好去幫其他專案做開發。不過最近 SmartNICs 設備應該要好了,期待下學期可以開始做相關研究。

在國網中心打工我覺得最有趣的部分,應該就是知道裡面在幹嘛,我還有機會去地下室參觀超級電腦的機房。要進機房還要先人臉建膜,進出都要掃描,裡面就是平常看其他超級電腦機房的樣子,但親自進去感受一下還是挺好的,雖然裡面真的滿吵的就是了。裡面有很多櫃機器,一櫃大概就是幾百萬,這種設備真的平常在交大玩不到的。我有次還去幫忙拆裡面的 GPU,要把機器抽出來,一個櫃子裏面可能有好幾層,一層就可能快一百公斤,要好幾個人一起合作才能把一層卸下來。總之這些都是不錯的體驗。

一些影響很深的人

我想特別講一下這學期我周遭對我影響很大的人。

第一個是數值軟體開發的老師陳永昱,起初我就是當個助教,我們也合作愉快。後來有次我跟他提及其實我對高效能運算 (HPC) 很有興趣,其實他早就知道我在國網(他那個年代都稱國高)打工,只是他以為我就是一般的打工(事實上這學期的確變成這樣😅)。我去國網目的就是希望可以多接觸 HPC 的研究和設備,他才跟我說他以前就是在做 HPC 相關的事情,像是他在美國當時是接 NASA 的研究計畫,後來回台灣也在中科院研究導彈,這些都是需要大量運算的題目。現在他在 Synopsys 某種程度上也算是跟高效能運算有關。

我原本對 HPC 只有很抽象的理解,我從洪士灝身上學習是從基礎建設的角度去看,但陳永昱作為機械工程背景出身,他是從應用層面去理解的,對我來說是非常新的認識。學界和業界我覺得還是有很明顯差別,陳永昱在討論技術上總是問我能不能「賺錢」,當然也不是說單純去探索世界奧妙不好,只是人總是要賺錢餬口(?)和陳永昱聊天我覺得對我來說都是很大的衝擊,我不能肯定他說的都對,但他都會帶給我一些我從沒想過的觀點,大多時候我是認同的。

另一個是大學修 DBMS 的老師駱明凌,他回台大教書主要是因為他當時已經退休,就是抱著回饋社會的心態來教 DBMS。我畢業後一直有和他保持聯絡,有陣子對 DBMS 很感興趣一度想找他指導。這學期有找他聊一次,聊了滿多的,主要是一直沒機會好好聽他的故事,趁這次機會就把他從念書到退休之間的故事都聽過了,我很喜歡聽這種故事,我覺得都可以從中借鏡一些東西。此外得知他最近創業了,曾幾何時突然就對創業沒太大興趣了,聊完之後又覺得未來一定要掌握機會創一下,而且我早就已經想好公司名稱叫甚麼了,就叫做微中子科技股份有限公司,希望哪天會成真。

其實我覺得平常接觸到的人都或多或少對我有啟發或影響,不管是研究室同儕、社團朋友、修課同學甚至玉山獎學金認識到的朋友,這也是我喜歡跟人相處的原因。

研究

暑假的時候研究進度還算快,程式架構基本上都是暑假就寫好的。這學期研究有點進度遲緩,主要是一半時間拿去寫修課作業,另一半時間拿去搞助教課,然後就沒時間了。加上後來研究有點繞遠路,最近跟老師討論有把題目縮限,這樣的話應該能比較確定可以有穩定進度。期望是下學期可以順利口試完和寫好論文。因為我打算下學年度去義大利交換,所以要確保出國前滿足畢業條件,回來才能直接畢業,或是很不幸地因為疫情出不去,到時候也可以直接畢業。

攝影

一直對拍照就滿有興趣的,之前想說用 iPhone11 拍一拍應該還能接受,但後來真的覺得 iPhone 限制還是太多,像是想拍遠的或夜景效果都差太多,所以就買了一台相機。研究了很久決定買富士 X-S10,這是去年年底的新機,相較於其他品牌中階微單機款,我覺得 CP 值應該是最高的,於是就入手了。攝影也是繼美術之後,新培養的興趣,目前還在認真練習中,希望可以越拍越好,大家有興趣也可以追一下我的 ig: @liu_an_chi,裡面會放我的攝影作品。

結論

總覺得沒結論很怪,總之就是這學期也幹了不少事,其實交大是真的滿不錯的,過得很精采。