CUDA
CUDA — платформа NVIDIA для параллельных вычислений на GPU
CUDA (Compute Unified Device Architecture) — платформа и язык параллельных вычислений от NVIDIA. Это слой, через который PyTorch, TensorFlow, Stable Diffusion и ComfyUI обращаются к видеокарте. CUDA даёт NVIDIA монополию на AI: альтернативы (ROCm у AMD, MPS у Apple, Vulkan) работают, но хуже. Когда говорят «модель работает на GPU» — это почти всегда означает «работает через CUDA на NVIDIA».
Коротко
Коротко. CUDA — это интерфейс, через который AI-программы говорят с видеокартой NVIDIA. PyTorch и TensorFlow — это всего лишь обёртки над CUDA-вызовами. Стандарт с 2007 года, не имеет полноценных конкурентов. AMD и Apple предлагают альтернативы (ROCm, MPS), но 95% AI-разработки идёт на CUDA. Поэтому для AI-задач выбирают NVIDIA: совместимость, оптимизации, документация.
Что это такое
Декабрь 2022-го. Hugging Face публикует Stable Diffusion. Инструкция: «pip install diffusers torch, запустить скрипт». Владельцы NVIDIA-карт ставят и через 30 секунд получают первую картинку. Владельцы AMD-карт три часа собирают ROCm, переключаются между Linux-дистрибутивами, патчат библиотеки. Кто-то справляется, кто-то нет.
Это и есть CUDA-монополия. Не потому что у NVIDIA лучшее железо (у AMD сравнимое), а потому что весь AI-софт по умолчанию написан под CUDA.
CUDA — это набор инструментов и API:
- Драйвер NVIDIA — низкий уровень, ставится в систему.
- CUDA Toolkit — компилятор
nvcc, библиотеки cuBLAS, cuDNN, cuFFT. - CUDA Runtime API — то, что вызывают PyTorch и TensorFlow.
- CUDA-язык — расширение C++ для написания GPU-кода (kernels).
Когда вы пишете model.cuda() в PyTorch — за кулисами это: проверка драйвера, выделение VRAM, копирование тензора через PCIe, постановка задачи в очередь CUDA-потоков. Всё это происходит за миллисекунды и спрятано за одной строкой.
История начинается в 2006-м. NVIDIA выпускает CUDA — первый язык, на котором GPU можно программировать как обычный процессор, а не только для рендеринга. Никто этого не оценил кроме физиков и биологов. Через 7 лет AlexNet выиграл ImageNet, написанный на CUDA. Через 14 лет — CUDA-монополия в индустрии стоимостью триллион долларов.
Как это работает
Архитектура CUDA-программы:
- Host (CPU) — обычный код на Python/C++.
- Device (GPU) — параллельный код, который выполняется на тысячах ядер одновременно.
- Память. Host и Device имеют свою память. Данные копируются через PCIe явно или скрыто.
- Kernels — функции, которые запускаются на GPU параллельно. У каждого вызова — индекс потока, по которому он знает, какую часть данных обрабатывать.
Когда PyTorch выполняет c = a + b, где a и b лежат в VRAM:
- Python через PyTorch отправляет команду в CUDA Runtime.
- CUDA ставит kernel
addв очередь GPU. - GPU запускает kernel на 1024 потоках параллельно — каждый поток обрабатывает свои несколько чисел.
- Результат остаётся в VRAM, готовый к следующей операции.
cuDNN и cuBLAS — оптимизированные библиотеки от NVIDIA, написанные вручную на CUDA для типовых операций: свёртка, перемножение матриц, attention. PyTorch не пишет всё с нуля — он вызывает функции этих библиотек, и за счёт этого работает быстро.
Пример на практике
Дизайнер устанавливает Stable Diffusion на RTX 4070. Ставит Python, делает pip install torch. Внутри установщика происходит вот что:
Installing torch (2.5.1+cu124)
- downloading torch-2.5.1+cu124-cp310-win_amd64.whl (2.3 GB)
- includes: CUDA 12.4 runtime, cuDNN 9.1, cuBLAS
Скачиваются 2,3 ГБ — большую часть составляют сами CUDA-библиотеки, потому что NVIDIA лицензирует их так, что PyTorch распространяет их вместе с собой. Это удобно: не нужно отдельно ставить CUDA Toolkit, всё уже внутри pip-пакета.
Запускает ComfyUI:
Total VRAM 12282 MB, total RAM 32687 MB
xformers version: 0.0.28
Set vram state to: NORMAL_VRAM
Device: cuda:0 NVIDIA GeForce RTX 4070
cuda:0 — первая (и единственная) видеокарта в системе. Если бы их было две, появилась бы и cuda:1. ComfyUI автоматически выбирает первую, можно явно указать через --cuda-device 1.
Тот же ComfyUI на Mac M2 Pro покажет другое:
Device: mps NVIDIA не обнаружено, используется Metal Performance Shaders
mps — Apple-аналог CUDA. Работает медленнее в 3–5 раз, плюс не все ноды совместимы.
С чем часто путают
- CUDA и GPU — GPU это железо, CUDA — программный слой для общения с ним. На AMD-GPU CUDA нет, есть ROCm.
- CUDA Cores и Tensor Cores — Cores это базовые вычислительные блоки. Tensor Cores — специализированные под матричные операции и
FP16/BF16/FP8-форматы. Оба компонента общаются через CUDA. - CUDA Toolkit и CUDA Driver — драйвер ставится в систему (Windows Update / NVIDIA installer), нужен любому AI. Toolkit — для разработчиков, для запуска моделей сам по себе не обязателен (PyTorch носит свой).
- CUDA и OpenCL — OpenCL это открытый стандарт параллельных вычислений, конкурент CUDA. Работает на всех GPU, но в AI используется редко из-за худших оптимизаций.
- CUDA и DirectML — DirectML это Windows-API от Microsoft для AI на любых GPU. Альтернатива CUDA для AMD/Intel-карт под Windows.
Частые ошибки и заблуждения
- «CUDA нужно отдельно скачивать перед установкой PyTorch». Нет. PyTorch 2.x распространяет CUDA-runtime внутри себя. Нужен только NVIDIA-драйвер.
- «CUDA — это язык программирования». Не только. Это и язык (расширение C++), и библиотеки, и набор API. Большинство AI-разработчиков с CUDA-кодом напрямую не работают.
- «Чем новее CUDA, тем быстрее». Не обязательно. Прирост скорости между версиями обычно 1–5%. Куда важнее версия драйвера и cuDNN.
- «CUDA-программу можно запустить на AMD». В чистом виде — нет. Есть проект ZLUDA, который транслирует CUDA-вызовы в HIP для AMD; работает, но непредсказуемо.
- «ROCm и CUDA — это одно и то же». ROCm от AMD пытается быть «CUDA-совместимым», но на практике многие вещи требуют отдельных портов. Stable Diffusion на ROCm работает, но через дополнительные обёртки.
Связанные термины
- GPU — само железо, для которого CUDA служит интерфейсом.
- VRAM — память видеокарты, управляемая через CUDA.
- cuDNN — оптимизированная библиотека CUDA для нейросетей.
- PyTorch / TensorFlow — фреймворки, работающие поверх CUDA.
- ROCm — альтернатива CUDA от AMD.
- MPS (Metal Performance Shaders) — альтернатива CUDA от Apple.
- Tensor Cores — специализированные блоки GPU, доступные через CUDA.
Частые вопросы
Нужно ли отдельно устанавливать CUDA Toolkit перед PyTorch?
В большинстве случаев нет. pip install torch тянет нужные CUDA-библиотеки. Toolkit ставят только разработчики, которые компилируют свои CUDA-kernels.
Какая версия CUDA нужна для Stable Diffusion в 2026? CUDA 12.1–12.6, в зависимости от версии PyTorch. ComfyUI и AUTOMATIC1111 обычно указывают совместимые сборки.
Можно ли запустить CUDA-программу на CPU?
Нет. CUDA — это интерфейс к GPU. Без видеокарты программа упадёт с CUDA driver not found. Альтернатива — CPU-инференс через ONNX или llama.cpp.
Почему AMD не делает свой CUDA? Делает — это ROCm. Но он стартовал на 10 лет позже, поддерживает меньше карт, хуже совместим с фреймворками. К 2026-му ROCm прогрессирует, но всё ещё отстаёт.
Что такое compute capability?
Версия CUDA-архитектуры конкретной видеокарты. RTX 4090 — 8.9, H100 — 9.0, RTX 50-серии — 10.0. Чем выше, тем больше новых фич (FP8, transformer engine).
Можно ли использовать CUDA через WSL2? Да. NVIDIA выпустила специальный драйвер для WSL2 в 2020-м. Многие AI-разработчики работают именно так: Windows для удобства, Linux-окружение для CUDA-совместимости.
Главное
CUDA — это слой, который превратил видеокарты NVIDIA в стандарт AI-вычислений. Это и API, и язык, и набор библиотек. PyTorch, TensorFlow, ComfyUI, llama.cpp — всё работает через CUDA на NVIDIA-карте. Альтернативы (ROCm, MPS, DirectML) существуют, но проигрывают по совместимости и оптимизациям. Когда выбираете GPU для AI, выбираете не просто железо, а доступ к экосистеме CUDA — отсюда и доминирование NVIDIA на рынке. Драйвер ставится один раз, дальше всё работает через pip install torch без дополнительных шагов.