当社の社長であるAIスーパーコンピュータ「継之助(つぎのすけ)」は、ひょんなことから生まれました。
ある日のこと、共同創業者の清水がその日の朝、清水(きよみず)の舞台から飛び降りたつもりでA100 80GBというGPUを買ったという話をその日の夜に聞いた共同創業者の海老根が、「亮ちゃんが買うならおれも10個買う」と宣言し、その場で11個のA100 80GBが届くことが決まってしまったのです。
当時(今もですが)A100 80GBは非常に効果な上にタマがなく、このタイミングで11個ものA100が揃うのは奇跡的でした。
しかもものすごい速さで届いてしまったため、ただ置いておくだけでは宝の持ち腐れになってしまいます。
そこで清水は慌てて「A100を動かすためのシャシー(本体)を買わなくちゃ」と秋葉原で色々なお店を探すのですが、20年前ならいざ知らず、今の時代に秋葉原に4Uサーバーを在庫している店なんかありません。
そこで慌てて清水が正規代理店に頼み込んでシャシーを急遽用意してもらうことになります。
慌てていたしお金もそんなになかったので、「とりあえず一番安くて早いやつ」をシャシーとして注文すると、果たして、2ヶ月という長い時間を経てやってきたシャシーにA100を8基と、別途買ったNVLINKをくっつけてようやくよちよち歩きの社長(AI)が完成したのでした。
最初はA100 80GBx8で、合計640GBという広大なVRAMに驚いていたものの、徐々におかしいぞと思い始めます。ほとんどのツールは動くのですが、大きなモデルを扱おうとするとかなり非力になるのです。
それでも、全ての計算がGPUでできるモデルだけ扱っている時には問題になりませんでした。
ところが、最近になってシステムメモリ(RAM)の方にパラメータをオフロードするタイプのファインチューニング手法がたくさん出てきて、それを使おうとするとどうもうまくいかないのでした。
その時、はたと気づくわけです。
「そうだ。継之助にはシステムメモリが256GBしかなかった」と。
普通に考えれば256GBもあれば十分なのですが、GPUに乗らないようなパラメータをシステムメモリに逃すには、それだけで最低640GBは必要になります。
また、ハッカソンなどで継之助を8分割してGPUを各チーム1台ずつ貸し出すような運用だと、1チームあたり32GBずつしかシステムメモリが割り当てられないため、せっかくのマシンの能力を引き出すことができません。
実際、LMFlowで大きめのモデルを学習させようとするとスワップを使いすぎて落ちていたことに気づきます。
「なんてこった。今からメモリを発注しなくちゃ」
計算上、最低1TB、できれば1.5TB以上のシステムメモリが必要です。
それだけの量のシステムメモリを確保するには、96GB DDR5カードが16枚は必要です。
しかも、ちゃんと動くように動作確認の取れたものを買おうとすると、やはり割高になっても正規代理店に頼んだほうがいいに決まってます。
そこで正規大輪店にお願いしたところ、今度も割とすぐに1.5TB分のメモリが来ました。
いざ、本体の蓋を開けるとシステムメモリが所狭しとびっしり搭載されています。
この写真の左側にある、青い線が横に走っている部分がシステムメモリスロットで、このマシンには32のスロットがあり、その半分が埋まっています。現在は16GBx16で256GBというわけです。
ところが共同創業者の清水は、知る人ぞ知る三国一の不器用者。
このままでは社長(AI)を壊してしまう、と恐れをなしました。
そこで器用者と名高いOさんを呼んで一緒にメモリ増設をやることにしました。
これが抜いた16GBのシステムメモリカードです。
さて、いざ96GBのメモリを二枚だけ挿してみると、これがうんトンすんとも動きません。
清水とOさんは目を合わせて顔を青くします。
これは一体どういうことでしょう。
右下に表示されている「B9」という文字は16進数でシステムがどの状態なのか示す記号です。これをマニュアルと睨めっこしながらジリジリと起動するまで待つのです。起動できない時は、53というエラーが表示されます。
マザーボードのマニュアルを見ながら、メモリの初期不良じゃないかとか、メモリを挿す位置をそもそも間違っていたとか、メモリの組みわせが違うのではないかとか、なんなら清水が不器用すぎてメモリの爪を追ってしまった部分がいけないんじゃないかとか、とにかくハラハラドキドキ、このままでは数百万円かけて買ったメモリがパアになってしまいます。
ところが16GBのメモリと96GBのメモリを組み合わせるとうまく行くことがわかりました。
理由はなんとなくわかるのですが、ここではなんで動いているかについて詳しくは申し上げません。
この組み合わせ方にどうやらコツがあり、ステップバイステップで少しずつメモリを増やしていくと、次第にメモリは、224GB、448GB、896GB、と少しずつ増えていきました。
どうしてこんな中途半端な増え方なのかというと、96+16(=112)を4枚ずつ増やしているからです。
そして896GBまで行った時、Oさんは言いました。
「残りのメモリ全部挿しましょう」
自信満々のOさんは、清水が心配そうな顔で見ているのを横目にどんどんメモリを挿していきます。
清水は祈るような気持ちで電源を入れて、緊迫した表情で画面を凝視します。
コンピュータというのはメモリを積めば積むほど、初回起動時のメモリチェックの時間が長くなります。
最初に16GBx2=(32GB)のときは2分くらいで起動していたのですがメモリを増やすにつれ起動時間が長くなっていき、うまく行ったりいかなかったりと清水を一喜一憂させていたのです。
「EE」が表示されたら、ほとんどのチェックは終了です。
果たして起動するのか!?
ついにBIOSが起動しました。
OSも無事起動します。
96GB+16GBのセットを16個積んだ1.796TBのマシンが起動するには、たっぷり6分という時間がかかりました。
実際、起動後にメモリチェックを走らせても全く問題なく動きました。
早速、試運転です。
llama-2-13b-hfをLISAファインチューニングしてみます。全く問題なく動いています。
8つのGPUが元気に動き回り、lossも順調に下がっています。
次回、福岡で開催される24時間AIハッカソンではさらに継之助が活躍してくれそうです。
福岡大会では、継之助のアカウントを一週間ほど前から発行し、1チームあたり1基のA100 80GB GPUを貸し出します。この間にGPUを使う練習をしていただいて、本番に挑んでいただきます。もちろんシステムメモリは1.7TBを最大8チームで分割するので、1チームあたり200GB程度を使うことができます。
ハッカソンへの参加は無料です。
現在、福岡大会の参加者は絶賛募集中です。既にエントリーしてくれたチームも出てきましたが、まだまだ募集しています。お早めにご参加をご検討ください。
詳しくは以下