CUDA Cores

概要

CUDA Cores(クーダコア)は、NVIDIA GPU内の並列処理ユニットです。多数のCUDA Coreが協調して動作することで、ローカルLLM(大規模言語モデル)の推論処理に必要な大量の行列演算を高速に実行します。

一つのGPUに数千から数万のCUDA Coreが搭載されており、これらが同時に動作することでAI計算における圧倒的な並列処理能力を実現します。

CUDA Coreの仕組み

並列アーキテクチャ

  • SIMT実行: Single Instruction, Multiple Threads(単一命令、複数スレッド)
  • ワープ単位実行: 32スレッドを1グループとして同期実行
  • 階層構造: SMM(Streaming Multiprocessor)内に複数Core配置
  • 共有メモリ: 高速アクセス可能なローカルメモリ

実行単位

  • ALU: 算術論理演算ユニット
  • FPU: 浮動小数点演算ユニット
  • レジスタ: 高速データ一時保存
  • 制御ユニット: 命令デコード・実行制御

主要GPU別 CUDA Core数

RTXシリーズ(Ada Lovelace)

  • RTX 4090: 16,384 CUDA Cores
  • RTX 4080: 9,728 CUDA Cores
  • RTX 4070 Ti: 7,680 CUDA Cores
  • RTX 4070: 5,888 CUDA Cores

RTX 30シリーズ(Ampere)

  • RTX 3090: 10,496 CUDA Cores
  • RTX 3080: 8,704 CUDA Cores
  • RTX 3070: 5,888 CUDA Cores
  • RTX 3060: 3,584 CUDA Cores

ローカルLLMでの役割

行列演算処理

LLMの推論処理で重要な演算を並列実行:

  • 行列積演算: 重み行列とアクティベーションの計算
  • アテンション機構: Query・Key・Valueの並列計算
  • フィードフォワード: 全結合層の高速処理
  • エンベディング: トークンベクトル変換

性能への影響

  • コア数増加: 並列度向上→推論速度向上
  • メモリ帯域: VRAM速度がボトルネックになる場合あり
  • 利用効率: バッチサイズで並列度を調整

パフォーマンス最適化

バッチサイズ調整

# CUDA Coreを効率的に活用するバッチサイズ設定
import torch

# GPUの並列度に応じたバッチサイズ
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')

# RTX 4090 (16384 Cores) の場合
batch_size = 32  # 高い並列度で複数シーケンス同時処理

# RTX 4060 (3072 Cores) の場合  
batch_size = 8   # コア数に応じて調整

inputs = torch.randn(batch_size, 512).to(device)

CUDA最適化技術

  • Tensor Parallel: 大きな行列を分割して並列計算
  • Mixed Precision: FP16/FP32混合で高速化
  • CUDA Streams: 非同期実行でレイテンシ隠蔽
  • Memory Coalescing: メモリアクセス最適化

Tensor Coresとの関係

役割分担

  • CUDA Cores: 汎用計算、FP32精度処理
  • Tensor Cores: AI特化、FP16/BF16高速行列演算
  • RT Cores: レイトレーシング(AI推論では未使用)

使い分け

  • 精度重視: CUDA Cores(FP32)
  • 速度重視: Tensor Cores(FP16)+ CUDA Cores
  • 量子化モデル: Tensor Cores(INT8)メイン

実用的な計算例

Llama 2 7Bモデルでの処理

  • パラメータ数: 約70億個
  • 主要演算: 行列積(70億×512次元)
  • RTX 4090使用時: 16,384コアで並列実行
  • 推論速度: 約80-100 tokens/秒

コア数と性能の関係

  • RTX 4090(16,384コア): 基準性能 100%
  • RTX 4080(9,728コア): 約60-70%の性能
  • RTX 4070(5,888コア): 約35-45%の性能

関連用語