前書き

気づけば修士2年(1学期)も終わりました。本当に、歳を取るほど体感時間が速くなります。小学生の頃は一学期がものすごく長く感じたのに、今は「え、もう休み?」という感覚です。

いつものように、学期ごとに1本記録しておきます。これだけいろいろ起きたのに書き残さないと、あとで思い出せなくて勿体ないので。

今学期は本当にいろいろありました。授業を2つ取り、TA を2つ受け持ち、10月は鐵人賽に参加して1カ月間動画を作り、国網中心(NCHC)でバイトをし、美術サークルにも引き続き参加し、さらに写真という新しい趣味も増えました。

交大の夕方のバスケットコート

(交大の夕方のバスケットコート)

履修

今学期は「機器学習ハードウェア設計(Accelerator Architectures for Machine Learning, AAML)」と「作業系統(Operating Systems, OS)」を取り、これで卒業要件の8科目を全部取り終えました。

AAML は私にとって嬉しい驚きでした。葉宗泰先生は新任の先生で、これは交大資工での初めての授業です。なぜ驚きかというと、私はずっと「AI」という言葉が大嫌いで、どうせ煽り文句だろうと思っていたからです。しかも私は AI に対してずっと苦手意識があり、いわゆる「領域力」が低い。Deep Learning が何なのかも、基礎知識は勉強したものの「分かった」という感覚がありませんでした。でもこの授業の最初の DL 解説で、急に腑に落ちたんですよね。長いこと引き延ばしてようやく悟ったのか、それとも葉宗泰先生がシステム寄りのソフト・ハード設計で私の背景に近く、話が吸収しやすかったのかもしれません。

AI というものを私は4つの層に分けています。応用シナリオ、AI モデル(あるいは AI アルゴリズム)、パラメータ調整(細かなカスタマイズ)、そしてシステムのソフト・ハードです。成功する AI サービスにはこの4つすべてが必要です。まず解きたい課題があり、例えばデバイスで動物を認識したいとします。すると使えるモデルが必要で、例えば ResNet は画像認識向けのモデルなので、使えるかを判断する。ですがアーキテクチャがあるだけでは不十分で、対象問題に最適なパラメータをどう調整するかも必要です。最後に AI は必ずシステム上で動きます。システムやハードウェアをどう最適化するかは性能に大きく影響します。この授業は主に最後の層を扱っていて、私もそこが一番重要だと思っています。前段をどれだけ頑張っても、AI をハードウェア上で動かしてハードの性能を引き出せなければ全部無駄です。AAML は非常に大きいテーマで、ここで数行で紹介するのは無理なので、機会があれば別記事で書きます。とにかく私はこの授業を強くおすすめします。

もう一つは OS です。OS は学部でも取りましたが、大学院レベルだともっと深くやりますし、負担も重そうではなかったので、もう一度学ぶことにしました。張立平先生の英語授業は特に問題なく、英語も滑らかで、内容も分かりやすかったです。ただ、この授業の最大の問題は、授業の半分が学生による OS 関連の古典論文の発表だったことです。資工所の学生の発表は総じて弱いと思います。英語が流暢でなくてもいいけど、少なくとも発表はできないといけない。でも発表内容もめちゃくちゃでした。1グループが15分で1本の論文を発表します。参考までに、研究室で論文輪読をすると、普通は1本をきちんと説明するのに40分以上かかります。つまり時間が短い場合は、面白いポイントをいくつか選んで深掘りしたり、拡張して説明するのが正しい発表です。でも多くの人は15分で論文全文を「駆け足」で説明しようとして、結果スライドに情報を詰め込みすぎ、さらに英語が弱くてスライドのレイアウトも雑で、結局何も伝わらない。学生発表を入れる意図自体は良いのですが、学生のレベルが低すぎます。学部で OS を取っていなくて必修を補う必要がある人以外には、私はおすすめしません。

以前、台湾で Skymizer にバイトで入っていたとき、Compiler for AI が何のためのものかずっと理解できませんでしたが、AAML を取ってようやく分かりました!

余談ですが、システムソフトウェアの観点から AI 領域に入るなら、ソフトとハードの結合は非常に重要だと思います。Skymizer の惜しい点は自社ハードがないことです。ソフトウェアサービスだけを提供していますが、AI モデルは高度にカスタムされたハードウェアを必要とすることが多い。一方で顧客側には AI 最適化ハードを自分で設計する能力がないことが多く、結果として NVDLA のような市場の既製ハードを使うしかありません。でも AI モデルはハード設計によってさらに大きな高速化が可能で、これはコンパイラだけでは解決できない問題です。こうしたソフト・ハード統合は、耐能(Kneron)や Cerebras などが強いところだと思います。

TA の仕事

今学期は2つの TA をしました。平行程式(Parallel Programming) と数値ソフトウェア開発です。平行程式は指導教員の游逸平先生の授業で、例年は修士2年が引き継ぐのですが、ちょうど私の好きな領域でもあったので、大助(主担当)になり、ほぼ全部を私が担当しました。数値ソフトウェア開発は修士1年からずっと TA をしていて、交大に来た直後に陳永昱先生が人を探していたので、そのまま継続して一緒にやっています。

私は「良い TA になる」と決めているので、平行程式の課題を全部入れ替えました(授業サイト を見れば分かりますが、この授業は課題が本体です)。以前の課題は簡単すぎて大学院レベルに合っていないと思ったからです。これでみんな課題を丸写しすることもできません XD。学生から質問が来たら、私はすぐ返事をします。私の経験では、他の授業の TA はメールを送っても無視することが多いです。課題は2週間に1回で、課題を作るのに1週間、採点に1週間かかるので、実質的にずっと休みがありませんでした。発表の採点もしました。他の授業は雰囲気で点をつけることが多いですが、私は詳細な採点基準を用意して点をつけました。

平行程式期末の学生発表
(平行程式期末の学生発表)

本当は「もらうお金に応じて働く」こともできたのですが、私はあえてたくさんやりました。TA の時給は200くらいで、1科目で週5時間を超えると完全に赤字なのに、私は毎週10〜20時間も使っていました。ここで交大への愚痴を言うと、私は2科目 TA をしていて、月の合計が8000元しかありません(台大の先生も聞いて呆れていましたし、台大の学生より低賃金です)。台大は1科目で少なくとも11000元くらい出るので、そりゃ TA がサボるのも当然です。あんなに少ない給料で誰が真面目に働くんですか。正しいやり方は、仕事量を減らして奨学金だと思って受け取ることです。ただ私は教えることへの熱意が強いだけです。学生も私の本気度は感じているはずです。傑出助教賞が取れるか分かりませんが、名誉があると嬉しいですね。

鐵人賽

鐵人賽に参加するのはもはや恒例行事で、毎年参加しています。これまで Angular、DBMS、Browsers と結構書きました。ただ、記事を書くのは本当に疲れます。私の「高品質」な記事は普通、数日かけて書きます。鐵人賽で事前に原稿を貯めていない場合、1日で書き上げた記事はほぼゴミ記事になります。今年は自分を疲れさせたくないし、クオリティの低い記事も書きたくありませんでした。そこで動画組に参加することにしました。ずっと作りたかった動画シリーズ「拯救資工系學生的基本素養」があったからです。

この動画シリーズを作る前に、私は「資工系所学生の基本素養」という記事を書きました。そこでは「資工の学生が知っておくべき重要なスキルだけど、学校は教えてくれないので自分で学ばなければならない」という内容を書いています。この記事は動画シリーズの導読(イントロ)で、動画ではさらに踏み込んで、私が重要だと思う知識を自分で教えました。

このシリーズは初心者にとって実用的な知識だと思うので、ぜひ後輩に勧めてください。教育関係者にももっと活用してほしいです。

例えば、資工2年の学妹が「ブラインドタッチと Vim ができない」と言ったとき、私は「学習の心構えを1本で話すべきだ」と思いました。また、授業プロジェクトのチームメイトが「API のつなぎ方が分からない」と言ったとき、私は「API と Server とは何か」を説明する必要があると分かりました。企業インターン経験がない、あるいは大規模 OSS に参加したことがない学生は、Git 操作も十分に慣れていないことが多いです。さらに最近は、資工の学生だけでなく、より多くの人がプログラミングを書き始めています。つまり、すべての開発者がこうした基本素養を備えるべきです。

大学受験のとき、みんな必読の「搶救國文大作戦」を覚えていますか。今は私たちも自分のプログラミング能力を「拯救」しないといけません。私の目的は、資工の学生が学校でも就活でも試されても耐えられるようにすることです。私の実力はそこそこですが、私より実力がある人の中で、誰が毎日何時間も使って動画を撮るでしょうか。このシリーズは毎日4〜5時間かけて編集しました。完成後は「意味のあることをやった」と誇りに思っています。唯一の心残りは、なぜか佳作すら取れなかったことです。

美術サークル

修士1年から美術サークルに入り、その頃は創作への勢いがすごかったです。今はそこまでではないかもしれませんが、それでも描くのは楽しいです。そして美術サークルでは素晴らしい友人がたくさんできました。こういう藝文系サークルの友情は長続きしやすいと思います。台大で参加していたサークルは仕事系が多く、イベントが終わると繋がりもなくなって連絡しなくなりました。でも美術サークルはみんなアートが好きで、共通の興味で生まれる繋がりはより強いのかもしれません。

(人体裸体素描)

今年は幹部もやりました。修士生で幹部をやるのは珍しいと思いますが、私は小さな網宣(SNS担当)で、ひたすら写真を撮って粉専に投稿する係です。この仕事はけっこう楽しくて、自分が写真に興味があることにも気づきました。普段の社課では、絵を練習するより、みんなが描いている姿や作品を撮るほうが好きでした。なので後半は、半分は絵を描いて、残り半分はあちこち撮っていました。興味があれば、普段の活動写真を 美術社の粉専 で見てみてください。

(先生の人物油絵デモ)

国網中心

国網中心(NCHC)については前回の記事でも書きました。もともとは SmartNICs に触りたかったのが理由です。SmartNICs は簡単に言えばプロセッサが載った NIC で、データセンターでネットワークやデータ処理を加速する用途でよく使われます。しかしベンダーがずっと遅れて、去年の6月には使えると思っていたのに、実際に届いたのは10月でした。サーバーに挿しても装置全体に不具合が多く、結局この学期が終わっても SmartNICs を本格的に研究できませんでした。夏休みに関連論文はたくさん読みましたが、読んだだけだと感覚が掴めないので、やはり実機を触って初めて「何をやっているか」が分かると思います。

その後、別プロジェクトに回されて Full Stack をやることになりました。私は Full Stack にあまり興味がありません。学部時代にソフトウェア会社でバイトしてすでにたくさんやったし、私の中ではどちらかというと粗仕事に近いからです。でも仕方がない。触る予定だった機材がずっと整っていないので、国網中心では他のプロジェクト開発を手伝うしかありませんでした。ただ最近 SmartNICs の設備はもうそろそろ整うはずなので、次の学期には関連研究を始められることを期待しています。

国網中心でバイトして一番面白いのは「中で何をしているかが分かる」ことだと思います。地下のスーパーコンピュータ機房も見学できました。機房に入るには顔の登録が必要で、出入りのたびにスキャンします。中はよく見るスパコンの機房そのものですが、実際に入って体感するのはやはり良いです(ただし本当にうるさい)。ラックがたくさん並んでいて、1ラックで数百万くらいします。こういう設備は交大では普通触れません。以前、GPU を取り外す作業も手伝ったのですが、引き出しを抜く必要があり、ラックの中には複数の段があり、1段がほぼ100kgということもあります。数人で協力しないと外せません。とにかく、良い経験でした。

影響が大きかった人たち

今学期、周りにいて私に大きな影響を与えた人について少し書きたいです。

一人目は、数値ソフトウェア開発の先生である 陳永昱 です。最初は単に TA だったのですが、協力も順調でした。その後、私は「実は高性能計算(HPC)にとても興味がある」と話しました。先生は私が国網(先生の世代では国高と呼ぶそうです)でバイトしていることを以前から知っていましたが、ただのバイトだと思っていたようです(実際、今学期はそうなってしまいました 😅)。私は国網で HPC の研究や設備に触れたくて行ったのですが、先生は「自分も昔 HPC 関連をやっていた」と教えてくれました。アメリカでは NASA の研究計画をやっていて、台湾に戻ってからは中科院でミサイル研究もしていたそうです。どれも大量計算が必要なテーマです。今は Synopsys にいて、ある意味でやはり HPC に関係しています。

私はもともと HPC をかなり抽象的にしか理解していませんでした。洪士灝先生からは基盤(インフラ)の観点で学びましたが、陳永昱先生は機械工学出身で、応用の観点で理解しています。これは私にとってとても新鮮でした。学界と業界にはやはり明確な違いがあると感じます。陳永昱先生は技術の議論をするとき、いつも「それで儲かるの?」と聞きます。もちろん世界の奥妙を探索すること自体が悪いという話ではなく、ただ人は結局食べていかなきゃいけない(?)。先生と話すたびに衝撃を受けます。先生が言うことが全部正しいとは言えませんが、今まで考えたことがない視点を与えてくれます。多くの場合、私はその視点に納得しています。

もう一人は、学部で DBMS を教えてくれた先生の 駱明凌 です。先生が台大に戻って教えたのは、すでに退職していて、社会に還元したいという気持ちから DBMS を教えていたからです。卒業後も連絡を取り合っていて、しばらく DBMS にハマっていた時期には指導をお願いしようと思ったこともありました。今学期は一度話をして、かなりいろいろ話しました。今まで先生のストーリーをちゃんと聞く機会がなかったので、学生時代から引退までの話を一気に聞きました。私はこういう話を聞くのが好きで、そこから学べることがあると思います。さらに最近先生が起業したことも知りました。いつの間にか私は起業にそこまで興味がなくなっていましたが、話したあと、また「チャンスがあれば必ず起業したい」と思うようになりました。会社名もすでに決めています。「微中子科技股份有限公司」です。いつか実現したらいいですね。

実際、普段接する人は誰でも、多少なりとも私に影響や啓発を与えてくれていると思います。研究室の同僚、サークルの友人、授業の同級生、玉山奨学金で知り合った友人など。私が人と関わるのが好きな理由でもあります。

研究

夏休みの研究進捗はわりと速く、プログラムの大枠は夏休みのうちにほぼできていました。今学期は進捗が遅くて、主に時間の半分を授業課題に、もう半分を TA に使ってしまい、研究に時間が回りませんでした。さらに研究も少し遠回りして、最近先生と議論してテーマを絞ったので、これからは安定した進捗が出せるはずです。目標は次の学期に口試を終えて論文を書き上げることです。来年度はイタリア交換に行く予定なので、出国前に卒業条件を満たして、帰国後はすぐ卒業できるようにしたいです。あるいは、もしコロナで交換に行けない不運があっても、そのときはそのまま卒業できるようにしておきたい。

写真

写真を撮ることにはずっと興味がありました。以前は iPhone 11 で撮れば十分だと思っていたのですが、やはり制限が多すぎます。遠くを撮りたい、夜景を撮りたい、というと差が大きすぎる。そこでカメラを買いました。いろいろ調べた結果、富士の X-S10 に決めました。去年末に出た新機で、他社の中級ミラーレスと比べると CP 値はかなり高いと思い、購入しました。写真は美術に続いて新しく育てている趣味で、今は真面目に練習しています。もっと上手く撮れるようになりたいです。興味があれば私の ig: @liu_an_chi をフォローしてみてください。写真作品を載せています。

結論

結論がないと変な感じなので一応書くと、今学期も結構いろいろやりました。交大は本当に悪くなくて、毎日がなかなか精彩でした。