型落ちゲーミングPCからはじめる自宅Kubernetes + GPU環境
この記事は whywaita Advent Calendar 2023 の23日目です。
皆さんは whywaita Advent Calendar とは何かご存じでしょうか?私はよくわからないまま参加しています。whywaitaらしき人物に事情を伺うと 2019年のほうれん草に関する記事 のURLを貼られて、さらによくわからなくなりました。
一方、近年は大規模言語モデルや生成AIの研究開発・それらを利用したサービスが極めて活発になっており、whywaita氏と関係が1mmもないとは辛うじて言い切れない株式会社サイバーエージェントが 日本語LLMを一般公開する など、国内外で大きな盛り上がりを見せています。
また、現代の一般のITエンジニアの自宅には「世代交代などで今は使われなくなったGPUマシン」が眠っている確率が68.3%程度ある[要出展]と言われており、廃棄するのが勿体ないor面倒くさいという理由で計算資源が放置されているケースが多々あります。
そこで今回はそうした休眠中の計算資源を再利用し、サイバーエージェントの公開する日本語LLMである OpenCalm の動作環境を整備して、 「whywaita advent calendar とは何か?」と聞いてみることにしました。
真面目に向き合う気持ちはないので どんな環境で動かしてもよいのですが、折角なので自宅にある型落ちのゲーミングPCを使って自宅にUbuntu Serverを立てて、その上でKubernetes + GPU環境を構築しましょう。
今時の一般のご家庭には型落ちのゲーミングPCはその辺に無限個くらい転がっているはずですからね。*1
- 1. Ubuntu Server と NVIDIA Driver のインストール
- 2. Docker + NVIDIA Container Toolkit のインストール
- 3. GPU + Kubernetes (Minikube) 環境の構築
- Minikube
- Minikube + GPU
- 4. OpenCalm のモデルを動かしてみる
- PyTorchイメージのデプロイ
- OpenCalmの実行
- 5. OpenCalm に whywaita Advent Calendar について聞く
- 完走した感想
大学研究員から一般キラキラIT企業への転職エントリ
前回のCKA取得RTAの記事で「今の転職活動の役に立てたくて~」みたいな話を書いていましたが、実は記事を書いて1週間くらいで無事に転職活動が終わっていて、2022年7月頃から株式会社サイバーエージェントに入社してインフラエンジニアをやっていました。
転職直後は引っ越しとか退職とか仕事でバタバタしていたものの、試用期間も終わった頃には「そろそろ退職&転職エントリを書くか…」という気持ちが何度か湧き上がっていたのですが、勢いが足りずにズルズルと先延ばし、そろそろ半年くらい経過してしまいそうな今日この頃。 流石に先延ばしが過ぎたので、アドベントカレンダー記事が乱立する時期にしれっと書いておこうと思った次第です。
ということで、今年の人生の変化をサクッと振り返りつつ、大学研究員の退職とそのあとの転職活動レポート、あと入社後のやってることみたいなものをつらつらと書いていきます。
転職の経緯
私は元々は東京工業大学*1の情報理工学院の博士課程を単位取得退学したあと、学位審査を延長しながらそのまま同大学で1年ほど研究員をやっていました。
が、退学後に研究員として生きてはいたものの、なかなか実験の進捗も論文の筆も思うように進まず。 そうなると人間なかなか前向きな人生計画を立てるのが難しくなるもので「どうにもこのままでは学位にも人生にも目途が立たないな」「人生の加速度が負になっているなあ」という感覚をヒシヒシと感じていました。
// ここに至る背景は色々あるのですが、最も大きな理由は伝統的HPC分野とコンテナ界隈の価値観の遠さに起因する「自分がやってきたこと」の意義を信じることの難しさにあります。私にとっては価値があると信じてきた研究の意義を、社会にとってどのように「価値がある」ものだと、十分な論拠と共に主張できるか。その論理を最後まで真っ直ぐ立って胸を張って主張できるか。そこで何か迷いが生まれてしまうと、筆が止まってしまいます。迷えば、敗れる―――。
また、当時研究員として雇用されていたプロジェクトの区切りの時期がその頃にあり、研究室の予算的に雇用継続が厳しくなるという事情もあったことから、2022年3月頃から転職先を探していました。
転職活動1社目(Yahoo! Japan)
で、そんなこんなで転職先を探していたところ、修士時代のとても優秀な後輩のすずどらさん(@sz_dr)に声を掛けていただいて、まず一社目としてYahoo! Japanの中途採用を受けてました。
まあ結果を言うと書類選考は通ったものの残念ながら一次面接で落ちてしまったのですが、この時に落ちた原因は自分の中ではハッキリしていて「応募時に日和った結果、自分の専門性を活かせない部署で中途採用を応募してしまった」のでダメでした。
自分のバックグラウンド的にはコンテナ関係の部署に応募すべきであるにもかかわらず、「Kubernetesの周辺知識や実務経験がない」ということから計算基盤関係のジョブに応募するのを躊躇ってしまい、一応はスキル要件を満たしており、一応は関連性があるDevOps関連エンジニア職に応募してみたものの、それでは上手くいくはずもなく、予想通り一次面接で落ちてしまいました。
でもまあ、結果的には興味関心の強い分野から離れたところで仕事をしても、すぐに「なんか違うな」となっていた気がするので、結果的には落とされて良かったな~と今は考えてます。 あと一次面接の受け答えも普通によくなかったですね。カジュアル面談はわりと自然体で話せたんですが。。。
転職活動2社目(サイバーエージェント)
ということで若干凹んだりしながらも「やっぱり一般IT企業でコンテナやるならKubernetes周りの知識は必要だな」「とりあえずKubernetes勉強がてらCKAでも取るか」と思い立って、前回の約1ヶ月でCKAを取得する記事に繋がったわけですね。見事な伏線回収です。
振り返ってもここの判断は良かったと思っていて、資格(CKA)そのものはこのあとも役に立ったことはありませんでしたが、資格を得る過程でシミュレーター等での実践を踏まえてKubernetesの知識を手を動かして学習できたのは良い機会でした。入社してすぐKubernetes触った仕事になったので、今もバリバリ役立ってます。
コンテナの運用とかイメージ構成とか仕様とかつついてたらお金貰える仕事ないかな……(来月から実質無職なので)
— meta (@meta1127) 2022年3月25日
さて、資格勉強と並行して応募先を探しつつこんなことを呟いていたら、今度は博士時代の超優秀な研究室同期のまっきーさん(@makisyu)に「ウチを受けてみる?」と聞かれたので、ホイホイとサイバーエージェントのカジュアル面談を受けに行き、印象も悪くなかったのでそのまま応募してみました。
一般的なパブリックイメージだとサイバーエージェントはキラキラしたIT企業(例:道玄坂の緑の会社[要出典])という印象ですが、エンジニア職(特にインフラ)はそうでもなく、キラキラしてるのはサーバーラックだけということを社会人ドクターをやっていたまっきーさんから元々伺っていたので、普通にインフラエンジニアで応募しました。
今度は同じ轍は踏まぬようにと、面接ではこちらの意向「コンテナ技術関連の計算基盤をやりたい」「仕事上で必要になりそうなKubernetes周辺については、資格(CKA)勉強中」を明確に伝えつつ、あとは聞かれたことを率直に前向きに答える感じで受け答えをしたところ、一ヶ月ほどで内定が出ました。
ちなみに選考過程はカジュアル面談→応募→書類選考→一次面接→二次選考&適正検査→最終面接(物理、渋谷)で、思い返すと役員面接(最終)以外は現在の開発チームメンバーの人と面接になっていたので、現場の人の判断が強いのかなという印象でした。ちなみに面談内容は特にキラキラしておらず、至極真っ当な質問と技術レベルの確認みたいな感じでした。
応募しなかった選考とか
上記の2社の他にも何人かにお声はかけて頂いていて、そのうちの何社か(研究機関含む)は採用ページをチェックして応募する候補には挙げていましたが、最終的に応募したのは上の2社だけでした。 はじめての転職で何社も並行して選考を進めたり、それを材料に給与交渉できるほど器用ではないというのが一番の理由です。
退職と入社と配属先
PC一式と諸々を返却し、デスクを片付けて研究室と大学を出ました。修士2年+博士4.5年+研究員1年と、とても長い間お世話になりました。明日からは再びエンジニアとして生きていきますので、よろしくお願いします。
— meta (@meta1127) 2022年6月30日
で、結果的には2022年6月末で大学の研究員を退職しまして、2022年7月頭から株式会社サイバーエージェントに入社しました。 配属先は CyberAgent Infrastructure Unit (CIU) という、全社的な計算基盤やプライベートクラウドを提供する組織の、社内向けの機械学習基盤や汎用のマネージドKubernetesを提供するサービス等を開発するチームです。
CNCF界隈やKubernetes界隈で有名な青山真也さん(@amsy810)が所属するチームですね。
ちなみに完全に余談ですが、同じ部署内で苗字(Aoyama)と名前(Kento)の両方で被っているつよつよエンジニアな人がそれぞれ居て、良い感じにnamespaceに混乱を招いています。 上で呼ばれても下で呼ばれても二人ずつ振り返るみたいな状態です。
これから
現在は入社して5ヶ月ほど経過したところですが、今のところはKubernetesを通してコンテナ周辺のエコシステムを触れながら機械学習基盤のサービス開発に携われており、おおむね入社前に想像していた業務がやれているかな、という感じです。 技術的に興味のある分野の仕事ができていて、またチームにも(主観的には)馴染めているので、今のところは仕事自体は楽しくやれてます。 元気にやれてます。まともな額のお給料、美味しいです。*2。 会社のお金で食べるご飯、美味しいです。
博士の学位審査どうするの?
第22条 博士後期課程に3年以上在学し,所定の単位を修得し,退学した者が,退学時より4年以内に論文を提出した場合は,第11条の規定にかかわらず,学位規程第5条第1項該当者として取扱うことができるものとする。
タイムリミットは……2025年3月31日……!
metaVariable先生の今後の活躍にご期待ください!
余談
「そういえば私もリファラル出せるんですか?」って聞いたら「試用期間終わってるし出せるんじゃない?」みたいに返ってきたので、サイバーエージェントに興味のある知り合いの方は、私に声を掛けてくれるとリファラル出せるかもしれません。We are hiring! ってやつ。
CIUのエンジニア職の募集はこの辺にあると思います。
追記
- 「インフラ人材取るの大変なので誰か来てくれ〜!」って中の人が叫んでました
- カジュアル面談とかは何の準備も要らないので興味があったら気軽に声を掛けてください
Kubernetes実務経験0年から約1ヶ月でCKA取得までの記録
N年振りのブログ記事の執筆ですが、実質1ヶ月くらいでCertified Kubernetes Administrator (CKA)を取得できたので、先人に倣って適当に記録を書こうと思います。
続きを読むKubernetes完全に理解した pic.twitter.com/yqBmboipWE
— meta (@meta1127) 2022年5月6日