【ITニュース解説】Cuánta memoria necesita un LLM local
2026年11月05日に「Dev.to」が公開したITニュース「Cuánta memoria necesita un LLM local」について初心者にもわかりやすく解説しています。
ITニュース概要
ローカルでLLMを動かすには、必要なメモリがマシンに収まるか事前計算が必須だ。メモリはモデルの重み、KVキャッシュ、オーバーヘッドの合計で決まり、量子化やコンテキスト長で大きく変動する。利用可能メモリの80%以下に抑えないと、動作が不安定になったり遅くなったりするため注意しよう。
ITニュース解説
大規模言語モデル(LLM)を自分のパソコンで動かすには、そのモデルがパソコンのメモリに収まるか、そしてどれくらいの速さで動くかを事前に知っておくことが非常に重要だ。メモリが足りないと、モデルを動かすことすらできなかったり、動かせても極端に遅くなったりする。ここでは、LLMをローカルで動かすために必要なメモリ量を推定する方法と、そのメモリがパソコンで利用可能かを確認する手順を解説する。
まず、LLMの実行に必要なメモリ量は、主に三つの要素の合計で求められる。それは、「モデルの重み(weights)」、「KVキャッシュ(KV cache)」、「オーバーヘッド(overhead)」だ。これらの合計を、パソコンが実際にLLMに提供できる「利用可能なメモリ(usable memory)」と比較し、モデルが実行可能かどうかを判断する。
一つ目の要素である「モデルの重み」は、LLMの知識そのものを表す数値の集まりで、モデルの大きさの大部分を占める。この重みのサイズは、モデルが持つ「パラメータ数」と、それぞれの重みを保存するために使われる「バイト数」によって決まる。パラメータ数が多いほどモデルは大規模になり、より多くのメモリを必要とする。例えば、「14B」という表記は140億(Billion)個のパラメータを持つことを意味する。
重み一つあたりのバイト数は「量子化(quantization)」という技術によって大きく変わる。量子化とは、モデルの精度を保ちつつ、重みを表現するのに必要な情報の量を減らす(圧縮する)技術だ。例えば、通常「FP16」(浮動小数点数16ビット)では重み一つあたり2.0バイトを使うが、「Q4_K_M」といった高度な量子化方式では、同じ重みを0.56バイトで表現できる。これにより、モデル全体のメモリサイズを大幅に削減できるのだ。もし、どの量子化方式が使われているか不明な場合は、最もメモリを消費する「FP16」を仮定して計算すると、実際にメモリが足りなくなるリスクを避けられるため、安全な推定が可能となる。例えば、140億パラメータのモデルをQ4_K_Mで量子化した場合、約7.3ギガバイト(GiB)のメモリが必要になる計算だ。
二つ目の要素は「KVキャッシュ」だ。LLMが文章を生成する際、直前に入力された(または生成された)単語の情報を一時的に記憶しておく必要がある。この記憶される情報が「キー(Key)」と「バリュー(Value)」であり、それらを保存するのがKVキャッシュだ。KVキャッシュのサイズは、モデルの内部構造(層の数、ヘッドの数、ヘッドの次元など)と、LLMに与える「コンテキスト長」によって決まる。コンテキスト長とは、LLMが一度に考慮できる入力の長さ、つまり会話の履歴やテキストの長さを指す。コンテキスト長が長くなればなるほど、過去の情報を多く記憶する必要があるため、KVキャッシュのサイズは線形に増加する。例えば、コンテキスト長が4,096トークンで数ヒャクメガバイト(MiB)だったとしても、32,768トークンまで増えると数ギガバイト(GiB)に達することもある。そのため、モデルが動くかどうかを推定する際には、想定されるコンテキスト長も考慮に入れることが不可欠だ。
三つ目の要素は「オーバーヘッド」だ。これは、モデルの重みやKVキャッシュ以外に、LLMが動作するために必要な一時的な作業領域やバッファなどを指す。一般的には、モデルの重みのおおよそ10%に200メガバイトを加えた程度の容量を目安とすれば良い。140億パラメータのモデルであれば、およそ0.9ギガバイト程度を見積もっておくと良いだろう。
これらの三つの要素、「モデルの重み」「KVキャッシュ」「オーバーヘッド」を合計すると、LLMを動かすために必要な全体のメモリ量(need)が求められる。例えば、140億パラメータのモデルをQ4_K_Mで量子化し、適切なコンテキスト長を考慮すると、必要なメモリはおおよそ8〜9ギガバイトとなる。
次に、この「必要なメモリ量」をパソコンの「利用可能なメモリ」と比較する。ここが多くの人が間違いやすいポイントだ。 パソコンに専用のGPU(グラフィックス処理ユニット)が搭載されている場合、LLMが利用できるのはそのGPUに搭載されているVRAM(ビデオRAM)の容量が上限となる。たとえシステム全体のRAMが豊富にあっても、GPUのVRAMが12ギガバイトであれば、LLMが利用できるのはその12ギガバイトまでだ。
一方、Apple Silicon(Mシリーズチップなど)を搭載したMacの場合、CPUとGPUが同じメモリを共有する「ユニファイドメモリ」方式を採用している。この場合、システム全体のRAMがLLMに利用されるが、オペレーティングシステムやその他のアプリケーションもこのメモリを使用するため、RAMの全てがLLMに割り当てられるわけではない。一般的には、システム全体のRAMの約75%がLLMに利用可能なメモリとして妥当な目安となる。例えば、16ギガバイトのRAMを搭載したMacであれば、約12ギガバイトがLLMに利用可能だと考えられる。
最後に、必要なメモリ量と利用可能なメモリ量を比較して、モデルがパソコンで実行可能かどうかを判断する。 必要なメモリ量が利用可能なメモリの80%以下であれば、モデルは余裕を持って動作し、他のアプリケーションも同時に実行できる可能性が高い。 必要なメモリ量が利用可能なメモリの80%を超え、100%以内であれば、モデルはかろうじてロードできるが、安定動作のためには他のアプリケーションをすべて終了する必要があるかもしれない。 そして、必要なメモリ量が利用可能なメモリの100%を超えてしまうと、パソコンはメモリ不足を補うために、ディスク(ストレージ)を一時的なメモリとして使う「ページング(スワップ)」という処理を開始する。これにより、モデルは動作するものの、極端に処理速度が低下し、実用にならないほど遅くなってしまう。例えば、16ギガバイトのMacの場合、Q4_K_Mの14Bモデル(8.4 GiB)は利用可能メモリの約70%で余裕があり、Q5_K_Mの14Bモデル(10.4 GiB)は87%でギリギリ動作、Q6_K(12.3 GiB)やQ8_0(14.9 GiB)は利用可能メモリを超過するため、実用は難しいと判断できる。
このメモリ量の推定は、モデルが動作するかどうかだけでなく、その「生成速度」にも密接に関わってくる。LLMが新しいトークン(単語や文字の単位)を一つ生成するたびに、モデルの全ての重みをメモリから読み出す必要があるため、メモリ帯域幅(メモリからデータを読み書きする速さ)が生成速度の上限を決めることになる。つまり、モデルのサイズが小さければ小さいほど、同じメモリ帯域幅でより多くのトークンを高速に生成できる。例えば、メモリ帯域幅が100ギガバイト/秒のM3チップの場合、8.4ギガバイトのモデルなら最大で毎秒約12トークン、4.9ギガバイトのモデルなら毎秒約20トークンを生成できる計算となる。実際の速度はこれより遅くなるが、モデル間の相対的な速度の比較には役立つ情報となる。
このように、LLMをローカルで動かす際のメモリ所要量を正確に推定することで、そのモデルがパソコンで問題なく動作するかどうか、そしてどの程度の速度でテキストを生成できるかという、二つの重要な疑問に対する答えを事前に得ることができる。これにより、無駄なダウンロードや設定の手間を省き、効率的なLLM環境の構築に役立てられるだろう。