GPU czy CPU dla AI: na czym polega różnica
Głębokie porównanie procesorów centralnych (CPU) i graficznych (GPU) w kontekście zadań uczenia maszynowego. Wyjaśnienie fundamentalnej różnicy między orientacją na opóźnienia (Latency-oriented) a przepustowość (Throughput-oriented), przepustowości magistrali pamięci (DDR5 vs HBM3e) oraz benchmarking w CLI.
1. Przegląd koncepcji i fundamentalna różnica
Aby zrozumieć, dlaczego akceleratory graficzne stały się główną walutą infrastrukturalną XXI wieku, należy przyjrzeć się fundamentalnej różnicy w filozofii projektowania układów scalonych:
- CPU (Central Processing Unit) – zoptymalizowany pod kątem minimalizacji opóźnień (Latency-Oriented): To niewielka grupa 8–32 niezwykle potężnych, uniwersalnych rdzeni z ogromnymi pamięciami podręcznymi L1/L2/L3 oraz złożonymi blokami predykcji skoków (Branch Predictor). CPU został stworzony do maksymalnie szybkiego wykonania jednej sekwencyjnej ścieżki instrukcji systemu operacyjnego.
- GPU (Graphics Processing Unit) – zoptymalizowany pod kątem maksymalnej przepustowości (Throughput-Oriented): To macierz 5 000–18 000 prostych, równoległych jednostek obliczeniowych (ALU), pogrupowanych w wieloprocesory strumieniowe (SM). Nie marnują one tranzystorów na predykcję skoków, lecz wykorzystują paradygmat SIMT (Single Instruction, Multiple Threads): ta sama operacja matematyczna (np. mnożenie wektorów) jest jednocześnie nakładana na tysiące strumieni danych.
Model mentalny: CPU to szybki kurier w sportowym aucie, który natychmiast dostarczy jedną pilną paczkę. GPU to gigantyczny pociąg towarowy, który przewozi 10 000 ton żwiru w jednym przejeździe.
┌─────────────────────────────────────────────────────────────┐
│ PORÓWNANIE ARCHITEKTUR │
├─────────────────────────────────────────────────────────────┤
│ 1. CPU: Kilka szybkich rdzeni + Ogromna pamięć podręczna L3 │
│ [ RDZEŃ 1 ] [ RDZEŃ 2 ] [ RDZEŃ 3 ] [ RDZEŃ 4 ] │
│ └───────────────── PAMIĘĆ PODRĘCZNA L3 (64MB) ───────────┘│
│ Magistrala pamięci: DDR5 (60 - 90 GB/s) │
├─────────────────────────────────────────────────────────────┤
│ 2. GPU: Tysiące prostych rdzeni + Ultra-szeroka magistrala │
│ pamięci │
│ [SM][SM][SM][SM][SM][SM][SM][SM][SM][SM][SM][SM] ... │
│ (do 18 000 rdzeni CUDA + Tensor Cores) │
│ Magistrala pamięci: GDDR6X / HBM3e (1 000 - 3 350 GB/s) │
└─────────────────────────────────────────────────────────────┘
2. Praktyczny benchmarking: weryfikacja przyspieszenia przez CLI
Możesz samodzielnie zmierzyć szybkość mnożenia macierzy na CPU versus GPU za pomocą prostego jednowierszowego testu w Pythonie:
# Тест швидкості множення матриць 8192x8192 на доступних пристроях
python3 -c "
import torch, time
n = 8192
# 1. Тест на CPU
a_cpu, b_cpu = torch.randn(n, n), torch.randn(n, n)
t0 = time.time()
torch.mm(a_cpu, b_cpu)
print(f'CPU Time: {time.time() - t0:.3f} s')
# 2. Тест на GPU (якщо є CUDA або Apple MPS)
device = 'cuda' if torch.cuda.is_available() else ('mps' if torch.backends.mps.is_available() else None)
if device:
a_gpu, b_gpu = a_cpu.to(device), b_cpu.to(device)
torch.mm(a_gpu, b_gpu) # warmup
t0 = time.time()
torch.mm(a_gpu, b_gpu)
if device == 'cuda': torch.cuda.synchronize()
print(f'GPU ({device}) Time: {time.time() - t0:.4f} s')
"
Na nowoczesnym systemie GPU kończy obliczenia w 0,015 sekundy, podczas gdy 16-rdzeniowy flagowy CPU zużywa na tę samą operację ponad 0,8–1,2 sekundy (różnica rzędu 50–80 razy!).
3. Dlaczego inferencja LLM jest ograniczona pamięcią (Memory-Bound)
Podczas fazy generowania tekstu model działa zgodnie z regułą: aby wygenerować jeden token, musi odczytać z pamięci wszystkie wagi modelu raz:
- Jeśli model Llama 3.1 8B w formacie 4-bit zajmuje 5 GB:
- Na systemie z magistralą DDR5 (prędkość odczytu 60 GB/s):
Teoretyczny limit prędkości: $\frac{60 \text{ GB/s}}{5 \text{ GB}} \approx 12 \text{ tokenów/sek}$. - Na karcie graficznej RTX 4090 (przepustowość pamięci 1 000 GB/s):
Teoretyczny limit prędkości: $\frac{1000 \text{ GB/s}}{5 \text{ GB}} \approx 200 \text{ tokenów/sek}$.
- Na systemie z magistralą DDR5 (prędkość odczytu 60 GB/s):
Dlatego właśnie karta graficzna pokonuje procesor w generatywnym AI nie tyle dzięki częstotliwości taktowania czy liczbie rdzeni, co dzięki kolosalnej prędkości transferu danych między chipem pamięci a jednostkami obliczeniowymi.
4. Podsumowanie inżynierskie
- Do orkiestracji agentów, parsowania kodu, routingu żądań HTTP oraz interakcji z bazami danych procesor (CPU) pozostaje absolutnie niezastąpionym gospodarzem systemu.
- Do obliczania wag macierzy sieci neuronowych, wektoryzacji embeddingów oraz generowania treści GPU jest bezkonkurencyjne.
FAQ: GPU czy CPU dla AI: na czym polega różnica
Powiązane pojęcia
Pamięć wideo (VRAM) dla AI
Pamięć wideo procesora graficznego (Video RAM), do której ładowane są wagi sieci neuronowej oraz okno kontekstowe. Jest to kluczowa wąska gardło sprzętowe: jeśli model nie mieści się w VRAM, albo nie uruchomi się, albo będzie działał dziesiątki razy wolniej na zwykłym procesorze.
Apple Silicon dla AI (seria M i Unified Memory)
Architektura procesorów Apple (M1/M2/M3/M4) z zunifikowaną pamięcią (Unified Memory Architecture). Pozwala na udostępnienie całej puli pamięci RAM (do 128–192 GB) jako VRAM dla układu graficznego, umożliwiając uruchamianie ogromnych sieci neuronowych bez konieczności korzystania z serwerowych kart graficznych.
Procesor neuronowy (NPU)
Dedykowany mikroczip sprzętowy (Neural Processing Unit), zaprojektowany wyłącznie do uruchamiania sztucznych sieci neuronowych przy minimalnym zużyciu energii. Odpowiada za rozmywanie tła podczas wideorozmów, ulepszanie zdjęć oraz lokalne podpowiedzi AI bez nadmiernego obciążania baterii.
vLLM (Wysokowydajny silnik inferencyjny)
Wiodący open-source'owy serwer i silnik inferencyjny dla modeli LLM, który zrewolucjonizował przepustowość dzięki algorytmowi wirtualizacji pamięci PagedAttention oraz ciągłemu batchowaniu.