AIを使ってしたい100のこと

生成AIの可能性と、それを使って自分自身を表現する楽しさを伝えることを目指しています。

Command R+のローカル実行:高価なグラフィックカードが必要な理由

1. はじめに

ローカルPCでCommand R+を動作させるための方法は主に2つあります。

  1. 高価なグラフィックカードを搭載する:これには300~500万円かかります。
  2. Apple Silicon搭載でメモリが128GB以上のMacを使う:これには70万円以上かかります。

しかし、安いグラフィックカードを複数枚搭載して、Command R+を動作させることはできないのでしょうか?この疑問を解明するために、調査を行いました。

2. 複数のグラフィックカードで代替できないか?

まず、Copilotに以下の質問をしました。

64GBのGPUメモリを持つグラフィックカードが販売されていないようなのですが、24GBのGPUメモリを持つグラフィックカードを3枚購入すれば、Command R+を動作させることができますか?

Copilotの回答は次の通りでした。

一般的に、複数のグラフィックカードのメモリを合計して使用することはできません。各グラフィックカードは独立して動作し、それぞれのメモリは個別に管理されます。したがって、24GBのGPUメモリを持つグラフィックカードを3枚使用しても、それぞれのカードは24GBのメモリしか利用できません。

Command R+のような大規模なAIモデルは、一つのモデルが一つのGPUで動作するように設計されています。そのため、64GBのGPUメモリを必要とする場合、その全てが一つのGPUに存在する必要があります。

したがって、残念ながら24GBのGPUメモリを持つグラフィックカードを3枚使用してCommand R+を動作させることはできません。64GBのGPUメモリを持つグラフィックカードが必要となります。。

2.1. Copilotの回答の要点

  • 各グラフィックカードは独立して動作し、それぞれのメモリは個別に管理されます。
    • 複数のGPUでGPUメモリを共有できないと言っています。つまり、GPUメモリ量は合算にならないということです。
  • Command R+のような大規模なAIモデルは、一つのモデルが一つのGPUで動作するように設計されています。
    • そのため、64GBのGPUメモリを必要とする場合、その全てが一つのGPUに存在する必要があります。

3. Copilotの回答の裏付け

Copilotの回答が正しいのかを確認するために、他の情報源を調査しました。

3.1. 複数のGPUでGPUメモリを共有できないのか?

以下のサイトで確認しました。

www.hpc.co.jp

『NVLink Bridgeで複数GPUを繋いだら、それらが1GPUとして扱えるようになるんでしょ?』という誤解をされているお客様をしばしばお見受けいたします。こちらの記事では、それが誤解であること、また、SLIやUnified Memoryといった関連する情報についても整理して解説いたします。

GPUのメモリ空間は他デバイスから隔絶されています GPU上には演算するためのプロセッサと、データを一時的に置いておくためのメモリ(VRAM)が搭載されています。GPUのメモリを、CUDAで書かれたプログラムから利用するには、cudaMallocでメモリ領域を確保し、cudaMemcpyを使ってホスト(CPU側)のメモリとデータの送受信を行い、GPU上で演算kernelとする関数(以下、GPU-Kernel)を呼び出し、最後にcudaFreeでメモリ領域を解放する、といった流れになります。

ポイントは、GPU-Kernelの中で読み書き可能なメモリ領域はそのGPUのVRAMの中に限られているという点です。

3.2. わかったこと

  • GPUのメモリ空間は他デバイスから隔絶されている。(Copilotが言う通り。これは基本的な大前提。)
  • GPU-Kernelの中で読み書き可能なメモリ領域はそのGPUのVRAMの中に限られている。
  • NVLink Bridge、NVLinkで複数のGPUを繋ぐと、並列計算において、GPU間の中間データの通信が速くなる。しかし、GPU-Kernel(A) が別のGPU(B)のVRAM に読み書きできるようになるわけではない。

4. 物理的な問題

note.com

こちらの記事ではまさに、VRAMが24GBのRTX4090を3枚、1台のPC筐体に収める検討をしています。

しかし、冷却システムや電源、物理的なサイズが障害となって、1台のPCには2枚までしか搭載できなかったようです。そこで、複数台のPCを使って並列化することにしたようです。

ここで重要なのは、並列化に対応したLLMを使用している点です。

5. 複数のグラフィックカードでAIワークロードを動かす事例

検索すると、複数のグラフィックカードをPCに搭載して、ローカルでAIワークロードを動かしている事例がたくさんあります。その場合は、並列化可能なAIワークロードを実行しているようです。

なお、Command R+を複数のGPU環境で動かした例は見当たりませんでした。

6. まとめ

Command R+のような大規模なAIモデルは、一つのモデルが一つのGPUで動作するように設計されています。そのため、64GBのGPUメモリを必要とする場合、その全てが一つのGPUに存在する必要があります。

Command R+自体が、並列化に対応していないのであれば、複数のグラフィックカードを用意しても、それをCommand R+が利用してくれる、ということはないと思われます。

世の中には、複数のグラフィックカードをPCに搭載して、ローカルでAIワークロードを動かしている事例がたくさんあります。それらは、並列化可能なAIワークロードを実行しているようです。一方で、Command R+を複数のGPU環境で動かした例は見当たりませんでした。

5. 感想

複数のグラフィックカードを搭載して、Command R+を実行することができないと分かると、システムメモリをGPUメモリとしても使用できるという、Apple Siliconはとても魅力的に見えてきます。

70万円オーバーというのは高いと思いますが、買えない値段ではないです。

しかし、実際に購入したとして、レスポンスはどのくらいなんでしょう?回答に何分も待たされるようだと、使い物になりません。

各社がAI Readyのハードウェアを準備しているようですが、つまりはそういうことなのか、と分かってきました。将来は、ローカルでAIワークロードを動かせるような、GPUメモリを潤沢に使えるPCやスマートフォンが普及するのでしょう。

AppleはAIで後れを取っていると言われていますが、そうではないのかもしれませんね。