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を優先

関連用語