1. 主要ページへ移動
  2. メニューへ移動
  3. ページ下へ移動

トピックス

記事公開日

【小ネタ】NVIDIAテンソル並列処理機能でAIは速くなるのか?
LM Studioの高速化 前編

はじめに

今年(2026年)の6月1日に、NVIDIAがWindows向けの新SoCを発表しました。RTX Sparkという名前だそうで、CPUはMediaTek設計のARMベース、128GBのユニファイドメモリを搭載し、GPUは同社Blackwellアーキテクチャ1ペタFLOPS、CPUとGPU間のバスをNVLink C2Cでつなぐ・・・ とまあとにかく一般向けとしてはかなり高性能なWindows PCとなりそうなわけです。もちろん、値段もそれなりにするでしょうけど。

で、私が触れたいのはそこではありません。私が触れたいのは、上記発表の一日前にNVIDIAから発表された、Windows PC向けのある技術についてです。それは「テンソル並列処理機能(Tensor Parallelism)」です。これは、一台のPCに二台(枚)以上のグラフィックボードを搭載したときに、複数のグラフィックボードを効率良く使うための技術のことを指します。一般の方だと「それがなにか?」と聞こえるかもしれませんが、オンデバイスAI(ローカルLLM)界隈では結構インパクトの大きい技術なんです。ついに2枚挿しのグラフィックボードが活用できるわけですから。

というわけで、今回はそのインパクトが大きいかもしれない「テンソル並列処理機能」が、本当に効果があり、我々に恩恵を与えるものなのか?ということを検証していきたいと思います。

検証の前に

テンソル並列処理機能を検証する前に、いくつか前提となる事前知っておくべき内容について説明したいと思います。

なぜグラフィックボード2枚挿しなのか?

まずなぜAI用途だとグラフィックボードを2枚挿すことがあるのかを説明したいと思います。

グラフィックボードグラボ)はGPUとVRAMを積んだボードのことを指します。グラフィックボードは正式にはビデオカードと呼ばれますが、その名の通り通常はゲームなどの3DCG生成の高速/高度化や、動画のエンコード/デコードを高速化するなど映像処理ために用いられます。グラボはタワー型などのデスクトップPC向けで後から追加や入れ替えを行う事が前提の部品です。(ただし、通常PCの中で「最も高価な部品」になるため、お気軽に追加入れ替えができるものではありませんが。)

グラボ内のGPUはグラフィック演算をするための専用ICです。複雑な(分岐のある)計算能力はCPUに劣りますが、グラフィック処理のような単純な計算を大量に行うことに特化しその分高速化しています。VRAMはVideo RAMの略で、GPUのための専用高速メモリと呼んで良いでしょう。VRAMは高速が故に普通のメモリ(=メインメモリ)よりも高額になります。とにかく、グラボは特にハイエンドゲームにおいて、画面内のオブジェクトの数や品質、画面解像度やフレームレートに至るまでのゲーム内の様々な見た目に影響を与えるため、どれだけ高性能のグラボを搭載しているのかが「PCゲーマー」と呼ばれる人達のステータスになっています。

fig
グラフィックボード(ASUS製)
Geforce RTX 5060 Ti 16GB

しかし、最近は自分のPCでAIを動かす「オンデバイスAI」のためにグラボを利用する人が増えてきました。AI、特にLLMと呼ばれる生成AIは、大量の行列計算を行う性質があるためにGPUととても相性が良く、ほとんどの人がオンデバイスAIを動かすのにGPUを使っています。もちろん、オンデバイスAIだけでなく、ChatGPTやGeminiなどのクラウドAIにおいても、データセンターにある大量の高性能業務用GPUが、ユーザーからの大量のリクエスト(プロンプト)を処理すべく、バリバリと計算を行っています。いずれにせよ、生成AIはGPUで動かすものであり、CPUはさほど役に立ちません(不要だとは言ってない)。

さて、ゲーム用だったグラボがAI向けにも使われるようになったわけですが、ゲーム向けとAI向けでひとつ大きな違いがあります。それはAI向けの方がVRAMを大量に使用すること。ゲーム用途の場合、VRAMは動いているシーン分のテクスチャやアセットを一時的に置いておく場所という位置付けのため、VRAMのサイズは一定以上あれば十分という傾向にあります。それよりも、ゲームという性質上、大量のポリゴンをリアルタイムに描写する必要があり、それには莫大な計算が必要で、結果的にGPUの計算速度が重視されます。

一方で、AI向けの場合GPUの速度も大事なのですが、大前提としてVRAMの量が最重要視されます。というのも、AIはAIのモデル全てをVRAMに載せなければまともに計算ができないからです。AIの中身が一部でもメインメモリやストレージにスワップされてしまうと、使い物にならないほど低速になってしまいます。そのため、AIを動かすためには、事実上AIを構成するファイル全てがVRAMに載っている必要があると言えます。例えば、Googleの中規模オンデバイスAIであるGemma4 31BではAIのファイルサイズが約19GBありますが、これを動かすためにはその全てがVRAMに載っている必要があります。19GB全てです。当然、これに加えて計算データもVRAMに載っている必要があります。これをゲームで例えれば、「スタートからエンディングまでの、使うか使わないか分からないものも含めた全てのグラフィックデータとユーザーデータを一気にVRAMに載せる」と言っているのと同じです。もちろん、そんな(バカな)作りをしているゲームなどありませんから、AIの使い方がどれだけ特殊か分かって頂けると思います。

グラボはもともとゲーム用です。ゲームで使うVRAMは、フルHDなら8GB、4Kでも16GBあればほとんどのゲームが最高設定に近いレベルで動きます。ですから、グラボのラインナップはVRAM 8GBや12GB、16GBとなっていることが多いです。それは当然です。VRAMを余計に積んで高価にするよりも、GPUを高級・高速にしたほうが、ゲームを動かす分には効果がありますので。一方、AIに必要なのはVRAMの絶対量です。中程度のGPUでいいから、とにかくVRAMの容量と、巨大なデータを一瞬で読み込むVRAMの速度(メモリ帯域幅)が必要です。しかし、まだまだオンデバイスAI向けよりもゲーム向けの方がPC用グラボ市場として大きいため、「GPU重視でVRAMそこそこ」のグラボがほとんどなのです。

というわけで、市場で比較的安価に入手できるグラボは必然的に「GPU重視でVRAMそこそこ」なものになります。しかし、それだとAI勢にとってはVRAMが足りません。そこで、現在よく使われる手段が「グラボ2枚挿し」となります。例えば、8GBのVRAMを持つグラボを2枚PCに載せることで、8GBx2=16GBのVRAMが使えるようになります。多くの場合、16GBのVRAMをもつグラボ1枚買うよりも安価になる、少なくともグラボを買い換えるよりも安価になるため、追加でグラボを載せる方が安価にVRAMを追加できることになります。そんな情勢ですから、AI勢はグラボの追加という手段を選びがちになります。

じゃあ、ゲーム勢もVRAMを増やしたい場合にグラボを追加するのかと問われると、答えは確実にNOです。実は、グラボ2枚挿しはシステム全体のGPU計算速度にほとんど寄与しないことが分かっています。GPUの計算速度を重視するゲーム勢にとって、GPUが速くならないグラボの追加は全くの無駄です。VRAMを増やすなら、グラボごと買い換えて「VRAMを増やしつつGPUを高速にする」という選択肢しかあり得ません。むしろ、遅い側のGPUがボトルネックになりかねない2枚挿しなどデメリットしかないと言って良いでしょう。もちろん「このグラボ2枚挿ししてもGPUは速くならない」というのはAI用途でも同じでした。でも、とにかくVRAMの量がなければ「そもそも動かない」AI勢としては、GPUの速度を無視しても、2枚挿しを選ばざるを得ない状況が少なくなかったのです。

テンソル並列処理機能の登場

改めて、AIを高速に動かすために必要な要素を整理しておきます。

まず最も重要なのが「VRAMの容量」です。AIのデータ本体が収まることはもちろん、AIが思考・記憶するための領域(コンテキスト)も確保しなければならないため、実質的には「AIのファイルサイズ+α」の容量が求められます。

そして2番目に重要なのが「VRAMの速さ」です。メインメモリではなくVRAMにデータを載せる最大の理由は、その圧倒的な速度にあります。なぜ速度が必要かというと、AIは1単語(トークン)を生成するたびに、巨大なデータをVRAMからGPUへ渡し続ける必要があるからです。例えば、サイズが10GBのAIがあるとします。1トークンを生成するのに、この10GBをまるごとGPUへ送って計算させます。もしVRAMの帯域幅が120GB/秒だった場合、1秒間に最大「120 ÷ 10 = 12トークン」を生成できる計算になります。そのため、AIの推論においてはGPU自身の処理能力もさることながら、それ以上に「VRAMからどれだけ高速にデータを読み出せるか(メモリ帯域幅)」が極めて重要になるのです。

これまでのアプリでは、グラボを2枚挿しした場合は、AIファイルを2枚のグラボのVRAMに分割し読み込ませていました。そのため、2つのVRAMの合計容量のAIを読み込むことはできていました。しかし、計算の高速化という面では速くなっていないどころか、むしろオーバーヘッドの分グラボ1枚の時よりも遅くなっているケースも見受けられていました。

その理由は、複数のVRAM(GPU)へのメモリ分割方法にあります。AIは多数のレイヤーに分かれていて、それを順に処理することで答えが出せる(推論できる)ようになっています。各レイヤーは基本的に巨大な行列計算になっています。従来のメモリ分割では、レイヤー毎に分けるという方法を採っていました。例えば、GPUが2つあり2つのVRAMへ分ける場合、レイヤーを前半と後半に分け、前半レイヤーをGPU0へ、後半レイヤーをGPU1へ分割するという方式を採っていました。これをパイプライン並列と呼びます。パイプライン並列では、GPU0に割り振られたレイヤーの全ての計算が終わった後にGPU1へデータを投げるという動作になるため、稼動しているGPUはどちらか片方のみで、結果的にGPU稼働率は50%以下になっています。そのため、GPU1台のときと2台の時で、速度がほとんど変わらないか、何なら後者の方が遅いという現象が発生していました。しかし、この方法はあらゆるAIやデバイスで安定した動作が保証されるため、マルチGPU環境においてVRAMを最大量使う方法としては一般的でした。

このマルチGPU環境で、それぞれのGPUやVRAMをもっと効率的に使おうとして考え出されたのが、テンソル並列処理機能です。これは、NVIDIAが開発した”Megatron-LM”という技術から発展したものです。Megatron-LMは、もともと巨大AIを動かすような大規模なシステムのために考え出されたものです。大規模システムでは、何台もの業務用のグラフィックボードが搭載されたサーバーが使われます。これら大量の業務用グラボを効率良く並列に動かすための技術がMegatron-LMです。このMegatron-LMではある画期的な技術が採用されています。それがテンソル並列と呼ばれる技術で、前述のパイプライン並列とは異なりレイヤー内でデータを切り分けて分割させる技術です。

先ほど、レイヤーの計算は基本的に行列計算であると書きましたが、テンソル並列ではこの行列計算の行列自体を2つ(以上)に切り分けて、それぞれのGPUが行列計算を部分的に行い、最後に合体(All-Reduceと呼ぶ)をさせることで計算結果とするという方法を採ります。一番の負荷である行列計算を完全に並列に実施するので、その部分においてGPUは自分の担当の計算のみを行うだけで良くVRAMの帯域をを他とデバイスとのやり取りに消費することもないため、複数GPUを効率的に動かすことができます。

fig
パイプライン並列とテンソル並列

このMegatronの技術を一般のWindows PCでも動くようにしたのがテンソル並列処理機能(Tensor Parallelism)です。NVIDIAによると、このテンソル並列処理機能により2台GPU環境においては計算速度が最大1.8倍になる、ということです。今回のブログはそれが本当か試してみようというのが趣旨になっていますが、もう少しだけ前提となる情報についてインプットさせてください。

llama.cppとLM Studio

オンデバイスAIを語る上で絶対に外せないのが、llama.cppというAIエンジンです。

AIの本体である「モデル」は、言わばデータファイルの様なもので、それ単体では動きません。AIモデルを動かすためには、エンジンが必要になります。例えると、AIモデルは「楽曲のAACファイル」、エンジンが「音楽プレイヤー」だと思ってください。以前のブログでも少し触れていますが、llama.cppはブルガリアのエンジニア「Georgi Gerganov」がどんなPCでも高速でオンデバイスAIが動くようにと作ったAIエンジンです。そんな始まりは個人作成のエンジンでしたが、今やオンデバイスAIのエンジンにおけるデファクトスタンダードになっています。その名前の由来でもあるMetaのLLaMa、さらにGoogleのGemma、アリババのQwen、フランスのMistral、中国のDeepSeek等々、モデルを作った会社、国に関わらず、現在ほとんどのオンデバイスAIモデルはllama.cppに対応する形式(GGUF)でリリースされています。

このllama.cppの特長は、なんといってもどんなハードウエアであっても最大性能を発揮するべく作られているということです。AI業界では標準となっているNVIDIAのGPUは当然として、AMDのGPU、CPU付属のGPU(iGPU)にも対応していますし、CPU単体の高速計算機能にも対応しています。macOS※1に至っては、むしろWindowsよりも最適化されていますし、なんならRaspberry Piにも最適化されています。私もコンピューターに触れてから長いですが、これほどまでマルチデバイスでの高速化に対応しているアプリケーションはないんじゃないかと思うほどです。

さて、今日の話題であるテンソル並列処理機能ですが、こちらも当然llama.cppに搭載されているのですが、なんとllama.cppの開発陣とNVIDIAのエンジニアが協力して実装した代物なのだそうです。なんだか期待できそうですよね?

実は、これまでテンソル並列を使おうと思ったら、AIモデルから作り直す必要があったんです。しかし、llama.cppというエンジン側にテンソル並列を実装したために、ついにあらゆるAIモデルでテンソル並列が動くようになりました。これは非常に画期的な話で「誰でもオンデバイスAIを高速化できる手段を与えられた」と言っても過言ではありません。グラボを追加するだけでVRAM増強だけでなく高速化まで出来る訳ですから、やらない手はありません。個人ユーザーであっても、マザーボードにグラボを何枚も挿して「○○倍界王拳だ!」なんてことも夢ではなくなったのです。

そして、この素晴らしいllama.cppを、誰でも簡単に使えるようにしたのがLM Studioというアプリです。llama.cppはあくまでAIを動かすためのエンジンのためそのままでは動かすのは難しいのですが、LM Studioを使えば誰でもllama.cppを使ってオンデバイスAIを動かすことができます。LM Studioは今どきのUIを備え、簡単にAIチャットなどができます。さらに、AIモデルのダウンロードも簡単にできるようになっていますし、日本語にも対応しているので、誰でもオンデバイスAIを簡単に始められるはずです。しかも、それでいて、様々な難しい設定がUI上ででき、APIで外部からAIを呼び出すことにも対応していますので、まさに至れり尽くせりのアプリと言えるでしょう。

次回予告

後編では、このllama.cppとLM Studioを使って、テンソル並列処理機能を使うとどれだけ高速になるのか、AIのモデルによって速度が変わるのかなど検証していきたいと思います。それでは、次回をお楽しみに。

(担当M)

※1; Appleシリコンのみ。