GPU Memory
概要
GPU Memory
(GPU専用メモリ)は、VRAM
とも呼ばれ、ローカルLLM運用において最も重要なハードウェア要素です。モデルサイズ、処理速度、同時実行可能なタスク数を決定する主要な制約要因となります。
容量だけでなく、メモリ帯域幅、レイテンシ、効率的な使用法がAI推論性能に直結します。
GPU別メモリ仕様
NVIDIA GeForce RTX
- RTX 4090: 24GB GDDR6X、1008 GB/s
- RTX 4080: 16GB GDDR6X、717 GB/s
- RTX 3090: 24GB GDDR6X、936 GB/s
- RTX 3080: 10GB GDDR6X、760 GB/s
AMD Radeon RX
- RX 7900 XTX: 24GB GDDR6、960 GB/s
- RX 7900 XT: 20GB GDDR6、800 GB/s
- RX 6900 XT: 16GB GDDR6、512 GB/s
メモリ容量と LLM 対応
8GB VRAM
- 適用モデル: 7B量子化モデル
- 例: Llama 2 7B (INT4), Mistral 7B (INT8)
- 制限: バッチサイズ1、短いコンテキスト
16GB VRAM
- 適用モデル: 7B FP16、13B 量子化
- 例: Llama 2 13B (INT8), Code Llama 7B (FP16)
- 実用性: 中規模開発に適合
24GB VRAM
- 適用モデル: 13B FP16、70B 量子化
- 例: Llama 2 70B (INT4), Code Llama 34B (FP16)
- 実用性: プロフェッショナル用途
メモリ使用量計算
基本的な計算式
# メモリ使用量 = パラメータ数 × 精度(bytes) + オーバーヘッド
# Llama 2 7B の例
パラメータ数: 7B
FP32: 7B × 4 bytes = 28GB
FP16: 7B × 2 bytes = 14GB
INT8: 7B × 1 byte = 7GB
INT4: 7B × 0.5 bytes = 3.5GB
# 実際の使用量(オーバーヘッド+20%)
FP16実際: 14GB × 1.2 = 16.8GB
INT8実際: 7GB × 1.2 = 8.4GB
コンテキスト長の影響
- 2K tokens: 基本メモリ使用量
- 4K tokens: +10-15% メモリ増加
- 8K tokens: +20-30% メモリ増加
- 16K tokens: +40-60% メモリ増加
メモリ最適化技術
量子化によるメモリ削減
# bitsandbytesでのINT8量子化
from transformers import BitsAndBytesConfig
import torch
quantization_config = BitsAndBytesConfig(
load_in_8bit=True,
llm_int8_threshold=6.0,
llm_int8_enable_fp32_cpu_offload=False
)
model = AutoModelForCausalLM.from_pretrained(
"meta-llama/Llama-2-13b-chat-hf",
quantization_config=quantization_config,
device_map="auto",
torch_dtype=torch.float16
)
メモリ効率的な推論
- Gradient Checkpointing: メモリ使用量削減
- Model Parallel: 大規模モデル分散
- CPU Offload: 一部処理をCPUに
- Flash Attention: メモリ効率的アテンション
メモリ監視とデバッグ
NVIDIA GPU メモリ監視
# コマンドライン監視
nvidia-smi
watch -n 1 nvidia-smi # 1秒間隔更新
# Python内での監視
import torch
def print_gpu_memory():
if torch.cuda.is_available():
for i in range(torch.cuda.device_count()):
print(f"GPU {i}:")
print(f" Allocated: {torch.cuda.memory_allocated(i) / 1024**3:.2f} GB")
print(f" Cached: {torch.cuda.memory_reserved(i) / 1024**3:.2f} GB")
print(f" Max allocated: {torch.cuda.max_memory_allocated(i) / 1024**3:.2f} GB")
print_gpu_memory()
メモリ不足対策
- バッチサイズ削減: 1に設定
- モデル量子化: INT8/INT4使用
- コンテキスト長制限: 2K以下に制限
- CPU オフロード: 部分的CPU処理
用途別推奨構成
個人・学習用途
- 8-12GB: RTX 4060 Ti、軽量モデル中心
- 16GB: RTX 4060 Ti 16GB、バランス重視
- 24GB: RTX 3090(中古)、コスパ重視
プロフェッショナル用途
- 24GB: RTX 4090、最高性能
- 48GB: RTX 6000 Ada、プロ向け
- 80GB+: A100、データセンター
将来的な展望
技術トレンド
- HBM3メモリ: より高帯域幅
- 大容量化: 48GB、128GB級の普及
- 効率的圧縮: 動的量子化の進歩
- 統合メモリ: CPU-GPU共有メモリ
選択指針
- 現在: 24GBが実用的な上限
- 2025年: 32-48GBが主流予測
- 長期投資: 大容量VRAMを優先