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%の性能