博士課程3年間を終えるにあたって

2023年3月28日
忙しい方は要点が書いてある7章だけを読んでもらえればと思います。

1. はじめに

「終える」と書いてみたものの、別に3年で学位を取ったわけではなく、(単位取得)退学により「終え」ます。 とはいえ学位取得を諦めているわけではなく、学位取得の外部論文発表要件はすでに満たしており、予備審査も終えていて、この先半年でD論を書き公聴会・最終審査を開く予定です。 3年での学位取得には外部論文の採択が遅すぎたのです。 ちょっとのんびりしすぎました。 で、これから博士課程に進学しようか迷っている人の後押しになるといいなと願って、この怪文書を残します。 2 ~ 5章では自分の博士課程がどういったものであったかを、6章以降で少しまとめっぽいことを話します。 注意点ですが、自分の所属は情報工学分野で、他の分野には当てはまらないことも多々あるかと思います。

2. 進学に際して

自分が博士進学を決めたのはM1の3月くらいでした。 直前まで修士修了後は企業で働くつもりで、ある会社の採用面接を受け内定をもらっている状態でした。 採用面接を受け始める時点では博士進学意思はほとんどなかったのですが、とある面接で「君は企業で働くより大学などでの研究職のほうが向いている」と言われ、色々考え直してしまったのでした。 結局その会社から内定をいただきましたが、辞退させていただき博士課程へ進学しました。 辞退したにも拘らず、その会社の方から「学べるときに学んできなさい」と後押ししていただいたのはとても嬉しかったです。

両親に博士課程へ進学すること伝えるに当たり、「学費や家賃、生活費はすべて自分で払う」ことを同時に伝えました。 特に反対されることもなく、後押ししてもらった覚えがあります。 もともと修士の時点で家賃や生活費は自分で払っていて、経済的にもほとんど独立していましたし、好きなようにすべきと思っていてくれたのだと思います。

「何がしたくて博士課程へ進学したのか?」ですが、これは自分でもびっくりするくらい漠然としたものです。 決して博士号の学位が欲しかったわけではありません。 当時量子回路シミュレーションの研究を少ししており、スパコン全系を用いたシミュレーションに憧れていました。 ですが、これは修論のテーマとは別物で、修士のうちにあまり時間を割けないことは分かっていたので、博士へ進学してやろうと思っていた次第です。 当然なのですが、既に大規模シミュレーションの論文は出ており、単にスパコン全系で計算しただけでは論文にならないことは分かっていました。 そんなこともあり、博士に進学したところで論文は1本も出ず、1~2年で中退するのだろうなと思いながら進学を決めました。 大規模計算のロマンを追った無計画進学です。

ちなみに英語はダメダメです。 当時英語での論文は1本も書いたことはありませんでした。 10分程度の英語での発表は経験していましたが、原稿を丸暗記で、質疑応答はちゃんと答えられなかった覚えがあります。 それも博士課程を途中で中退するという予想の大きな要因でした。

3. 博士課程1年目

博士1年目は端的に言うとニートをしていました。 自分は学会旅行駆動で論文を書くのですが、博士課程初年度にしてCOVID19による学会のオンライン化が進みます。 修士の時の研究でドイツへポスター発表しに行く予定も消えました。 外部発表といえば、1年目も終わる3月のSIAM CSEで修論の内容の一部を話した程度です。 あとは研究室のサーバのメンテナンスと調達に明け暮れ、計算機クラスタを構築するバイトをしたり、R-CCSでMN-Coreで遊ぶインターンをしていました。 研究テーマに関しては、もし学位取得をするならば指導教員にある程度面倒を見てもらえるテーマにすべきで、量子回路シミュレーションはそれに該当しないので、結局修論と似た混合精度数値線形代数方面の研究も細く続けていました。 前述の通りニートなので、暇つぶしに数値線形代数の誤差評価ライブラリやCUDA用のオレオレライブラリ、Tensorコアをカーネル関数内で効率的に使うライブラリなどをちまちま作っていました。 それと、8月くらいにDC2の採用決定の連絡が来てホッとしました。 研究室の先輩方が皆学振を取っていたので、取れないと肩身がちょっと狭かったのです。 この頃はバイトとインターン、RA、つばめ博士学生奨学金で食いつないでいました。

4. 博士課程2年目

4月中頃に、ふとしたきっかけで、NVIDIA A100上で世界一速い(単精度の理論ピーク性能より速い)単精度行列積をTensorコアでエミュレートする方法(研究A)をひらめきます。 手法自体の理論評価は昔からありますが、それを単純にTensorコアで計算しただけでは単精度をエミュレートできず、そこをどうにかした、みたいな研究です。 指導教員から「単純な行列積を速くする研究はNVIDIAに絶対に勝てないからやるな。その研究にのめり込むと卒業が遅れる・できなくなる。」と言われていたのですが、やってしまいました。 これは卒業要件(論文2本)の1本目と、後に山下記念研究賞をいただくこととなるHPC研究会での発表となりました。 また、Exascale Computing Project (ECP)のmultiprecision team meetingや京大のRIMSでの発表にお呼びいただき、発表してきました。 1本目の論文を(ある程度は)自力で書いたことで少し自信がつき、1年目に暇つぶしで作っていたTensorコア用のライブラリなどを論文化します(研究B。2度rejectされ、3度目の会議でaccept)。 10月くらいからはNVIDIAのインターンの面接が始まり、自分の英語がアレなのと、面倒を見てくれた(?)人事の人がアホなのとで、大変精神的に疲弊していきます。 結局ありがたいことにインターンの内定をいただき、2月半ばから開始したわけですが、同時期に卒業要件論文2本目になり得る研究(研究C。現在2度reject、3度目でacceptなるか?)を思いつき、日中インターン、朝と夜に研究、みたいな生活を送り始めます。 この時、1年目に暇つぶしに作っていた各種ライブラリが応用でき、研究を速く進めることができました。

5. 博士課程3年目

学振は累計6ヶ月までインターンを許しているので、その限度の8月半ばまでNVIDIAのインターンが続きます。 それとは別に、来年度からの身の振り方を決めなければいけないので、以前インターンをさせてもらった1社の採用プロセスを進み、5月末にありがたいことにオファーをいただきました。 6月にはIHPCSSでギリシャへ行き、毎晩パーティをし、当然のように現地でコロナにかかります。 幸いなことに(?)帰国に必要な陰性証明は何故か発行され(?)、無事帰国します(??)。 後の話ですが、この時一緒に日本から参加した学生と論文を書き、これが卒業要件の2本目となります(研究D)。 NVIDIAのインターンの方でも、キャッチアップのつもりで最初の2週間くらいでやっていた内容がSC22のポスターに採択され、ダラスへ発表しに行くこととなります。 趣味でソフトウェア上で浮動小数点数フォーマットをいくつか作ってきましたが、初めて実用に耐えるものができ、非常に嬉しいかったです。 ポスターにも浮動小数点数好きが何人か来てくれて、とても良い議論ができました。 NVIDIAでのインターンが終わったあとで、今度はPEZYでバイトをさせてもらっていました。 オフィスで振り向けばそこに液浸槽がある環境は落ち着きます。 NVIDIAのGPUはよくもこう簡単にバンド幅を出せるなぁ、、と言う気持ちになります。 内容はHPC研究会で発表しました。 11月中旬に学位申請があり、その時点で卒業要件が満ちていなかったので、3年での卒業ができないことが確定します。 年明けには卒業要件には使えない研究Bのacceptが決まりシンガポールに発表しに行きました。 その出国前日に研究Cのacceptが決まり要件が満ちました。 研究Dはrebuttalは終わり、結果待ちです。 博士論文の進捗は良くなく、というのも、もっと期日の近い締め切りに向けて別の論文(研究E)を書いているところです。 こちらの研究は7月の国内学会で雑に発表者に雑に質問をしていたら、それがきっかけでその指導教員の先生との間で始まったものです。 雑でいいから質問はたくさんしてみるものですね。

博士を退学し、4月からは2日間文字通り「無職」を経験した後、とある会社へ就職予定です。 結局2社からオファーをいただき、どちらも魅力的で非常に迷いながらもなんとか選びました。。

6. 博士課程中に意識的にやっていたこと

研究室外のコミュニティに属する

バイトやインターン、本の輪読会などに参加し、研究室外の方と日常的に接するようにしていました。 あとはHPC系の情報が降ってくる変なSlackの人たちとお肉を食べに行ったり。 (結局ありませんでしたが、)研究室が嫌になったときに身を置ける場所をいくつか用意しておくことは大切かと思っています。 また、博士課程1年目よりGPUスパコンを有する大学・研究所とエヌビディアがやっているGPUミニキャンプのメンターをやらせていただき、世の中にどのような計算需要があるのかを少し見ようともしていました。 これでたくさんの先生方とも知り合うことができ、研究の話をさせていただいたりもしました。

自分の余裕度を測る指標を持つ

自分がどれほど焦っているかどうかを測る指標を持つようにしていました。 やはり焦っている時は何をしてもダメなので、それを検出することを目的としています。 例えば「赤信号を守れるか」「どれほどの頻度で銭湯へ体が向かうか」「どれほどの頻度でプリンを自作するか」「睡眠時間はどれほどか」などです。

自分の研究内容を誰かに見てもらう

できれば研究室外の人に、です。 査読なしの国内学会は業績にならないから〜なんて言っていないで、ポンポン発表する機会を作っていました。 誰かに見てもらい議論することで、新しい研究につながったりする気もしていたので。 (オンラインだと雑な議論が難しいのですよね、対面ありがたや。) 研究を手伝ってくれそうな人を見つけるという意味でも、自分が何をしているかは積極的に発信したほうがいい思っています。 自分の出身高校で高校生相手に発表する機会などもありました。

研究室の留学生とは英語で話す

今でもそうですが、英語がダメダメです。 ですが、流石に英語からは逃げられないことを悟り、少しずつ慣れていこうと研究室の留学生とは英語で話すよう心がけていました。 まぁ、実態は英語と微妙に互換性のあるオレオレ言語を話している状態かと思っています。

インターン・バイト

博士論文はいつでも書けますが、インターン・バイトは学生のうちだけと言っても過言ではありません。 非常にありがたいことに、働きたいと思っていた会社・研究所は修士の頃から全て行かせていただいており、全てでとても良い経験をさせていただいています。 (どこへ行ったかはページ上部のwhoamiから見られます。) インターンの内容で、当時は大学での研究に全く関係ないと思っていたことがある時研究につながったことがあったり、そもそも大学での研究のスタートがインターンでやっていた内容だったりもします。 指導教員が「みなさんどんどんインターンに行ってください.海外のインターンなどにも挑戦しましょう.年をとるとどんどん動きにくくなるし,失敗のリスクも大きくなります.若いうちにいいものも悪いものも色々経験しましょう.」と言ってくださっており、満足行くまで色々行きました。 (流石にD3の秋に行こうとした時は微妙な雰囲気でしたが。行きましたが。)

GitHub・GitLabの草・海(?)を生やす

どんなにやる気の起きないときでも、全く何もしない日はないようにしました。 これを可視化する上でGitHubの草などは良いツールでした。 3年間基本的には土日祝も含め草が生えるようにしていました。 例外として、D2のときにストレスの影響か身体に変化があったことがあり、その際は土日は休暇とし、絶対に草を生やさないよう運用していました。

お散歩の時間を作る

アイディアが浮かぶ瞬間というのは人それぞれだと思いますが、自分は歩いているときが多いことを認識しており、意識的に歩く時間を作っていました。 他の人ではシャワーを浴びているときや走っている時など、色々パターンはありますよね。

取り敢えずやってみる・論よりrun

これは普段から意識していることですが、考えてもしょうがないことは取り敢えずやってみよう、です。 例えば色々インターンへ行ったりしていますが、もちろん採用選考を受ける時は通るか不安です。 ですが、そんなの受ける前に考えてもしょうがないので、取り敢えず受けてみよう、みたいな感じです。 研究も、うまく行くかわからないアイディアがあったとしても、(やってみるコストがそこまで高くないならば)取り敢えずやってみることで先に進めてきました。

7. 博士課程を人に勧めるか?

決して行かないと心に決めている人以外には勧めると思います。

昔「一人旅が好きな君は博士課程に向いている」と言われたことがあります。 多分ある程度的を得ていて、自分も一人旅を楽しめる人にはおすすめします。 これは、「一人であることを苦と思わず」「目的地と経路・手段を自分で決められる人」に、です。 自分は一人旅の中でも「行き当りばったり旅」を好んでいて、研究方針にも反映されており、毎日これを行っている気分で楽しいです。 では逆に「一人旅が好きでない人には勧めないか?」ですが、取り敢えず博士課程に進学してしまえばいいと思っています。 途中で嫌になったら就職すればいいだけです。 よっっぽど変な会社でない限りは、博士課程中退が不利に働くことはないと思います。 まとめると、迷っているなら取り敢えず進学しましょう、その後のことは後で考えましょう、ということです。 博士課程へ進学するか否かは、多分これくらい気楽に決めていい問題です。 自分の3年間を振り返っても、博士進学時には予想もしていなかった研究テーマを予想もしていなかった人たちとしています。 入る前に考えても仕方ないのです。 最近は博士課程向けの奨学金・研究資金も増えていて、「お金がないから進学しない」は最早良くない言い訳ではないですかね。

8. 博士課程でつらかったこと

もともと学位取得に執着していないこともあり、あまりつらいと思ったことはないです。 強いて言えば、ストレスに身体に変化があってからでないと気がつけない体質(性格?)ですかね。 精神に身体がついてこない、みたいな。 身体さん、3年間でいいので休ませずにでもちゃんと健康に動いて下さい。 (もともと博士課程進学は精神の自傷の目的もあったのですが、精神は全然傷つかなかった。。)

9. 最後に

無計画で雑な理由で博士課程へ進学し、当初の目的である大規模計算は全然していませんが、振り返ると大変楽しく満足の行く博士課程だったかと思います。 比較的華やかな部分を書きましたが、実際は浮動小数点数のメモリダンプや性能プロファイリングの結果とにらめっこをひたすらする地味な日々です。 まだ博士論文が残っていますが、指導教員の先生を始めとし、支えてくださった皆さんありがとうございました。 あと少しよろしくおねがいします。

10. 追記(2023.04.06)

研究Cが無事acceptされました。 役に立つか知らないですけど、reject/accept履歴はこんな感じ。

© 2023 Hiroyuki Ootomo