Налаштування NVIDIA CUDA/cuDNN для GPU-обчислень
CUDA та cuDNN - фундамент GPU-прискорених обчислень для ML. Коректна установка та сумісність версій CUDA/cuDNN/драйвер/фреймворк — найчастіше джерело проблем при налаштуванні ML-оточення.
Матриця сумісності
Перед встановленням важливо звіритись з офіційною таблицею сумісності:
| CUDA | cuDNN | PyTorch | TensorFlow | Min Driver |
|---|---|---|---|---|
| 12.1 | 8.9 | 2.1.x | 2.14.x | 530.30 |
| 12.2 | 8.9 | 2.2.x | - | 535.54 |
| 11.8 | 8.7 | 2.0.x | 2.12.x | 520.61 |
Золоте правило: driver версія повинна підтримувати CUDA версію або вище (NVIDIA Driver ≥ потрібної CUDA версії).
Установка NVIDIA Driver
# Ubuntu 22.04
# Рекомендуемый способ — через ubuntu-drivers
sudo ubuntu-drivers autoinstall
# Или вручную
sudo apt install nvidia-driver-545
# Проверка
nvidia-smi
# Вывод: Driver Version: 545.xx.xx | CUDA Version: 12.3
Встановлення CUDA Toolkit
# Через runfile (рекомендуется для точного контроля версии)
wget https://developer.download.nvidia.com/compute/cuda/12.2.0/local_installers/cuda_12.2.0_535.54.03_linux.run
sudo sh cuda_12.2.0_535.54.03_linux.run --silent --toolkit --no-drm
# Добавить в ~/.bashrc
export PATH=/usr/local/cuda-12.2/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-12.2/lib64:$LD_LIBRARY_PATH
# Проверка
nvcc --version
Установка cuDNN
# Скачать cuDNN с developer.nvidia.com (требует аккаунт)
tar -xzvf cudnn-linux-x86_64-8.9.7.29_cuda12-archive.tar.xz
sudo cp cudnn-*-archive/include/cudnn*.h /usr/local/cuda/include
sudo cp -P cudnn-*-archive/lib/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*
sudo ldconfig
# Через apt (альтернативный способ)
sudo apt install libcudnn8=8.9.7.29-1+cuda12.2 libcudnn8-dev=8.9.7.29-1+cuda12.2
Установка через Conda (найпростіший спосіб)
# Conda управляет CUDA/cuDNN автоматически
conda create -n ml python=3.11
conda activate ml
conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia
# Проверка
python -c "import torch; print(torch.cuda.is_available(), torch.version.cuda)"
Перевірка коректності установки
import torch
print(f"PyTorch version: {torch.__version__}")
print(f"CUDA available: {torch.cuda.is_available()}")
print(f"CUDA version: {torch.version.cuda}")
print(f"cuDNN version: {torch.backends.cudnn.version()}")
print(f"GPU count: {torch.cuda.device_count()}")
print(f"GPU name: {torch.cuda.get_device_name(0)}")
# Тест производительности матричного умножения
x = torch.randn(8192, 8192, device='cuda', dtype=torch.float16)
y = torch.randn(8192, 8192, device='cuda', dtype=torch.float16)
torch.cuda.synchronize()
import time
t = time.time()
z = x @ y
torch.cuda.synchronize()
print(f"MatMul 8192x8192 (FP16): {time.time()-t:.3f}s")
# A100: ~0.05s, RTX 3090: ~0.12s
Типові проблеми
"CUDA error: no kernel image is available" — PyTorch скомпільований для іншої версії CUDA. Перевстановлення PyTorch для потрібної CUDA.
"libcuda.so not found" - LD_LIBRARY_PATH не налаштований. Додати /usr/local/cuda/lib64 у конфіг.
Низька продуктивність - перевірити nvidia-smi -q|grep "Performance State". GPU в режимі P8 замість P0: виконати nvidia-smi-pm 1` для Persistence Mode.







