ローカルLLMとRAGで自分の外部記憶を強化しよう (2)

執筆者:佐藤友昭

※ 「ディスアグリゲーテッドコンピューティングとは何か?」連載記事一覧はこちら


はじめに

このブログ記事の目的は「自分の外部記憶を強化」することである。その主体は私個人である。
会社であれば、例えば従業員の生産性が上がることが、費用対効果と言えるかもしれない。
しかし、私個人の場合、私が働かなくても食えるようにでもならない限り、クルマかそれ以上の値段のするGPGPUを買おうという話にはならないのである。 費用も節約できるところは大いに節約する。
前回同様、今回の記事もLLMのベストプラクティスを紹介するものではない。

前回まで

前回は自宅のPCにGPUを入れてLLM+RAGを動かした話と、会社のサーバにPCIボックスを介してGPUを入れてLLM+RAGを動かした話をした。
後者はエルザジャパン様からPCIボックスとGPUをお借りした。
githubプロジェクト(以下、CDI Infoと呼ぶ)で収集しているCDI(コンポーザブル・ディスアグリゲーティット・インフラストラクチャー)に関する講演文字起こしを使って、CDIに関する質問に答えてくれるシステムを試してみた。
自宅の方は問題ない。GeForce RTX 4070 Ti SUPER JetStream OC 16GB は ¥128,700 もしたが、返品する気には全くならない。
会社の方は、物理的にGPUを内蔵できない既存の1UサーバでLLM+RAGを動作させることが出来た点では良かったが、サーバは2台あり1台が遊んでいる。

サーバ1台にFalcon 4005を介してGPUを接続する構成

CDI InfoでCDIの情報を収集・整理・共有しているという話をしたが、2017年以降に行われた 300 以上の講演内容を調査した。この分野の講演数は年々増えており、特に2023年以降は顕著に増えている。多くのスピーカーによって語られた内容を総合すると、コンピューティングの歴史上、CDIの登場は微細化、並列化に次ぐもので、今日のユースケースはそのまま CDI ソリューションの上に移行していく流れのようである。従来のペースでプロセッサの性能を向上させ続けるために、かつての微細化、並列化に続いて、メモリコントローラの外部化が必要になったということが核にある課題と思われるが、そこに今日のAI/ML ブームで生じたペインポイントやハイパースケーラの経済効率の追求といった要因が重なり、スピーカーによって話の力点の置き方が異なる。例えば、AIモデルに応じてシステムのコンフィグレーションを柔軟に変更できるようにしたいであるとか、コンピューティングリソースを無駄なく使いたいであるとか、電力要件や環境負荷を緩和したいであるといったことなど。

前回、エルザジャパン様からお借りしたPCIボックスはFalcon 4005というPCI Express Gen4 の製品である。これをCDIソリューションの出発点として、いずれ今日のユースケースがすべてCDIソリューション上に移行していくと仮定して、その過程で乗り越える必要がある課題や行うべき努力について考えていくのがメインテーマである。CDIソリューションの発展段階で、何ができるようになって、まだ何ができないか、それをできるようにするためには何が必要か。

つづき(今回)

では、手始めにもう1台のサーバでもGPUを使えるようにするためにはどうすればよいか。
サーバとPCIボックスにPCIブリッジカードを1枚ずつインストールし、PCIブリッジカード間をCDFPケーブル4本で接続する必要がある。ハードウェア以外にPCIボックスにライセンスを購入する必要がある。
Falconのラインアップには予めそのコンフィグレーションが型番(4205)として存在する。そこで今回、Falcon 4205 を1台購入した。
実験用のGPGPUはNVIDIA A2 Tensor Core GPUの新古品を海外から1枚 $613.99 (諸費用別)で2枚購入した。今回、LLM+RAGの性能自体は問わない。
メモリは16GB搭載しているので自宅のと同程度の大きさのモデルは動作すると踏んでいる。

サーバ2台にFalcon 4205を介してGPUとRNICを接続する構成

簡単に手順を紹介する。

4205を設置する。

ケーブルの長さ的に4205はサーバと同じラックか隣のラックに設置する必要がある。本体の大きさ・重量はミニタワーPC程度。
電源投入し、管理用のイーサネットポートとGUI操作用の端末をLAN接続しておく。(IPアドレスの設定については記述を省略)

1台の4205を2台のサーバに接続する。

4205に付属のPCIブリッジカード(ロープロファイル)をサーバの PCIeスロット(x16)にインストールする。
サーバの電源はまだ投入しない。リモートでサーバの電源ON/OFFを制御できることが望ましい。
4205側には既に2枚のPCIブリッジカードがインストールされていた。4205では3枚目以上の増設はできない。(上位機種では可能)

サーバと4205をCDFPケーブルで接続する。

PCIブリッジカードには4つのポートがあり、2枚のカードの同じポート同士をケーブルで接続する。

4205に GPU をインストールする。

4205の PCIe スロットはドロアと呼ばれる箱ごと取れるようになっている。
ドロアの取り外し・取り付けはドロアの電源を落とした状態で行う必要がある。
ドロアの電源ON/OFFはGUIで制御できる。その際、サーバの電源がOFFになっていることを確認するダイアログが表示される。
4205にはPCIeスロット(x16)が4つあり、A2 GPU と ConnectX-6 RNIC を2枚ずつインストールした。後者は2台のサーバで元々使用していたものである。
ドロアの電源を入れ、つづいてサーバの電源を入れる。電源を切るときは逆で、サーバの電源を落とし、続いてドロアの電源を落とす。

「リソース」を「アロケート」する。

今回の場合、GPUとRNICがリソースである。GUIで2台のホストと4個のリソースの接続を設定する。
アロケートはホストにリソースを接続する操作。デアロケートは接続を解除する操作。その際、サーバの電源がOFFになっていることを確認するダイアログが表示される。
"NVIDIA A2" GPU と "Mellanox ConnectX NIC" RNICを2台のサーバに1個ずつアロケートし、サーバの電源を投入する。
サーバの OS が起動すると lspci コマンド等で GPU や RNIC が接続されていることが確認できる。
OSは今回 Ubuntu 22.04 LTS を使用している。特にインストールが必要なソフトウェアはなかった。

この後、前回同様ローカルLLM + RAG をセットアップして使用してみたが、GPUが Falcon 経由であることを意識する必要はなかった。
NVIDIA A2 GPUも 16GB のメモリを搭載しており、使用感は自宅の環境とだいたい同じ。
サーバ機もFalconも冷却ファンの音が大きいので居室での使用には向かない。
蛇足であるが、NVIDIA A2 GPUは非常に小さいのでサーバのPCIeスロット(x8)にもインストールできそう。追加の電源ケーブルも不要。
ただし、自宅の PC では動作しなかった。原因は不明。蚊の羽音のような小さなブザー音が鳴っていた。

NVLink(NVブリッジ)は使用できるのかどうか。

ご存知のように、ローカルLLMで大きなモデルを使用するためにはGPUのメモリ容量が必要になる。
1台のGPUのメモリ容量に収まらない場合も、NVIDIAのGPU製品によっては、2台のGPUをNVLink(NVブリッジ)で接続することで収容できる場合がある。
今回、エルザジャパン様からRTX6000 GPU 2台、エヌビディア様から NVブリッジ1個をお借りして、2台のGPUをNVLink(NVブリッジ)で接続した状態で 4205 を介して使用できることを確認した。

NVブリッジで接続した状態のGPU2台をFalcon 4205を介してサーバに接続する構成

実施した手順を紹介する。

「リソース」を「デアロケート」する。
サーバの電源を落とす。
2台のホストからそれぞれ "NVIDIA A2" をデアロケートする。

4205に GPU をインストールする。
ドロアの電源を落とす。
A2 GPU を取り外し、RTX6000 GPUをインストールする。4205付属の電源ケーブルで接続する。
NVブリッジを取り付ける。
ドロアの電源を入れる。

「リソース」を「アロケート」する。
1台のホストに 2 個の "NVIDA A6000 RTX" を両方アロケートする。
4205 のGUIの表示上では2台のGPU間にNVブリッジがインストールされているかどうかは判別できない。
サーバの電源を入れる。

GPU x 2 が正しくリンクすることを nvidia-smi nvlink --status および nvidia-smi topo --matrix の出力で確認。

LLM+RAG の動作を確認。

念の為、2台のサーバの他方のサーバでも上記手順を確認した。

今回試したことは以上。
物理的にGPUを内蔵できない既存の 1 Uサーバ 2 台に、NVブリッジで接続した状態の RTX6000 GPU 2台を接続し、LLM+RAGを動作させることが出来た。
なお、NVブリッジで接続した状態の2台のGPUを敢えて1台ずつ別々のサーバにアロケートすることは試していない。

感想等

ここにFalcon 4205の価格は書かないが、おそらくRTX6000 GPUを 2台買える程度の価格であろうと想像する。
Falcon 4205 と組み合わせることで NVブリッジと併用することができることはメリットの一つと言えそうである。
現状、2台のホストとGPUの再接続は両方のサーバの電源再投入を伴う。
リソース(GPU等)を共有するホストの台数が多くなるほど電源再投入を省略できる機能が求められるものと思われる。将来的に、シームレスに複数ホスト間でリソースの共有ができるようになるとさらに魅力的である。
11月2日にLinkedIn の CDI Info グループページに掲載した、FSAS Technologies 社の長谷 仁 氏とLei Zhang 氏による"Dynamic Scaling of GPUs for Container Apps with Composable Disaggregated Infrastructure for AI Era" という講演に関するエントリは、11月4日時点でこれまでに私が LinkedIn で紹介させてもらった全てのエントリの中で最多の参照回数(LinkedInのインプレッション数)となっている。

-- 以上 --