VRAM
グラフィックカードのメモリは、ローカルで実行できるモデルの規模を左右します。
VRAMとは、GPUが計算に必要なデータを保存するためのメモリです。たとえば、AIモデルや処理中の画像、中間結果などが保存されます。
自分のパソコンでポスター用のイラストを作成する人を想像してみてください。システムメモリは32 GB、グラフィックカードのVRAMは8 GBです。システムメモリにはまだ十分な空きがあるのに、画像生成プログラムに「メモリ不足」と表示されます。一般的な独立型グラフィックカード搭載パソコンでは、この2つの容量はひとつの共有メモリを表しているわけではありません。RAMを増設しても、グラフィックカードの物理メモリは増えません。
VRAMの容量を確認する方法
Windowsでは、タスク マネージャーを開き、「パフォーマンス」タブで使用中のGPUを選びます。独立型グラフィックカードの場合、確認するのは主に専用GPUメモリであり、専用メモリと共有メモリの合計ではありません。グラフィックカードが2枚ある場合は、プログラムがどちらで実行されているかを確認してください。GPUの名称とメモリ容量は、製品の仕様と一致しているはずです。
NVIDIAのカードでは、インストール済みの環境で利用できる場合、nvidia-smiコマンドも使えます。メモリの使用状況やプロセスを確認できますが、今後実行する個々のタスクに必要な容量を正確に予測するものではありません。一部のMacのようにユニファイドメモリを搭載したパソコンでは、仕組みが異なり、アプリ、システム、GPUが共通のメモリを使用します。その容量を、独立型カードのVRAMだけと直接比較しないでください。
AIに必要なメモリ量を左右するもの
モデルのサイズ、重みの保存形式、画像の解像度、同時に生成する結果の数が影響します。言語モデルでは、コンテキストの長さや、次のトークンを処理するために必要なメモリも関係します。学習では、パラメーターの更新に使う追加データを保存するため、通常、学習済みモデルの利用より多くのメモリが必要です。
簡単な計算例を挙げます。10億個のパラメーターを持つモデルの重みを2バイトずつで保存すると、重みだけで約2 GB(10進法)を占めます。これはプログラム全体に必要な容量ではありません。作業用データ、実行環境のオーバーヘッド、余裕分も加える必要があります。量子化によって重みの容量は減らせますが、ほかの要素がすべてなくなるわけではありません。
「AIには何GBあれば十分」という共通の答えはありません。同じパソコンで小さなテキストモデルを動かせても、大規模な動画処理には対応できないことがあります。「Stable Diffusion」や「ローカルチャットボット」といった大まかな名称だけでなく、具体的なモデル、バージョン、設定、プログラムごとに要件を確認してください。
メモリ不足エラーが出たときの対処法
-
作業を保存し、GPUを使っているほかのプログラムを終了します。バックグラウンドで別の生成処理が動いていないか確認してください。ウィンドウを閉じただけでは、プロセスが終了していないことがあります。
-
複数の生成を同時に行わず、ひとつだけ実行します。テスト画像の解像度を下げるか、テキストモデルならコンテキストの長さを短くしてください。何が効果的だったか分かるよう、設定は一度にひとつずつ変更します。
-
プログラムが対応していれば、量子化、画像のタイル分割、計算の一部をRAMやCPUに移す方法を試してください。これらの方法にはそれぞれ制約があり、処理が大幅に遅くなることがあります。すべてのモデルがすべての方法に対応しているわけではありません。
-
同じタスクをもう一度実行し、最大使用量と処理時間を記録します。そのうえで、初めてハードウェアの変更が必要かどうかを判断してください。Diffusersのメモリ最適化に関するドキュメントでは、メモリ使用量と速度のトレードオフについて説明しています。
よくある誤解:VRAMが多いほど必ず速い
メモリが多いと、主に大きなタスクをメモリに収めやすくなります。しかし、それだけでグラフィックカードの処理速度が分かるわけではありません。演算性能、メモリ帯域幅、モデルへの対応状況、ソフトウェアも影響します。クラウド上で動く生成サービスを使っている場合、計算はそもそもご自身のカードで行われていない可能性があります。その場合、より高性能なGPUを購入しても、サービス提供者側の待ち時間は短縮されません。