GPU чи CPU для ШІ: у чому різниця(GPU проти CPU: архітектура SIMD/SIMT, пропускна здатність пам'яті та чому ШІ обрав відеокарти)
Глибоке порівняння центрального (CPU) та графічного процесорів (GPU) для задач машинного навчання. Пояснення фундаментальної різниці між затримкою (Latency-oriented) та пропускною здатністю (Throughput-oriented), пропускної здатності шини пам'яті (DDR5 vs HBM3e) та бенчмаркінг у CLI.
1. Огляд концепції та фундаментальна різниця
Щоб зрозуміти, чому графічні прискорювачі стали головною інфраструктурною валютою 21-го століття, необхідно поглянути на фундаментальну різницю філософій дизайну кремнієвих кристалів:
- CPU (Central Processing Unit) — оптимізований під мінімізацію затримки (Latency-Oriented): Це невеликий загін із 8–32 надзвичайно потужних універсальних ядер з величезними кешами L1/L2/L3 та складними блоками передбачення переходів (Branch Predictor). CPU створений для того, щоб максимально швидко виконати одну послідовну нитку заплутаних інструкцій операційної системи.
- GPU (Graphics Processing Unit) — оптимізований під максимальну пропускну здатність (Throughput-Oriented): Це масив із 5 000–18 000 простих паралельних обчислювальних ядер (ALU), об'єднаних у потокові мультипроцесори (SM). Вони не витрачають транзистори на передбачення переходів, а використовують парадигму SIMT (Single Instruction, Multiple Threads): одна й та сама математична операція (наприклад, множення векторів) одночасно накладається на тисячі потоків даних.
Ментальна модель: CPU — це швидкісний кур'єр на спорткарі, який миттєво привезе один терміновий пакет. GPU — це гігантський вантажний потяг, який везе 10 000 тонн щебеню за один рейс.
┌─────────────────────────────────────────────────────────────┐
│ ПОРІВНЯННЯ АРХІТЕКТУР │
├─────────────────────────────────────────────────────────────┤
│ 1. CPU: Кілька швидких ядер + Гігантський L3 Cache │
│ [ ЯДРО 1 ] [ ЯДРО 2 ] [ ЯДРО 3 ] [ ЯДРО 4 ] │
│ └───────────────── L3 CACHE (64MB) ─────────────────┘ │
│ Шина пам'яті: DDR5 (60 - 90 GB/s) │
├─────────────────────────────────────────────────────────────┤
│ 2. GPU: Тисячі простих ядер + Надширока шина пам'яті │
│ [SM][SM][SM][SM][SM][SM][SM][SM][SM][SM][SM][SM] ... │
│ (до 18 000 ядер CUDA + Tensor Cores) │
│ Шина пам'яті: GDDR6X / HBM3e (1 000 - 3 350 GB/s) │
└─────────────────────────────────────────────────────────────┘
2. Практичний бенчмаркінг: перевірка прискорення через CLI
Ви можете самостійно виміряти швидкість множення матриць на CPU проти GPU за допомогою простого однорядкового тесту на Python:
# Тест швидкості множення матриць 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')
"
На сучасній системі GPU завершує розрахунок за 0.015 секунди, тоді як 16-ядерний флагманський CPU витрачає на ту саму операцію понад 0.8–1.2 секунди (різниця у 50–80 разів!).
3. Чому інференс LLM впирається саме в пам'ять (Memory-Bound)
Під час фази генерації тексту модель працює за правилом: щоб вивести один токен, необхідно прочитати з пам'яті всі ваги моделі один раз:
- Якщо модель Llama 3.1 8B у форматі 4-біт займає 5 ГБ:
- На системі з шиною DDR5 (швидкість читання 60 ГБ/с):
Теоретичний ліміт швидкості: $\frac{60 \text{ ГБ/с}}{5 \text{ ГБ}} \approx 12 \text{ токенів/сек}$. - На відеокарті RTX 4090 (швидкість пам'яті 1 000 ГБ/с):
Теоретичний ліміт швидкості: $\frac{1000 \text{ ГБ/с}}{5 \text{ ГБ}} \approx 200 \text{ токенів/сек}$.
- На системі з шиною DDR5 (швидкість читання 60 ГБ/с):
Саме тому відеокарта перемагає процесор у генеративному ШІ не стільки за рахунок частоти чи ядер, скільки за рахунок колосальної швидкості передачі даних між чипом пам'яті та обчислювальними блоками.
4. Підсумковий інженерний висновок
- Для оркестрації агентів, парсингу коду, маршрутизації HTTP-запитів та взаємодії з базами даних процесор (CPU) залишається абсолютним незамінним господарем системи.
- Для обчислення матриць вагів нейромереж, векторизації ембеддінгів та генерації медіа графічний прискорювач (GPU) з високою пропускною здатністю пам'яті (VRAM) є безальтернативним стандартом.
FAQ: GPU чи CPU для ШІ: у чому різниця
Пов'язані терміни
Відеопам'ять (VRAM) для ШІ
Відеопам'ять графічного процесора (Video RAM), у яку завантажуються ваги нейромережі та контекстне вікно. Головне апаратне вузьке місце: якщо модель не поміщається у VRAM, вона або не запуститься, або працюватиме в десятки разів повільніше на звичайному процесорі.
Apple Silicon для ШІ (M-серія та Unified Memory)
Архітектура процесорів Apple (M1/M2/M3/M4) з об'єднаною пам'яттю (Unified Memory Architecture). Дозволяє всьому масиву оперативної пам'яті (аж до 128-192 ГБ) бути доступним графічному чипу як VRAM, уможливлюючи запуск гігантських нейромереж без серверних відеокарт.
Нейронний процесор (NPU)
Спеціалізований апаратний мікрочип (Neural Processing Unit), спроєктований виключно для виконання штучних нейронних мереж із мінімальним енергоспоживанням. Відповідає за розмиття фону у відеодзвінках, покращення фотографій та локальні підказки AI без розряджання батареї.
vLLM (Високопродуктивний рушій інференсу)
Провідний відкритий серверний рушій інференсу та обслуговування LLM, що здійснив революцію у пропускній здатності завдяки алгоритму віртуалізації пам'яті PagedAttention та неперервному батчингу.