NVIDIA + CUDA на Ubuntu: без боли и магии

Опубликовано: 13 Май 2026
на канале: Mindset
271
7

NVIDIA драйверы, CUDA и Docker на Ubuntu — как всё работает и как это поставить без боли

В этом видео мы наглядно разбираем, из чего состоит «видеостек» под Linux: ядро и системные вызовы, модули драйвера NVIDIA, пользовательские библиотеки (OpenGL/Vulkan/CUDA) и CUDA Toolkit. Затем пошагово ставим драйверы, настраиваем CUDA и подключаем GPU к контейнерам.

*Для кого:* разработчики ML/DS/MLOps, инженеры платформ, DevOps/SRE, геймеры и 3D‑графика на Linux.

Что внутри

Короткая теория: ядро, драйверы и системные вызовы — кто с кем говорит и почему.
Из чего состоит драйвер NVIDIA: модуль ядра + юзерспейс‑библиотеки.
Что такое CUDA Toolkit: компилятор `nvcc`, рантайм, драйверные библиотеки, наборы для BLAS/линала и ИИ.
Как выбрать и поставить драйвер на Ubuntu: `ubuntu-drivers` vs репозиторий NVIDIA vs runfile.
DKMS и обновления ядра: как не потерять модуль после апдейта.
CUDA и совместимость версий.
NVIDIA Container Toolkit: как дать контейнеру доступ к GPU без боли.
Типовые ошибки и их диагностика.

Быстрый старт (шпаргалка)

```bash
1) Определить GPU
lspci | egrep -i "vga|3d|nvidia"

2) Подобрать и поставить драйвер из репозиториев Ubuntu
ubuntu-drivers devices
sudo ubuntu-drivers autoinstall

3) Проверить установку
nvidia-smi

4) Установить CUDA Toolkit (из репозитория NVIDIA или Ubuntu)
Пример для репозитория NVIDIA (версии/ключи см. оф. инструкции)
sudo apt-get install cuda-toolkit-12-3

5) Проверить nvcc
nvcc --version

6) NVIDIA Container Toolkit
Установить пакет, перезапустить docker и проверить:
sudo systemctl restart docker

docker run --rm --gpus all nvidia/cuda:12.3.2-runtime-ubuntu22.04 nvidia-smi
```

Путеводитель по установке

*Метод 1 — Ubuntu Drivers (рекомендуем большинству):*

Плюсы: интеграция с ядром/DKMS, автообновления, минимальные риски.
Минусы: не всегда самая свежая версия.

*Метод 2 — Официальный репозиторий NVIDIA:*

Плюсы: новее, чем в Ubuntu.
Минусы: больше ручной поддержки, важно следить за совместимостью.

*Метод 3 — Runfile (только для экспертов/особых кейсов):*

Плюсы: полный контроль.
Минусы: легко «переехать» системные пакеты, нужно вручную пересобирать модуль при каждом обновлении ядра.

Совместимость версий (матрица на салфетке)

*GPU ↔ драйвер:* новые GPU требуют минимум определённой версии драйвера.
*Драйвер ↔ CUDA:* новая CUDA может требовать новый драйвер.
*CUDA ↔ фреймворки:* релизы PyTorch/TensorFlow завязаны на конкретные CUDA/CuDNN.
Итог: начните с фреймворка (какую версию вам нужна?), затем подберите подходящую CUDA и минимальный драйвер под ваш GPU.

NVIDIA Container Toolkit (Docker)

Контейнер получает доступ к GPU через рантайм NVIDIA.
Базовые образы: `nvidia/cuda:версия-runtime-ubuntu22.04` и `…-devel-…` для сборки.
Девайсы и библиотеки пробрасываются прозрачно, производительность близка к нативной.

Траблшутинг

`Secure Boot` включён → модуль не грузится: временно отключите или подпишите модуль.
DKMS не пересобрал модуль после обновления ядра → проверьте `dkms status` и логи `dmesg`.
«Черный экран» после установки: откатитесь в `recovery`, удалите пакеты драйвера, переустановите стабильную версию.
Смешение источников (Ubuntu + runfile) → конфликты: придерживайтесь одного метода.
`nvidia-smi` не видит GPU в контейнере → проверьте `--gpus all`, версию драйвера на хосте, перезапуск Docker.

Мини‑чек‑лист перед установкой

Узнайте точную модель GPU и версию ядра (`uname -r`).
Решите, какой фреймворк/версия вам нужна (PyTorch/TF) → от этого зависит CUDA.
Выберите метод установки (мы за Ubuntu Drivers или оф. репозиторий).
Сделайте точку восстановления/снимок системы (если возможно).

Если нужен аудит вашего GPU‑стека или помощь с продакшен‑деплоем — пишите нам. Мы строим устойчивые ML‑платформы и продакшен‑пайплайны под вычислительные нагрузки.